diff --git a/.gitignore b/.gitignore index fb4653e..479eebb 100644 --- a/.gitignore +++ b/.gitignore @@ -33,9 +33,11 @@ 9_Firmware/9_2_FPGA/tb/cosim/compare_doppler_*.csv 9_Firmware/9_2_FPGA/tb/cosim/rtl_multiseg_*.csv 9_Firmware/9_2_FPGA/tb/cosim/rx_final_doppler_out.csv +9_Firmware/9_2_FPGA/tb/cosim/rtl_mf_*.csv +9_Firmware/9_2_FPGA/tb/cosim/compare_mf_*.csv # Golden reference outputs (regenerated by testbenches) -9_Firmware/9_2_FPGA/tb/golden/golden_doppler.mem +9_Firmware/9_2_FPGA/tb/golden/ # macOS .DS_Store diff --git a/9_Firmware/9_2_FPGA/run_regression.sh b/9_Firmware/9_2_FPGA/run_regression.sh index 43aac1d..5084128 100755 --- a/9_Firmware/9_2_FPGA/run_regression.sh +++ b/9_Firmware/9_2_FPGA/run_regression.sh @@ -253,6 +253,68 @@ run_lint_static() { fi } +# --------------------------------------------------------------------------- +# Helper: compile, run, and compare a matched-filter co-sim scenario +# run_mf_cosim +# --------------------------------------------------------------------------- +run_mf_cosim() { + local name="$1" + local define="$2" + local vvp="tb/tb_mf_cosim_${name}.vvp" + local scenario_lower="$name" + + printf " %-45s " "MF Co-Sim ($name)" + + # Compile — build command as string to handle optional define + local cmd="iverilog -g2001 -DSIMULATION" + if [[ -n "$define" ]]; then + cmd="$cmd $define" + fi + cmd="$cmd -o $vvp tb/tb_mf_cosim.v matched_filter_processing_chain.v fft_engine.v chirp_memory_loader_param.v" + + if ! eval "$cmd" 2>/tmp/iverilog_err_$$; then + echo -e "${RED}COMPILE FAIL${NC}" + ERRORS="$ERRORS\n MF Co-Sim ($name): compile error ($(head -1 /tmp/iverilog_err_$$))" + FAIL=$((FAIL + 1)) + return + fi + + # Run TB + local output + output=$(timeout 120 vvp "$vvp" 2>&1) || true + rm -f "$vvp" + + # Check TB internal pass/fail + local tb_fail + tb_fail=$(echo "$output" | grep -Ec '^\[FAIL' || true) + if [[ "$tb_fail" -gt 0 ]]; then + echo -e "${RED}FAIL${NC} (TB internal failure)" + ERRORS="$ERRORS\n MF Co-Sim ($name): TB internal failure" + FAIL=$((FAIL + 1)) + return + fi + + # Run Python compare + if command -v python3 >/dev/null 2>&1; then + local compare_out + local compare_rc=0 + compare_out=$(python3 tb/cosim/compare_mf.py "$scenario_lower" 2>&1) || compare_rc=$? + if [[ "$compare_rc" -ne 0 ]]; then + echo -e "${RED}FAIL${NC} (compare_mf.py mismatch)" + ERRORS="$ERRORS\n MF Co-Sim ($name): Python compare failed" + FAIL=$((FAIL + 1)) + return + fi + else + echo -e "${YELLOW}SKIP${NC} (RTL passed, python3 not found — compare skipped)" + SKIP=$((SKIP + 1)) + return + fi + + echo -e "${GREEN}PASS${NC} (RTL + Python compare)" + PASS=$((PASS + 1)) +} + # --------------------------------------------------------------------------- # Helper: compile and run a single testbench # run_test @@ -416,30 +478,14 @@ run_test "Full-Chain Real-Data (decim→Doppler, exact match)" \ doppler_processor.v xfft_16.v fft_engine.v if [[ "$QUICK" -eq 0 ]]; then - # Golden generate - run_test "Receiver (golden generate)" \ - tb/tb_rx_golden_reg.vvp \ - -DGOLDEN_GENERATE \ - tb/tb_radar_receiver_final.v radar_receiver_final.v \ - radar_mode_controller.v tb/ad9484_interface_400m_stub.v \ - ddc_400m.v nco_400m_enhanced.v cic_decimator_4x_enhanced.v \ - cdc_modules.v fir_lowpass.v ddc_input_interface.v \ - chirp_memory_loader_param.v latency_buffer.v \ - matched_filter_multi_segment.v matched_filter_processing_chain.v \ - range_bin_decimator.v doppler_processor.v xfft_16.v fft_engine.v \ - rx_gain_control.v mti_canceller.v - - # Golden compare - run_test "Receiver (golden compare)" \ - tb/tb_rx_compare_reg.vvp \ - tb/tb_radar_receiver_final.v radar_receiver_final.v \ - radar_mode_controller.v tb/ad9484_interface_400m_stub.v \ - ddc_400m.v nco_400m_enhanced.v cic_decimator_4x_enhanced.v \ - cdc_modules.v fir_lowpass.v ddc_input_interface.v \ - chirp_memory_loader_param.v latency_buffer.v \ - matched_filter_multi_segment.v matched_filter_processing_chain.v \ - range_bin_decimator.v doppler_processor.v xfft_16.v fft_engine.v \ - rx_gain_control.v mti_canceller.v + # NOTE: The "Receiver golden generate/compare" pair was REMOVED because + # it was self-blessing: both passes ran the same RTL with the same + # deterministic stimulus, so the test always passed regardless of bugs. + # Real co-sim coverage is provided by: + # - tb_doppler_realdata.v (committed Python golden hex, exact match) + # - tb_fullchain_realdata.v (committed Python golden hex, exact match) + # A proper full-pipeline co-sim (DDC→MF→Decim→Doppler vs Python) is + # planned as a replacement (Phase C of CI test plan). # Full system top (monitoring-only, legacy) run_test "System Top (radar_system_tb)" \ @@ -469,12 +515,28 @@ if [[ "$QUICK" -eq 0 ]]; then usb_data_interface.v edge_detector.v radar_mode_controller.v \ rx_gain_control.v cfar_ca.v mti_canceller.v fpga_self_test.v else - echo " (skipped receiver golden + system top + E2E — use without --quick)" - SKIP=$((SKIP + 4)) + echo " (skipped system top + E2E — use without --quick)" + SKIP=$((SKIP + 2)) fi echo "" +# =========================================================================== +# PHASE 2b: MATCHED FILTER CO-SIMULATION (RTL vs Python golden reference) +# Runs tb_mf_cosim.v for 4 scenarios, then compare_mf.py validates output +# against committed Python golden CSV files. In SIMULATION mode, thresholds +# are generous (behavioral vs fixed-point twiddles differ) — validates +# state machine mechanics, output count, and energy sanity. +# =========================================================================== +echo "--- PHASE 2b: Matched Filter Co-Sim ---" + +run_mf_cosim "chirp" "" +run_mf_cosim "dc" "-DSCENARIO_DC" +run_mf_cosim "impulse" "-DSCENARIO_IMPULSE" +run_mf_cosim "tone5" "-DSCENARIO_TONE5" + +echo "" + # =========================================================================== # PHASE 3: UNIT TESTS — Signal Processing # =========================================================================== diff --git a/9_Firmware/9_2_FPGA/tb/cosim/compare_mf_chirp.csv b/9_Firmware/9_2_FPGA/tb/cosim/compare_mf_chirp.csv deleted file mode 100644 index 253fda7..0000000 --- a/9_Firmware/9_2_FPGA/tb/cosim/compare_mf_chirp.csv +++ /dev/null @@ -1,1025 +0,0 @@ -bin,py_i,py_q,rtl_i,rtl_q,py_mag,rtl_mag,diff_i,diff_q -0,-2,-2,-2,-2,4,4,0,0 -1,-2,-3,-2,-3,5,5,0,0 -2,-2,-3,-2,-3,5,5,0,0 -3,-1,-3,-1,-3,4,4,0,0 -4,-1,-2,-1,-2,3,3,0,0 -5,-1,-3,-1,-3,4,4,0,0 -6,-1,-3,-1,-3,4,4,0,0 -7,-1,-3,-1,-3,4,4,0,0 -8,-1,-2,-1,-2,3,3,0,0 -9,0,-2,0,-2,2,2,0,0 -10,0,-3,0,-3,3,3,0,0 -11,1,-3,1,-3,4,4,0,0 -12,1,-3,1,-3,4,4,0,0 -13,0,-2,0,-2,2,2,0,0 -14,1,-3,1,-3,4,4,0,0 -15,2,-2,2,-2,4,4,0,0 -16,2,-3,2,-3,5,5,0,0 -17,2,-2,2,-2,4,4,0,0 -18,3,-1,3,-1,4,4,0,0 -19,3,-1,3,-1,4,4,0,0 -20,3,-1,3,-1,4,4,0,0 -21,4,-1,4,-1,5,5,0,0 -22,4,-1,4,-1,5,5,0,0 -23,3,0,3,0,3,3,0,0 -24,2,1,2,1,3,3,0,0 -25,1,1,1,1,2,2,0,0 -26,1,1,1,1,2,2,0,0 -27,1,1,1,1,2,2,0,0 -28,1,1,1,1,2,2,0,0 -29,1,1,1,1,2,2,0,0 -30,0,2,0,2,2,2,0,0 -31,0,2,0,2,2,2,0,0 -32,0,1,0,1,1,1,0,0 -33,0,1,0,1,1,1,0,0 -34,-1,2,-1,2,3,3,0,0 -35,-2,2,-2,2,4,4,0,0 -36,-2,2,-2,2,4,4,0,0 -37,-3,1,-3,1,4,4,0,0 -38,-3,0,-3,0,3,3,0,0 -39,-3,0,-3,0,3,3,0,0 -40,-2,0,-2,0,2,2,0,0 -41,-2,0,-2,0,2,2,0,0 -42,-2,0,-2,0,2,2,0,0 -43,-2,-1,-2,-1,3,3,0,0 -44,-3,-1,-3,-1,4,4,0,0 -45,-4,-2,-4,-2,6,6,0,0 -46,-4,-3,-4,-3,7,7,0,0 -47,-3,-4,-3,-4,7,7,0,0 -48,-2,-4,-2,-4,6,6,0,0 -49,-3,-3,-3,-3,6,6,0,0 -50,-3,-3,-3,-3,6,6,0,0 -51,-2,-3,-2,-3,5,5,0,0 -52,-1,-3,-1,-3,4,4,0,0 -53,0,-2,0,-2,2,2,0,0 -54,-1,-3,-1,-3,4,4,0,0 -55,0,-4,0,-4,4,4,0,0 -56,0,-4,0,-4,4,4,0,0 -57,1,-5,1,-5,6,6,0,0 -58,1,-4,1,-4,5,5,0,0 -59,1,-4,1,-4,5,5,0,0 -60,1,-3,1,-3,4,4,0,0 -61,2,-3,2,-3,5,5,0,0 -62,2,-3,2,-3,5,5,0,0 -63,2,-2,2,-2,4,4,0,0 -64,2,-2,2,-2,4,4,0,0 -65,2,-2,2,-2,4,4,0,0 -66,3,-1,3,-1,4,4,0,0 -67,3,0,3,0,3,3,0,0 -68,3,1,3,1,4,4,0,0 -69,2,1,2,1,3,3,0,0 -70,0,0,0,0,0,0,0,0 -71,0,0,0,0,0,0,0,0 -72,1,0,1,0,1,1,0,0 -73,1,1,1,1,2,2,0,0 -74,1,1,1,1,2,2,0,0 -75,1,2,1,2,3,3,0,0 -76,0,2,0,2,2,2,0,0 -77,-1,2,-1,2,3,3,0,0 -78,-1,2,-1,2,3,3,0,0 -79,-1,1,-1,1,2,2,0,0 -80,-1,0,-1,0,1,1,0,0 -81,-2,1,-2,1,3,3,0,0 -82,-3,2,-3,2,5,5,0,0 -83,-3,1,-3,1,4,4,0,0 -84,-4,0,-4,0,4,4,0,0 -85,-4,0,-4,0,4,4,0,0 -86,-3,-1,-3,-1,4,4,0,0 -87,-3,-1,-3,-1,4,4,0,0 -88,-3,0,-3,0,3,3,0,0 -89,-3,-1,-3,-1,4,4,0,0 -90,-3,-1,-3,-1,4,4,0,0 -91,-4,-2,-4,-2,6,6,0,0 -92,-2,-2,-2,-2,4,4,0,0 -93,-3,-1,-3,-1,4,4,0,0 -94,-3,-1,-3,-1,4,4,0,0 -95,-4,-2,-4,-2,6,6,0,0 -96,-4,-3,-4,-3,7,7,0,0 -97,-3,-3,-3,-3,6,6,0,0 -98,-2,-4,-2,-4,6,6,0,0 -99,-2,-3,-2,-3,5,5,0,0 -100,-2,-3,-2,-3,5,5,0,0 -101,-1,-4,-1,-4,5,5,0,0 -102,-1,-4,-1,-4,5,5,0,0 -103,0,-4,0,-4,4,4,0,0 -104,0,-4,0,-4,4,4,0,0 -105,0,-4,0,-4,4,4,0,0 -106,0,-4,0,-4,4,4,0,0 -107,1,-3,1,-3,4,4,0,0 -108,1,-2,1,-2,3,3,0,0 -109,1,-1,1,-1,2,2,0,0 -110,1,-1,1,-1,2,2,0,0 -111,1,0,1,0,1,1,0,0 -112,1,-1,1,-1,2,2,0,0 -113,2,0,2,0,2,2,0,0 -114,3,1,3,1,4,4,0,0 -115,3,1,3,1,4,4,0,0 -116,2,2,2,2,4,4,0,0 -117,1,1,1,1,2,2,0,0 -118,0,2,0,2,2,2,0,0 -119,0,1,0,1,1,1,0,0 -120,0,1,0,1,1,1,0,0 -121,-1,1,-1,1,2,2,0,0 -122,-1,1,-1,1,2,2,0,0 -123,0,1,0,1,1,1,0,0 -124,-1,1,-1,1,2,2,0,0 -125,-1,1,-1,1,2,2,0,0 -126,-2,2,-2,2,4,4,0,0 -127,-3,2,-3,2,5,5,0,0 -128,-4,1,-4,1,5,5,0,0 -129,-4,0,-4,0,4,4,0,0 -130,-3,0,-3,0,3,3,0,0 -131,-3,-1,-3,-1,4,4,0,0 -132,-3,-1,-3,-1,4,4,0,0 -133,-3,-1,-3,-1,4,4,0,0 -134,-3,-1,-3,-1,4,4,0,0 -135,-4,-1,-4,-1,5,5,0,0 -136,-3,-2,-3,-2,5,5,0,0 -137,-3,-2,-3,-2,5,5,0,0 -138,-3,-3,-3,-3,6,6,0,0 -139,-3,-3,-3,-3,6,6,0,0 -140,-3,-4,-3,-4,7,7,0,0 -141,-3,-5,-3,-5,8,8,0,0 -142,-2,-6,-2,-6,8,8,0,0 -143,-1,-5,-1,-5,6,6,0,0 -144,0,-4,0,-4,4,4,0,0 -145,0,-4,0,-4,4,4,0,0 -146,0,-3,0,-3,3,3,0,0 -147,0,-3,0,-3,3,3,0,0 -148,0,-3,0,-3,3,3,0,0 -149,0,-3,0,-3,3,3,0,0 -150,0,-3,0,-3,3,3,0,0 -151,0,-3,0,-3,3,3,0,0 -152,1,-3,1,-3,4,4,0,0 -153,1,-3,1,-3,4,4,0,0 -154,2,-2,2,-2,4,4,0,0 -155,2,-1,2,-1,3,3,0,0 -156,1,0,1,0,1,1,0,0 -157,1,-1,1,-1,2,2,0,0 -158,1,-1,1,-1,2,2,0,0 -159,2,0,2,0,2,2,0,0 -160,2,0,2,0,2,2,0,0 -161,1,1,1,1,2,2,0,0 -162,2,1,2,1,3,3,0,0 -163,2,1,2,1,3,3,0,0 -164,1,1,1,1,2,2,0,0 -165,1,1,1,1,2,2,0,0 -166,0,1,0,1,1,1,0,0 -167,-1,1,-1,1,2,2,0,0 -168,-2,1,-2,1,3,3,0,0 -169,-2,1,-2,1,3,3,0,0 -170,-2,1,-2,1,3,3,0,0 -171,-2,1,-2,1,3,3,0,0 -172,-3,1,-3,1,4,4,0,0 -173,-3,0,-3,0,3,3,0,0 -174,-2,0,-2,0,2,2,0,0 -175,-3,0,-3,0,3,3,0,0 -176,-4,0,-4,0,4,4,0,0 -177,-4,-1,-4,-1,5,5,0,0 -178,-4,-2,-4,-2,6,6,0,0 -179,-4,-3,-4,-3,7,7,0,0 -180,-3,-3,-3,-3,6,6,0,0 -181,-3,-3,-3,-3,6,6,0,0 -182,-3,-3,-3,-3,6,6,0,0 -183,-2,-3,-2,-3,5,5,0,0 -184,-2,-4,-2,-4,6,6,0,0 -185,-2,-3,-2,-3,5,5,0,0 -186,-2,-4,-2,-4,6,6,0,0 -187,-2,-5,-2,-5,7,7,0,0 -188,-1,-5,-1,-5,6,6,0,0 -189,0,-5,0,-5,5,5,0,0 -190,-1,-5,-1,-5,6,6,0,0 -191,-1,-5,-1,-5,6,6,0,0 -192,-1,-5,-1,-5,6,6,0,0 -193,0,-5,0,-5,5,5,0,0 -194,1,-4,1,-4,5,5,0,0 -195,2,-4,2,-4,6,6,0,0 -196,2,-3,2,-3,5,5,0,0 -197,2,-2,2,-2,4,4,0,0 -198,1,-2,1,-2,3,3,0,0 -199,2,-2,2,-2,4,4,0,0 -200,2,-1,2,-1,3,3,0,0 -201,1,0,1,0,1,1,0,0 -202,1,-1,1,-1,2,2,0,0 -203,1,-1,1,-1,2,2,0,0 -204,1,-1,1,-1,2,2,0,0 -205,1,-1,1,-1,2,2,0,0 -206,2,-1,2,-1,3,3,0,0 -207,3,0,3,0,3,3,0,0 -208,2,1,2,1,3,3,0,0 -209,1,1,1,1,2,2,0,0 -210,1,1,1,1,2,2,0,0 -211,0,0,0,0,0,0,0,0 -212,0,0,0,0,0,0,0,0 -213,-1,0,-1,0,1,1,0,0 -214,0,0,0,0,0,0,0,0 -215,1,1,1,1,2,2,0,0 -216,0,2,0,2,2,2,0,0 -217,-2,2,-2,2,4,4,0,0 -218,-3,1,-3,1,4,4,0,0 -219,-3,1,-3,1,4,4,0,0 -220,-3,0,-3,0,3,3,0,0 -221,-3,0,-3,0,3,3,0,0 -222,-2,-1,-2,-1,3,3,0,0 -223,-3,-1,-3,-1,4,4,0,0 -224,-3,-2,-3,-2,5,5,0,0 -225,-2,-2,-2,-2,4,4,0,0 -226,-3,-2,-3,-2,5,5,0,0 -227,-2,-2,-2,-2,4,4,0,0 -228,-2,-3,-2,-3,5,5,0,0 -229,-1,-3,-1,-3,4,4,0,0 -230,-1,-3,-1,-3,4,4,0,0 -231,-1,-3,-1,-3,4,4,0,0 -232,-1,-3,-1,-3,4,4,0,0 -233,-1,-3,-1,-3,4,4,0,0 -234,-1,-3,-1,-3,4,4,0,0 -235,0,-4,0,-4,4,4,0,0 -236,0,-4,0,-4,4,4,0,0 -237,1,-3,1,-3,4,4,0,0 -238,0,-3,0,-3,3,3,0,0 -239,1,-4,1,-4,5,5,0,0 -240,1,-3,1,-3,4,4,0,0 -241,1,-3,1,-3,4,4,0,0 -242,1,-2,1,-2,3,3,0,0 -243,1,-2,1,-2,3,3,0,0 -244,2,-1,2,-1,3,3,0,0 -245,2,-1,2,-1,3,3,0,0 -246,2,-1,2,-1,3,3,0,0 -247,2,0,2,0,2,2,0,0 -248,1,-1,1,-1,2,2,0,0 -249,1,-1,1,-1,2,2,0,0 -250,1,0,1,0,1,1,0,0 -251,0,0,0,0,0,0,0,0 -252,0,0,0,0,0,0,0,0 -253,0,0,0,0,0,0,0,0 -254,1,0,1,0,1,1,0,0 -255,1,1,1,1,2,2,0,0 -256,1,2,1,2,3,3,0,0 -257,1,1,1,1,2,2,0,0 -258,0,1,0,1,1,1,0,0 -259,-1,1,-1,1,2,2,0,0 -260,-2,0,-2,0,2,2,0,0 -261,-2,0,-2,0,2,2,0,0 -262,-2,0,-2,0,2,2,0,0 -263,-2,0,-2,0,2,2,0,0 -264,-2,-1,-2,-1,3,3,0,0 -265,-2,0,-2,0,2,2,0,0 -266,-2,-1,-2,-1,3,3,0,0 -267,-3,0,-3,0,3,3,0,0 -268,-4,0,-4,0,4,4,0,0 -269,-4,-1,-4,-1,5,5,0,0 -270,-3,-2,-3,-2,5,5,0,0 -271,-3,-3,-3,-3,6,6,0,0 -272,-3,-3,-3,-3,6,6,0,0 -273,-4,-3,-4,-3,7,7,0,0 -274,-4,-3,-4,-3,7,7,0,0 -275,-3,-4,-3,-4,7,7,0,0 -276,-2,-3,-2,-3,5,5,0,0 -277,-2,-3,-2,-3,5,5,0,0 -278,-2,-2,-2,-2,4,4,0,0 -279,-2,-2,-2,-2,4,4,0,0 -280,-2,-2,-2,-2,4,4,0,0 -281,-2,-3,-2,-3,5,5,0,0 -282,-1,-3,-1,-3,4,4,0,0 -283,0,-4,0,-4,4,4,0,0 -284,1,-4,1,-4,5,5,0,0 -285,2,-3,2,-3,5,5,0,0 -286,2,-2,2,-2,4,4,0,0 -287,1,-2,1,-2,3,3,0,0 -288,1,-2,1,-2,3,3,0,0 -289,1,-2,1,-2,3,3,0,0 -290,1,-1,1,-1,2,2,0,0 -291,0,-1,0,-1,1,1,0,0 -292,1,-1,1,-1,2,2,0,0 -293,1,-1,1,-1,2,2,0,0 -294,1,0,1,0,1,1,0,0 -295,1,0,1,0,1,1,0,0 -296,1,0,1,0,1,1,0,0 -297,1,1,1,1,2,2,0,0 -298,1,2,1,2,3,3,0,0 -299,1,2,1,2,3,3,0,0 -300,1,2,1,2,3,3,0,0 -301,1,3,1,3,4,4,0,0 -302,-1,3,-1,3,4,4,0,0 -303,-2,3,-2,3,5,5,0,0 -304,-3,2,-3,2,5,5,0,0 -305,-2,1,-2,1,3,3,0,0 -306,-3,1,-3,1,4,4,0,0 -307,-3,1,-3,1,4,4,0,0 -308,-3,1,-3,1,4,4,0,0 -309,-3,1,-3,1,4,4,0,0 -310,-4,-1,-4,-1,5,5,0,0 -311,-4,0,-4,0,4,4,0,0 -312,-5,-1,-5,-1,6,6,0,0 -313,-4,-2,-4,-2,6,6,0,0 -314,-3,-3,-3,-3,6,6,0,0 -315,-2,-3,-2,-3,5,5,0,0 -316,-2,-2,-2,-2,4,4,0,0 -317,-2,-3,-2,-3,5,5,0,0 -318,-2,-3,-2,-3,5,5,0,0 -319,-2,-2,-2,-2,4,4,0,0 -320,-2,-2,-2,-2,4,4,0,0 -321,-2,-2,-2,-2,4,4,0,0 -322,-1,-2,-1,-2,3,3,0,0 -323,-1,-2,-1,-2,3,3,0,0 -324,-1,-3,-1,-3,4,4,0,0 -325,0,-2,0,-2,2,2,0,0 -326,0,-3,0,-3,3,3,0,0 -327,0,-3,0,-3,3,3,0,0 -328,1,-3,1,-3,4,4,0,0 -329,0,-4,0,-4,4,4,0,0 -330,1,-4,1,-4,5,5,0,0 -331,1,-3,1,-3,4,4,0,0 -332,1,-3,1,-3,4,4,0,0 -333,2,-2,2,-2,4,4,0,0 -334,1,-1,1,-1,2,2,0,0 -335,1,-1,1,-1,2,2,0,0 -336,2,0,2,0,2,2,0,0 -337,1,1,1,1,2,2,0,0 -338,2,0,2,0,2,2,0,0 -339,1,0,1,0,1,1,0,0 -340,2,1,2,1,3,3,0,0 -341,2,1,2,1,3,3,0,0 -342,1,2,1,2,3,3,0,0 -343,1,3,1,3,4,4,0,0 -344,0,3,0,3,3,3,0,0 -345,-1,2,-1,2,3,3,0,0 -346,-1,2,-1,2,3,3,0,0 -347,-2,1,-2,1,3,3,0,0 -348,-2,1,-2,1,3,3,0,0 -349,-3,0,-3,0,3,3,0,0 -350,-3,0,-3,0,3,3,0,0 -351,-3,0,-3,0,3,3,0,0 -352,-3,0,-3,0,3,3,0,0 -353,-3,1,-3,1,4,4,0,0 -354,-3,-1,-3,-1,4,4,0,0 -355,-2,-1,-2,-1,3,3,0,0 -356,-2,-2,-2,-2,4,4,0,0 -357,-2,-1,-2,-1,3,3,0,0 -358,-2,-2,-2,-2,4,4,0,0 -359,-3,-2,-3,-2,5,5,0,0 -360,-3,-2,-3,-2,5,5,0,0 -361,-2,-3,-2,-3,5,5,0,0 -362,-2,-3,-2,-3,5,5,0,0 -363,-1,-2,-1,-2,3,3,0,0 -364,-1,-2,-1,-2,3,3,0,0 -365,-2,-3,-2,-3,5,5,0,0 -366,-2,-3,-2,-3,5,5,0,0 -367,-1,-4,-1,-4,5,5,0,0 -368,-1,-4,-1,-4,5,5,0,0 -369,-1,-4,-1,-4,5,5,0,0 -370,0,-3,0,-3,3,3,0,0 -371,0,-3,0,-3,3,3,0,0 -372,0,-3,0,-3,3,3,0,0 -373,0,-4,0,-4,4,4,0,0 -374,1,-4,1,-4,5,5,0,0 -375,1,-3,1,-3,4,4,0,0 -376,1,-2,1,-2,3,3,0,0 -377,1,-2,1,-2,3,3,0,0 -378,2,-1,2,-1,3,3,0,0 -379,1,0,1,0,1,1,0,0 -380,1,1,1,1,2,2,0,0 -381,1,0,1,0,1,1,0,0 -382,2,0,2,0,2,2,0,0 -383,2,0,2,0,2,2,0,0 -384,2,1,2,1,3,3,0,0 -385,1,2,1,2,3,3,0,0 -386,1,2,1,2,3,3,0,0 -387,0,2,0,2,2,2,0,0 -388,0,2,0,2,2,2,0,0 -389,-1,1,-1,1,2,2,0,0 -390,-1,1,-1,1,2,2,0,0 -391,-2,1,-2,1,3,3,0,0 -392,-2,1,-2,1,3,3,0,0 -393,-3,1,-3,1,4,4,0,0 -394,-4,1,-4,1,5,5,0,0 -395,-4,1,-4,1,5,5,0,0 -396,-4,0,-4,0,4,4,0,0 -397,-3,0,-3,0,3,3,0,0 -398,-3,0,-3,0,3,3,0,0 -399,-2,-1,-2,-1,3,3,0,0 -400,-2,-1,-2,-1,3,3,0,0 -401,-2,0,-2,0,2,2,0,0 -402,-2,-1,-2,-1,3,3,0,0 -403,-3,-1,-3,-1,4,4,0,0 -404,-3,-2,-3,-2,5,5,0,0 -405,-3,-3,-3,-3,6,6,0,0 -406,-3,-3,-3,-3,6,6,0,0 -407,-3,-3,-3,-3,6,6,0,0 -408,-3,-3,-3,-3,6,6,0,0 -409,-3,-3,-3,-3,6,6,0,0 -410,-3,-3,-3,-3,6,6,0,0 -411,-2,-3,-2,-3,5,5,0,0 -412,-1,-3,-1,-3,4,4,0,0 -413,-1,-2,-1,-2,3,3,0,0 -414,0,-3,0,-3,3,3,0,0 -415,0,-2,0,-2,2,2,0,0 -416,0,-2,0,-2,2,2,0,0 -417,0,-3,0,-3,3,3,0,0 -418,1,-3,1,-3,4,4,0,0 -419,2,-3,2,-3,5,5,0,0 -420,2,-2,2,-2,4,4,0,0 -421,1,-1,1,-1,2,2,0,0 -422,1,-1,1,-1,2,2,0,0 -423,1,-2,1,-2,3,3,0,0 -424,1,-2,1,-2,3,3,0,0 -425,1,-2,1,-2,3,3,0,0 -426,1,-1,1,-1,2,2,0,0 -427,1,0,1,0,1,1,0,0 -428,1,1,1,1,2,2,0,0 -429,1,2,1,2,3,3,0,0 -430,1,2,1,2,3,3,0,0 -431,0,1,0,1,1,1,0,0 -432,0,1,0,1,1,1,0,0 -433,-1,2,-1,2,3,3,0,0 -434,-1,1,-1,1,2,2,0,0 -435,-2,1,-2,1,3,3,0,0 -436,-2,1,-2,1,3,3,0,0 -437,-2,1,-2,1,3,3,0,0 -438,-2,1,-2,1,3,3,0,0 -439,-2,1,-2,1,3,3,0,0 -440,-2,1,-2,1,3,3,0,0 -441,-2,1,-2,1,3,3,0,0 -442,-3,2,-3,2,5,5,0,0 -443,-4,1,-4,1,5,5,0,0 -444,-4,0,-4,0,4,4,0,0 -445,-5,-1,-5,-1,6,6,0,0 -446,-4,-1,-4,-1,5,5,0,0 -447,-4,-1,-4,-1,5,5,0,0 -448,-4,-1,-4,-1,5,5,0,0 -449,-4,-2,-4,-2,6,6,0,0 -450,-4,-2,-4,-2,6,6,0,0 -451,-3,-3,-3,-3,6,6,0,0 -452,-2,-3,-2,-3,5,5,0,0 -453,-2,-4,-2,-4,6,6,0,0 -454,-2,-4,-2,-4,6,6,0,0 -455,-2,-4,-2,-4,6,6,0,0 -456,-2,-3,-2,-3,5,5,0,0 -457,-2,-4,-2,-4,6,6,0,0 -458,-2,-4,-2,-4,6,6,0,0 -459,-1,-4,-1,-4,5,5,0,0 -460,1,-4,1,-4,5,5,0,0 -461,1,-4,1,-4,5,5,0,0 -462,1,-4,1,-4,5,5,0,0 -463,2,-5,2,-5,7,7,0,0 -464,2,-4,2,-4,6,6,0,0 -465,2,-3,2,-3,5,5,0,0 -466,1,-3,1,-3,4,4,0,0 -467,2,-2,2,-2,4,4,0,0 -468,1,-2,1,-2,3,3,0,0 -469,1,-2,1,-2,3,3,0,0 -470,2,-1,2,-1,3,3,0,0 -471,3,-1,3,-1,4,4,0,0 -472,2,-1,2,-1,3,3,0,0 -473,1,-1,1,-1,2,2,0,0 -474,1,0,1,0,1,1,0,0 -475,1,0,1,0,1,1,0,0 -476,1,1,1,1,2,2,0,0 -477,1,1,1,1,2,2,0,0 -478,1,1,1,1,2,2,0,0 -479,0,1,0,1,1,1,0,0 -480,0,1,0,1,1,1,0,0 -481,-1,0,-1,0,1,1,0,0 -482,-1,-1,-1,-1,2,2,0,0 -483,-2,0,-2,0,2,2,0,0 -484,-1,1,-1,1,2,2,0,0 -485,-2,1,-2,1,3,3,0,0 -486,-2,1,-2,1,3,3,0,0 -487,-2,1,-2,1,3,3,0,0 -488,-2,1,-2,1,3,3,0,0 -489,-3,0,-3,0,3,3,0,0 -490,-3,-1,-3,-1,4,4,0,0 -491,-3,-1,-3,-1,4,4,0,0 -492,-3,-1,-3,-1,4,4,0,0 -493,-3,-2,-3,-2,5,5,0,0 -494,-3,-2,-3,-2,5,5,0,0 -495,-4,-2,-4,-2,6,6,0,0 -496,-4,-3,-4,-3,7,7,0,0 -497,-3,-3,-3,-3,6,6,0,0 -498,-3,-4,-3,-4,7,7,0,0 -499,-2,-3,-2,-3,5,5,0,0 -500,-2,-4,-2,-4,6,6,0,0 -501,-1,-4,-1,-4,5,5,0,0 -502,-1,-3,-1,-3,4,4,0,0 -503,-1,-3,-1,-3,4,4,0,0 -504,0,-3,0,-3,3,3,0,0 -505,0,-3,0,-3,3,3,0,0 -506,-1,-3,-1,-3,4,4,0,0 -507,0,-3,0,-3,3,3,0,0 -508,0,-2,0,-2,2,2,0,0 -509,0,-2,0,-2,2,2,0,0 -510,0,-2,0,-2,2,2,0,0 -511,1,-2,1,-2,3,3,0,0 -512,1,-2,1,-2,3,3,0,0 -513,2,-1,2,-1,3,3,0,0 -514,1,-1,1,-1,2,2,0,0 -515,2,-1,2,-1,3,3,0,0 -516,1,0,1,0,1,1,0,0 -517,1,2,1,2,3,3,0,0 -518,0,2,0,2,2,2,0,0 -519,-1,2,-1,2,3,3,0,0 -520,-1,2,-1,2,3,3,0,0 -521,-1,2,-1,2,3,3,0,0 -522,-1,2,-1,2,3,3,0,0 -523,0,1,0,1,1,1,0,0 -524,0,1,0,1,1,1,0,0 -525,-2,2,-2,2,4,4,0,0 -526,-2,2,-2,2,4,4,0,0 -527,-3,2,-3,2,5,5,0,0 -528,-2,1,-2,1,3,3,0,0 -529,-3,1,-3,1,4,4,0,0 -530,-3,0,-3,0,3,3,0,0 -531,-3,0,-3,0,3,3,0,0 -532,-3,1,-3,1,4,4,0,0 -533,-3,-1,-3,-1,4,4,0,0 -534,-3,-1,-3,-1,4,4,0,0 -535,-3,-2,-3,-2,5,5,0,0 -536,-3,-1,-3,-1,4,4,0,0 -537,-3,-2,-3,-2,5,5,0,0 -538,-4,-3,-4,-3,7,7,0,0 -539,-3,-3,-3,-3,6,6,0,0 -540,-2,-3,-2,-3,5,5,0,0 -541,-2,-3,-2,-3,5,5,0,0 -542,-2,-3,-2,-3,5,5,0,0 -543,-2,-3,-2,-3,5,5,0,0 -544,-2,-3,-2,-3,5,5,0,0 -545,-2,-2,-2,-2,4,4,0,0 -546,-2,-3,-2,-3,5,5,0,0 -547,-1,-3,-1,-3,4,4,0,0 -548,0,-3,0,-3,3,3,0,0 -549,-1,-2,-1,-2,3,3,0,0 -550,0,-2,0,-2,2,2,0,0 -551,0,-2,0,-2,2,2,0,0 -552,1,-2,1,-2,3,3,0,0 -553,1,-1,1,-1,2,2,0,0 -554,0,-1,0,-1,1,1,0,0 -555,-1,-1,-1,-1,2,2,0,0 -556,0,-1,0,-1,1,1,0,0 -557,0,-1,0,-1,1,1,0,0 -558,0,0,0,0,0,0,0,0 -559,0,0,0,0,0,0,0,0 -560,1,0,1,0,1,1,0,0 -561,1,1,1,1,2,2,0,0 -562,1,1,1,1,2,2,0,0 -563,1,0,1,0,1,1,0,0 -564,1,0,1,0,1,1,0,0 -565,0,1,0,1,1,1,0,0 -566,0,1,0,1,1,1,0,0 -567,0,1,0,1,1,1,0,0 -568,-1,2,-1,2,3,3,0,0 -569,-1,2,-1,2,3,3,0,0 -570,-1,2,-1,2,3,3,0,0 -571,-2,2,-2,2,4,4,0,0 -572,-2,1,-2,1,3,3,0,0 -573,-2,1,-2,1,3,3,0,0 -574,-2,1,-2,1,3,3,0,0 -575,-3,0,-3,0,3,3,0,0 -576,-2,0,-2,0,2,2,0,0 -577,-2,0,-2,0,2,2,0,0 -578,-3,0,-3,0,3,3,0,0 -579,-3,0,-3,0,3,3,0,0 -580,-4,-1,-4,-1,5,5,0,0 -581,-4,-1,-4,-1,5,5,0,0 -582,-4,-1,-4,-1,5,5,0,0 -583,-4,-1,-4,-1,5,5,0,0 -584,-3,-1,-3,-1,4,4,0,0 -585,-4,0,-4,0,4,4,0,0 -586,-4,0,-4,0,4,4,0,0 -587,-4,-1,-4,-1,5,5,0,0 -588,-3,-2,-3,-2,5,5,0,0 -589,-3,-2,-3,-2,5,5,0,0 -590,-2,-2,-2,-2,4,4,0,0 -591,-2,-3,-2,-3,5,5,0,0 -592,-1,-3,-1,-3,4,4,0,0 -593,-2,-3,-2,-3,5,5,0,0 -594,-1,-3,-1,-3,4,4,0,0 -595,0,-3,0,-3,3,3,0,0 -596,0,-3,0,-3,3,3,0,0 -597,0,-4,0,-4,4,4,0,0 -598,0,-3,0,-3,3,3,0,0 -599,1,-3,1,-3,4,4,0,0 -600,1,-3,1,-3,4,4,0,0 -601,1,-2,1,-2,3,3,0,0 -602,2,-2,2,-2,4,4,0,0 -603,2,0,2,0,2,2,0,0 -604,2,0,2,0,2,2,0,0 -605,2,0,2,0,2,2,0,0 -606,1,0,1,0,1,1,0,0 -607,1,0,1,0,1,1,0,0 -608,1,1,1,1,2,2,0,0 -609,1,1,1,1,2,2,0,0 -610,1,1,1,1,2,2,0,0 -611,1,1,1,1,2,2,0,0 -612,1,2,1,2,3,3,0,0 -613,0,2,0,2,2,2,0,0 -614,-1,2,-1,2,3,3,0,0 -615,-1,2,-1,2,3,3,0,0 -616,-2,2,-2,2,4,4,0,0 -617,-2,2,-2,2,4,4,0,0 -618,-3,1,-3,1,4,4,0,0 -619,-3,1,-3,1,4,4,0,0 -620,-4,1,-4,1,5,5,0,0 -621,-3,1,-3,1,4,4,0,0 -622,-4,1,-4,1,5,5,0,0 -623,-4,1,-4,1,5,5,0,0 -624,-5,1,-5,1,6,6,0,0 -625,-4,0,-4,0,4,4,0,0 -626,-4,0,-4,0,4,4,0,0 -627,-4,-1,-4,-1,5,5,0,0 -628,-4,-2,-4,-2,6,6,0,0 -629,-3,-3,-3,-3,6,6,0,0 -630,-3,-3,-3,-3,6,6,0,0 -631,-3,-2,-3,-2,5,5,0,0 -632,-2,-2,-2,-2,4,4,0,0 -633,-2,-2,-2,-2,4,4,0,0 -634,-1,-2,-1,-2,3,3,0,0 -635,0,-3,0,-3,3,3,0,0 -636,-1,-3,-1,-3,4,4,0,0 -637,-1,-2,-1,-2,3,3,0,0 -638,-1,-2,-1,-2,3,3,0,0 -639,-1,-2,-1,-2,3,3,0,0 -640,0,-2,0,-2,2,2,0,0 -641,1,-2,1,-2,3,3,0,0 -642,1,-2,1,-2,3,3,0,0 -643,1,-1,1,-1,2,2,0,0 -644,2,-1,2,-1,3,3,0,0 -645,1,0,1,0,1,1,0,0 -646,1,0,1,0,1,1,0,0 -647,1,-1,1,-1,2,2,0,0 -648,1,-1,1,-1,2,2,0,0 -649,2,0,2,0,2,2,0,0 -650,2,1,2,1,3,3,0,0 -651,1,1,1,1,2,2,0,0 -652,1,2,1,2,3,3,0,0 -653,1,2,1,2,3,3,0,0 -654,0,2,0,2,2,2,0,0 -655,0,2,0,2,2,2,0,0 -656,-1,2,-1,2,3,3,0,0 -657,-1,2,-1,2,3,3,0,0 -658,-2,2,-2,2,4,4,0,0 -659,-2,2,-2,2,4,4,0,0 -660,-2,2,-2,2,4,4,0,0 -661,-1,2,-1,2,3,3,0,0 -662,-1,3,-1,3,4,4,0,0 -663,-2,2,-2,2,4,4,0,0 -664,-3,2,-3,2,5,5,0,0 -665,-4,1,-4,1,5,5,0,0 -666,-4,0,-4,0,4,4,0,0 -667,-4,-1,-4,-1,5,5,0,0 -668,-4,-1,-4,-1,5,5,0,0 -669,-4,-1,-4,-1,5,5,0,0 -670,-3,-1,-3,-1,4,4,0,0 -671,-3,-2,-3,-2,5,5,0,0 -672,-3,-1,-3,-1,4,4,0,0 -673,-3,-2,-3,-2,5,5,0,0 -674,-2,-3,-2,-3,5,5,0,0 -675,-2,-2,-2,-2,4,4,0,0 -676,-1,-2,-1,-2,3,3,0,0 -677,-2,-2,-2,-2,4,4,0,0 -678,-1,-2,-1,-2,3,3,0,0 -679,-1,-2,-1,-2,3,3,0,0 -680,-1,-2,-1,-2,3,3,0,0 -681,0,-2,0,-2,2,2,0,0 -682,0,-1,0,-1,1,1,0,0 -683,-1,-2,-1,-2,3,3,0,0 -684,0,-2,0,-2,2,2,0,0 -685,0,-2,0,-2,2,2,0,0 -686,1,-2,1,-2,3,3,0,0 -687,1,-1,1,-1,2,2,0,0 -688,1,0,1,0,1,1,0,0 -689,0,1,0,1,1,1,0,0 -690,0,1,0,1,1,1,0,0 -691,-1,2,-1,2,3,3,0,0 -692,-1,2,-1,2,3,3,0,0 -693,0,1,0,1,1,1,0,0 -694,1,1,1,1,2,2,0,0 -695,0,2,0,2,2,2,0,0 -696,-1,2,-1,2,3,3,0,0 -697,-1,2,-1,2,3,3,0,0 -698,-1,0,-1,0,1,1,0,0 -699,-1,0,-1,0,1,1,0,0 -700,-1,0,-1,0,1,1,0,0 -701,-1,0,-1,0,1,1,0,0 -702,-2,1,-2,1,3,3,0,0 -703,-2,1,-2,1,3,3,0,0 -704,-3,1,-3,1,4,4,0,0 -705,-4,1,-4,1,5,5,0,0 -706,-3,0,-3,0,3,3,0,0 -707,-3,-1,-3,-1,4,4,0,0 -708,-3,-1,-3,-1,4,4,0,0 -709,-2,-1,-2,-1,3,3,0,0 -710,-2,-1,-2,-1,3,3,0,0 -711,-2,-1,-2,-1,3,3,0,0 -712,-3,-2,-3,-2,5,5,0,0 -713,-2,-2,-2,-2,4,4,0,0 -714,-1,-2,-1,-2,3,3,0,0 -715,-1,-2,-1,-2,3,3,0,0 -716,-1,-2,-1,-2,3,3,0,0 -717,-1,-2,-1,-2,3,3,0,0 -718,-1,-3,-1,-3,4,4,0,0 -719,-2,-2,-2,-2,4,4,0,0 -720,-2,-2,-2,-2,4,4,0,0 -721,-2,-3,-2,-3,5,5,0,0 -722,-1,-2,-1,-2,3,3,0,0 -723,-1,-2,-1,-2,3,3,0,0 -724,-1,-2,-1,-2,3,3,0,0 -725,0,-2,0,-2,2,2,0,0 -726,0,-1,0,-1,1,1,0,0 -727,0,-1,0,-1,1,1,0,0 -728,-1,-1,-1,-1,2,2,0,0 -729,0,-1,0,-1,1,1,0,0 -730,0,-1,0,-1,1,1,0,0 -731,-1,-1,-1,-1,2,2,0,0 -732,0,0,0,0,0,0,0,0 -733,-1,0,-1,0,1,1,0,0 -734,-1,0,-1,0,1,1,0,0 -735,-1,1,-1,1,2,2,0,0 -736,0,1,0,1,1,1,0,0 -737,-1,1,-1,1,2,2,0,0 -738,-2,1,-2,1,3,3,0,0 -739,-2,0,-2,0,2,2,0,0 -740,-2,1,-2,1,3,3,0,0 -741,-2,0,-2,0,2,2,0,0 -742,-2,0,-2,0,2,2,0,0 -743,-2,1,-2,1,3,3,0,0 -744,-3,0,-3,0,3,3,0,0 -745,-3,0,-3,0,3,3,0,0 -746,-3,0,-3,0,3,3,0,0 -747,-3,1,-3,1,4,4,0,0 -748,-3,0,-3,0,3,3,0,0 -749,-3,0,-3,0,3,3,0,0 -750,-2,0,-2,0,2,2,0,0 -751,-3,-1,-3,-1,4,4,0,0 -752,-3,-1,-3,-1,4,4,0,0 -753,-3,-1,-3,-1,4,4,0,0 -754,-4,-1,-4,-1,5,5,0,0 -755,-3,-2,-3,-2,5,5,0,0 -756,-3,-2,-3,-2,5,5,0,0 -757,-3,-2,-3,-2,5,5,0,0 -758,-2,-2,-2,-2,4,4,0,0 -759,-2,-2,-2,-2,4,4,0,0 -760,-2,-2,-2,-2,4,4,0,0 -761,-2,-2,-2,-2,4,4,0,0 -762,-1,-3,-1,-3,4,4,0,0 -763,-1,-3,-1,-3,4,4,0,0 -764,-1,-3,-1,-3,4,4,0,0 -765,0,-2,0,-2,2,2,0,0 -766,0,-2,0,-2,2,2,0,0 -767,0,-1,0,-1,1,1,0,0 -768,0,-1,0,-1,1,1,0,0 -769,0,-1,0,-1,1,1,0,0 -770,0,-1,0,-1,1,1,0,0 -771,0,-1,0,-1,1,1,0,0 -772,0,-1,0,-1,1,1,0,0 -773,0,-1,0,-1,1,1,0,0 -774,0,0,0,0,0,0,0,0 -775,0,0,0,0,0,0,0,0 -776,0,1,0,1,1,1,0,0 -777,0,1,0,1,1,1,0,0 -778,0,1,0,1,1,1,0,0 -779,0,1,0,1,1,1,0,0 -780,0,1,0,1,1,1,0,0 -781,0,2,0,2,2,2,0,0 -782,-1,2,-1,2,3,3,0,0 -783,-1,3,-1,3,4,4,0,0 -784,-1,3,-1,3,4,4,0,0 -785,-1,2,-1,2,3,3,0,0 -786,-1,2,-1,2,3,3,0,0 -787,-2,2,-2,2,4,4,0,0 -788,-3,2,-3,2,5,5,0,0 -789,-3,2,-3,2,5,5,0,0 -790,-3,1,-3,1,4,4,0,0 -791,-3,0,-3,0,3,3,0,0 -792,-3,0,-3,0,3,3,0,0 -793,-4,0,-4,0,4,4,0,0 -794,-4,-1,-4,-1,5,5,0,0 -795,-5,-1,-5,-1,6,6,0,0 -796,-5,-1,-5,-1,6,6,0,0 -797,-5,-2,-5,-2,7,7,0,0 -798,-5,-2,-5,-2,7,7,0,0 -799,-4,-2,-4,-2,6,6,0,0 -800,-2,-1,-2,-1,3,3,0,0 -801,-3,-2,-3,-2,5,5,0,0 -802,-2,-2,-2,-2,4,4,0,0 -803,-2,-1,-2,-1,3,3,0,0 -804,-1,-1,-1,-1,2,2,0,0 -805,-1,-2,-1,-2,3,3,0,0 -806,-1,-3,-1,-3,4,4,0,0 -807,-1,-3,-1,-3,4,4,0,0 -808,0,-2,0,-2,2,2,0,0 -809,-1,-2,-1,-2,3,3,0,0 -810,-1,-3,-1,-3,4,4,0,0 -811,-1,-3,-1,-3,4,4,0,0 -812,-1,-2,-1,-2,3,3,0,0 -813,0,-2,0,-2,2,2,0,0 -814,0,-2,0,-2,2,2,0,0 -815,1,-2,1,-2,3,3,0,0 -816,1,-2,1,-2,3,3,0,0 -817,1,-1,1,-1,2,2,0,0 -818,1,-1,1,-1,2,2,0,0 -819,1,0,1,0,1,1,0,0 -820,2,0,2,0,2,2,0,0 -821,2,0,2,0,2,2,0,0 -822,1,0,1,0,1,1,0,0 -823,0,0,0,0,0,0,0,0 -824,0,1,0,1,1,1,0,0 -825,0,1,0,1,1,1,0,0 -826,0,2,0,2,2,2,0,0 -827,0,3,0,3,3,3,0,0 -828,0,3,0,3,3,3,0,0 -829,-1,3,-1,3,4,4,0,0 -830,-1,3,-1,3,4,4,0,0 -831,-2,3,-2,3,5,5,0,0 -832,-2,2,-2,2,4,4,0,0 -833,-2,2,-2,2,4,4,0,0 -834,-3,1,-3,1,4,4,0,0 -835,-3,1,-3,1,4,4,0,0 -836,-3,1,-3,1,4,4,0,0 -837,-3,1,-3,1,4,4,0,0 -838,-3,1,-3,1,4,4,0,0 -839,-3,1,-3,1,4,4,0,0 -840,-3,0,-3,0,3,3,0,0 -841,-3,0,-3,0,3,3,0,0 -842,-3,0,-3,0,3,3,0,0 -843,-4,0,-4,0,4,4,0,0 -844,-4,0,-4,0,4,4,0,0 -845,-5,0,-5,0,5,5,0,0 -846,-4,-1,-4,-1,5,5,0,0 -847,-4,-1,-4,-1,5,5,0,0 -848,-4,-1,-4,-1,5,5,0,0 -849,-3,-2,-3,-2,5,5,0,0 -850,-3,-1,-3,-1,4,4,0,0 -851,-2,-2,-2,-2,4,4,0,0 -852,-2,-2,-2,-2,4,4,0,0 -853,-2,-3,-2,-3,5,5,0,0 -854,-1,-3,-1,-3,4,4,0,0 -855,-1,-2,-1,-2,3,3,0,0 -856,-1,-1,-1,-1,2,2,0,0 -857,-1,0,-1,0,1,1,0,0 -858,-1,0,-1,0,1,1,0,0 -859,-1,-1,-1,-1,2,2,0,0 -860,0,0,0,0,0,0,0,0 -861,0,0,0,0,0,0,0,0 -862,0,0,0,0,0,0,0,0 -863,1,0,1,0,1,1,0,0 -864,0,0,0,0,0,0,0,0 -865,-1,0,-1,0,1,1,0,0 -866,-1,0,-1,0,1,1,0,0 -867,-1,0,-1,0,1,1,0,0 -868,0,1,0,1,1,1,0,0 -869,0,1,0,1,1,1,0,0 -870,-1,2,-1,2,3,3,0,0 -871,-1,2,-1,2,3,3,0,0 -872,-1,2,-1,2,3,3,0,0 -873,-2,2,-2,2,4,4,0,0 -874,-2,2,-2,2,4,4,0,0 -875,-2,1,-2,1,3,3,0,0 -876,-2,2,-2,2,4,4,0,0 -877,-2,2,-2,2,4,4,0,0 -878,-2,2,-2,2,4,4,0,0 -879,-3,2,-3,2,5,5,0,0 -880,-3,2,-3,2,5,5,0,0 -881,-3,1,-3,1,4,4,0,0 -882,-3,1,-3,1,4,4,0,0 -883,-3,1,-3,1,4,4,0,0 -884,-2,0,-2,0,2,2,0,0 -885,-2,1,-2,1,3,3,0,0 -886,-3,0,-3,0,3,3,0,0 -887,-2,0,-2,0,2,2,0,0 -888,-3,0,-3,0,3,3,0,0 -889,-3,0,-3,0,3,3,0,0 -890,-3,-1,-3,-1,4,4,0,0 -891,-3,-1,-3,-1,4,4,0,0 -892,-3,-2,-3,-2,5,5,0,0 -893,-2,-1,-2,-1,3,3,0,0 -894,-2,-1,-2,-1,3,3,0,0 -895,-2,-1,-2,-1,3,3,0,0 -896,-2,-2,-2,-2,4,4,0,0 -897,-1,-2,-1,-2,3,3,0,0 -898,-1,-2,-1,-2,3,3,0,0 -899,0,-2,0,-2,2,2,0,0 -900,-1,-2,-1,-2,3,3,0,0 -901,0,-2,0,-2,2,2,0,0 -902,0,-1,0,-1,1,1,0,0 -903,0,-1,0,-1,1,1,0,0 -904,1,-1,1,-1,2,2,0,0 -905,1,-1,1,-1,2,2,0,0 -906,2,-1,2,-1,3,3,0,0 -907,2,0,2,0,2,2,0,0 -908,2,1,2,1,3,3,0,0 -909,2,1,2,1,3,3,0,0 -910,1,2,1,2,3,3,0,0 -911,0,3,0,3,3,3,0,0 -912,0,2,0,2,2,2,0,0 -913,0,2,0,2,2,2,0,0 -914,0,2,0,2,2,2,0,0 -915,0,2,0,2,2,2,0,0 -916,0,3,0,3,3,3,0,0 -917,0,4,0,4,4,4,0,0 -918,-1,4,-1,4,5,5,0,0 -919,-1,4,-1,4,5,5,0,0 -920,-1,3,-1,3,4,4,0,0 -921,-1,3,-1,3,4,4,0,0 -922,-1,3,-1,3,4,4,0,0 -923,-2,3,-2,3,5,5,0,0 -924,-2,3,-2,3,5,5,0,0 -925,-3,3,-3,3,6,6,0,0 -926,-3,3,-3,3,6,6,0,0 -927,-3,2,-3,2,5,5,0,0 -928,-3,2,-3,2,5,5,0,0 -929,-3,2,-3,2,5,5,0,0 -930,-2,2,-2,2,4,4,0,0 -931,-3,1,-3,1,4,4,0,0 -932,-4,1,-4,1,5,5,0,0 -933,-4,0,-4,0,4,4,0,0 -934,-4,1,-4,1,5,5,0,0 -935,-3,1,-3,1,4,4,0,0 -936,-3,0,-3,0,3,3,0,0 -937,-4,0,-4,0,4,4,0,0 -938,-4,-1,-4,-1,5,5,0,0 -939,-3,-1,-3,-1,4,4,0,0 -940,-3,-1,-3,-1,4,4,0,0 -941,-2,-1,-2,-1,3,3,0,0 -942,-2,-1,-2,-1,3,3,0,0 -943,-1,-1,-1,-1,2,2,0,0 -944,-2,-1,-2,-1,3,3,0,0 -945,-2,-1,-2,-1,3,3,0,0 -946,-1,-1,-1,-1,2,2,0,0 -947,-1,-1,-1,-1,2,2,0,0 -948,-1,0,-1,0,1,1,0,0 -949,-1,0,-1,0,1,1,0,0 -950,-1,0,-1,0,1,1,0,0 -951,-1,0,-1,0,1,1,0,0 -952,-1,0,-1,0,1,1,0,0 -953,-1,0,-1,0,1,1,0,0 -954,0,1,0,1,1,1,0,0 -955,0,1,0,1,1,1,0,0 -956,0,2,0,2,2,2,0,0 -957,-1,2,-1,2,3,3,0,0 -958,0,2,0,2,2,2,0,0 -959,-1,2,-1,2,3,3,0,0 -960,-1,2,-1,2,3,3,0,0 -961,-1,3,-1,3,4,4,0,0 -962,-1,3,-1,3,4,4,0,0 -963,-2,4,-2,4,6,6,0,0 -964,-2,4,-2,4,6,6,0,0 -965,-3,4,-3,4,7,7,0,0 -966,-3,3,-3,3,6,6,0,0 -967,-2,2,-2,2,4,4,0,0 -968,-3,2,-3,2,5,5,0,0 -969,-3,2,-3,2,5,5,0,0 -970,-3,2,-3,2,5,5,0,0 -971,-3,1,-3,1,4,4,0,0 -972,-3,2,-3,2,5,5,0,0 -973,-3,2,-3,2,5,5,0,0 -974,-4,2,-4,2,6,6,0,0 -975,-4,1,-4,1,5,5,0,0 -976,-4,1,-4,1,5,5,0,0 -977,-3,1,-3,1,4,4,0,0 -978,-3,2,-3,2,5,5,0,0 -979,-4,2,-4,2,6,6,0,0 -980,-5,1,-5,1,6,6,0,0 -981,-5,1,-5,1,6,6,0,0 -982,-4,0,-4,0,4,4,0,0 -983,-4,0,-4,0,4,4,0,0 -984,-4,-1,-4,-1,5,5,0,0 -985,-4,0,-4,0,4,4,0,0 -986,-4,-1,-4,-1,5,5,0,0 -987,-3,-1,-3,-1,4,4,0,0 -988,-2,-1,-2,-1,3,3,0,0 -989,-2,-1,-2,-1,3,3,0,0 -990,-1,-1,-1,-1,2,2,0,0 -991,-1,-1,-1,-1,2,2,0,0 -992,-1,0,-1,0,1,1,0,0 -993,-1,1,-1,1,2,2,0,0 -994,-1,1,-1,1,2,2,0,0 -995,-1,1,-1,1,2,2,0,0 -996,0,1,0,1,1,1,0,0 -997,0,1,0,1,1,1,0,0 -998,-1,0,-1,0,1,1,0,0 -999,-1,1,-1,1,2,2,0,0 -1000,0,1,0,1,1,1,0,0 -1001,0,2,0,2,2,2,0,0 -1002,0,2,0,2,2,2,0,0 -1003,0,3,0,3,3,3,0,0 -1004,0,3,0,3,3,3,0,0 -1005,0,3,0,3,3,3,0,0 -1006,0,3,0,3,3,3,0,0 -1007,0,3,0,3,3,3,0,0 -1008,0,4,0,4,4,4,0,0 -1009,0,4,0,4,4,4,0,0 -1010,-1,4,-1,4,5,5,0,0 -1011,-1,4,-1,4,5,5,0,0 -1012,-1,4,-1,4,5,5,0,0 -1013,-1,4,-1,4,5,5,0,0 -1014,-2,4,-2,4,6,6,0,0 -1015,-2,3,-2,3,5,5,0,0 -1016,-2,3,-2,3,5,5,0,0 -1017,-1,2,-1,2,3,3,0,0 -1018,0,2,0,2,2,2,0,0 -1019,0,2,0,2,2,2,0,0 -1020,0,2,0,2,2,2,0,0 -1021,0,3,0,3,3,3,0,0 -1022,-1,2,-1,2,3,3,0,0 -1023,-1,1,-1,1,2,2,0,0 diff --git a/9_Firmware/9_2_FPGA/tb/cosim/compare_mf_dc.csv b/9_Firmware/9_2_FPGA/tb/cosim/compare_mf_dc.csv deleted file mode 100644 index 51d2189..0000000 --- a/9_Firmware/9_2_FPGA/tb/cosim/compare_mf_dc.csv +++ /dev/null @@ -1,1025 +0,0 @@ -bin,py_i,py_q,rtl_i,rtl_q,py_mag,rtl_mag,diff_i,diff_q -0,32,0,32,0,32,32,0,0 -1,32,-1,32,-1,33,33,0,0 -2,32,-1,32,-1,33,33,0,0 -3,32,-1,32,-1,33,33,0,0 -4,32,-1,32,-1,33,33,0,0 -5,32,-1,32,-1,33,33,0,0 -6,32,-1,32,-1,33,33,0,0 -7,32,-1,32,-1,33,33,0,0 -8,32,-1,32,-1,33,33,0,0 -9,32,-1,32,-1,33,33,0,0 -10,32,-1,32,-1,33,33,0,0 -11,32,-1,32,-1,33,33,0,0 -12,32,-1,32,-1,33,33,0,0 -13,32,-1,32,-1,33,33,0,0 -14,32,-1,32,-1,33,33,0,0 -15,32,-1,32,-1,33,33,0,0 -16,32,-1,32,-1,33,33,0,0 -17,32,-1,32,-1,33,33,0,0 -18,32,-1,32,-1,33,33,0,0 -19,32,-1,32,-1,33,33,0,0 -20,32,-1,32,-1,33,33,0,0 -21,32,-1,32,-1,33,33,0,0 -22,32,-1,32,-1,33,33,0,0 -23,32,-1,32,-1,33,33,0,0 -24,32,-1,32,-1,33,33,0,0 -25,32,-1,32,-1,33,33,0,0 -26,32,-1,32,-1,33,33,0,0 -27,32,-1,32,-1,33,33,0,0 -28,32,-1,32,-1,33,33,0,0 -29,32,-1,32,-1,33,33,0,0 -30,32,-1,32,-1,33,33,0,0 -31,32,-1,32,-1,33,33,0,0 -32,32,-1,32,-1,33,33,0,0 -33,32,-1,32,-1,33,33,0,0 -34,32,-1,32,-1,33,33,0,0 -35,32,-1,32,-1,33,33,0,0 -36,32,-1,32,-1,33,33,0,0 -37,32,-1,32,-1,33,33,0,0 -38,32,-1,32,-1,33,33,0,0 -39,32,-1,32,-1,33,33,0,0 -40,32,-1,32,-1,33,33,0,0 -41,32,-1,32,-1,33,33,0,0 -42,32,-1,32,-1,33,33,0,0 -43,32,-1,32,-1,33,33,0,0 -44,32,0,32,0,32,32,0,0 -45,32,-1,32,-1,33,33,0,0 -46,32,-1,32,-1,33,33,0,0 -47,32,-1,32,-1,33,33,0,0 -48,32,0,32,0,32,32,0,0 -49,32,-1,32,-1,33,33,0,0 -50,32,-1,32,-1,33,33,0,0 -51,32,-1,32,-1,33,33,0,0 -52,32,0,32,0,32,32,0,0 -53,32,-1,32,-1,33,33,0,0 -54,32,-1,32,-1,33,33,0,0 -55,32,-1,32,-1,33,33,0,0 -56,32,0,32,0,32,32,0,0 -57,32,-1,32,-1,33,33,0,0 -58,32,-1,32,-1,33,33,0,0 -59,32,-1,32,-1,33,33,0,0 -60,32,0,32,0,32,32,0,0 -61,32,-1,32,-1,33,33,0,0 -62,32,0,32,0,32,32,0,0 -63,32,-1,32,-1,33,33,0,0 -64,32,0,32,0,32,32,0,0 -65,32,-1,32,-1,33,33,0,0 -66,32,-1,32,-1,33,33,0,0 -67,32,-1,32,-1,33,33,0,0 -68,32,0,32,0,32,32,0,0 -69,32,-1,32,-1,33,33,0,0 -70,32,-1,32,-1,33,33,0,0 -71,32,-1,32,-1,33,33,0,0 -72,32,0,32,0,32,32,0,0 -73,32,-1,32,-1,33,33,0,0 -74,32,-1,32,-1,33,33,0,0 -75,32,-1,32,-1,33,33,0,0 -76,32,0,32,0,32,32,0,0 -77,32,-1,32,-1,33,33,0,0 -78,32,-1,32,-1,33,33,0,0 -79,32,-1,32,-1,33,33,0,0 -80,32,0,32,0,32,32,0,0 -81,32,-1,32,-1,33,33,0,0 -82,32,-1,32,-1,33,33,0,0 -83,32,-1,32,-1,33,33,0,0 -84,32,-1,32,-1,33,33,0,0 -85,32,-1,32,-1,33,33,0,0 -86,32,-1,32,-1,33,33,0,0 -87,32,-1,32,-1,33,33,0,0 -88,32,0,32,0,32,32,0,0 -89,32,-1,32,-1,33,33,0,0 -90,32,-1,32,-1,33,33,0,0 -91,32,-1,32,-1,33,33,0,0 -92,32,0,32,0,32,32,0,0 -93,32,-1,32,-1,33,33,0,0 -94,32,0,32,0,32,32,0,0 -95,32,-1,32,-1,33,33,0,0 -96,32,0,32,0,32,32,0,0 -97,32,-1,32,-1,33,33,0,0 -98,32,-1,32,-1,33,33,0,0 -99,32,-1,32,-1,33,33,0,0 -100,32,0,32,0,32,32,0,0 -101,32,-1,32,-1,33,33,0,0 -102,32,-1,32,-1,33,33,0,0 -103,32,-1,32,-1,33,33,0,0 -104,32,0,32,0,32,32,0,0 -105,32,-1,32,-1,33,33,0,0 -106,32,-1,32,-1,33,33,0,0 -107,32,-1,32,-1,33,33,0,0 -108,32,0,32,0,32,32,0,0 -109,32,-1,32,-1,33,33,0,0 -110,32,-1,32,-1,33,33,0,0 -111,32,-1,32,-1,33,33,0,0 -112,32,0,32,0,32,32,0,0 -113,32,-1,32,-1,33,33,0,0 -114,32,-1,32,-1,33,33,0,0 -115,32,-1,32,-1,33,33,0,0 -116,32,0,32,0,32,32,0,0 -117,32,-1,32,-1,33,33,0,0 -118,32,-1,32,-1,33,33,0,0 -119,32,-1,32,-1,33,33,0,0 -120,32,0,32,0,32,32,0,0 -121,32,-1,32,-1,33,33,0,0 -122,32,-1,32,-1,33,33,0,0 -123,32,-1,32,-1,33,33,0,0 -124,32,0,32,0,32,32,0,0 -125,32,-1,32,-1,33,33,0,0 -126,32,-1,32,-1,33,33,0,0 -127,32,-1,32,-1,33,33,0,0 -128,32,0,32,0,32,32,0,0 -129,32,0,32,0,32,32,0,0 -130,32,0,32,0,32,32,0,0 -131,31,-1,31,-1,32,32,0,0 -132,32,0,32,0,32,32,0,0 -133,31,-1,31,-1,32,32,0,0 -134,32,-1,32,-1,33,33,0,0 -135,31,0,31,0,31,31,0,0 -136,32,0,32,0,32,32,0,0 -137,31,0,31,0,31,31,0,0 -138,32,-1,32,-1,33,33,0,0 -139,31,-1,31,-1,32,32,0,0 -140,32,0,32,0,32,32,0,0 -141,31,-1,31,-1,32,32,0,0 -142,32,-1,32,-1,33,33,0,0 -143,31,-1,31,-1,32,32,0,0 -144,32,0,32,0,32,32,0,0 -145,31,-1,31,-1,32,32,0,0 -146,32,-1,32,-1,33,33,0,0 -147,31,-1,31,-1,32,32,0,0 -148,32,-1,32,-1,33,33,0,0 -149,31,-1,31,-1,32,32,0,0 -150,32,-1,32,-1,33,33,0,0 -151,31,-1,31,-1,32,32,0,0 -152,32,0,32,0,32,32,0,0 -153,31,-1,31,-1,32,32,0,0 -154,32,-1,32,-1,33,33,0,0 -155,31,-1,31,-1,32,32,0,0 -156,32,-1,32,-1,33,33,0,0 -157,31,-1,31,-1,32,32,0,0 -158,32,-1,32,-1,33,33,0,0 -159,31,-1,31,-1,32,32,0,0 -160,32,0,32,0,32,32,0,0 -161,31,-1,31,-1,32,32,0,0 -162,32,-1,32,-1,33,33,0,0 -163,31,-1,31,-1,32,32,0,0 -164,32,0,32,0,32,32,0,0 -165,31,-1,31,-1,32,32,0,0 -166,32,-1,32,-1,33,33,0,0 -167,31,-1,31,-1,32,32,0,0 -168,31,0,31,0,31,31,0,0 -169,31,0,31,0,31,31,0,0 -170,32,-1,32,-1,33,33,0,0 -171,31,-1,31,-1,32,32,0,0 -172,32,0,32,0,32,32,0,0 -173,31,-1,31,-1,32,32,0,0 -174,32,-1,32,-1,33,33,0,0 -175,31,-1,31,-1,32,32,0,0 -176,32,0,32,0,32,32,0,0 -177,31,-1,31,-1,32,32,0,0 -178,31,-1,31,-1,32,32,0,0 -179,31,-1,31,-1,32,32,0,0 -180,32,-1,32,-1,33,33,0,0 -181,31,-1,31,-1,32,32,0,0 -182,32,-1,32,-1,33,33,0,0 -183,31,-1,31,-1,32,32,0,0 -184,32,0,32,0,32,32,0,0 -185,31,-1,31,-1,32,32,0,0 -186,31,-1,31,-1,32,32,0,0 -187,31,-1,31,-1,32,32,0,0 -188,32,-1,32,-1,33,33,0,0 -189,31,-1,31,-1,32,32,0,0 -190,32,-1,32,-1,33,33,0,0 -191,31,-1,31,-1,32,32,0,0 -192,31,0,31,0,31,31,0,0 -193,31,0,31,0,31,31,0,0 -194,31,-1,31,-1,32,32,0,0 -195,31,0,31,0,31,31,0,0 -196,31,0,31,0,31,31,0,0 -197,31,-1,31,-1,32,32,0,0 -198,31,-1,31,-1,32,32,0,0 -199,31,0,31,0,31,31,0,0 -200,31,0,31,0,31,31,0,0 -201,31,0,31,0,31,31,0,0 -202,31,-1,31,-1,32,32,0,0 -203,31,0,31,0,31,31,0,0 -204,31,0,31,0,31,31,0,0 -205,31,0,31,0,31,31,0,0 -206,31,-1,31,-1,32,32,0,0 -207,31,0,31,0,31,31,0,0 -208,31,0,31,0,31,31,0,0 -209,31,0,31,0,31,31,0,0 -210,31,-1,31,-1,32,32,0,0 -211,31,-1,31,-1,32,32,0,0 -212,31,-1,31,-1,32,32,0,0 -213,31,0,31,0,31,31,0,0 -214,31,-1,31,-1,32,32,0,0 -215,31,0,31,0,31,31,0,0 -216,31,0,31,0,31,31,0,0 -217,31,0,31,0,31,31,0,0 -218,31,-1,31,-1,32,32,0,0 -219,31,-1,31,-1,32,32,0,0 -220,31,-1,31,-1,32,32,0,0 -221,31,-1,31,-1,32,32,0,0 -222,31,-1,31,-1,32,32,0,0 -223,31,-1,31,-1,32,32,0,0 -224,31,0,31,0,31,31,0,0 -225,31,0,31,0,31,31,0,0 -226,31,-1,31,-1,32,32,0,0 -227,31,0,31,0,31,31,0,0 -228,31,-1,31,-1,32,32,0,0 -229,31,0,31,0,31,31,0,0 -230,31,-1,31,-1,32,32,0,0 -231,31,0,31,0,31,31,0,0 -232,31,0,31,0,31,31,0,0 -233,31,0,31,0,31,31,0,0 -234,31,-1,31,-1,32,32,0,0 -235,31,0,31,0,31,31,0,0 -236,31,-1,31,-1,32,32,0,0 -237,31,0,31,0,31,31,0,0 -238,31,-1,31,-1,32,32,0,0 -239,31,-1,31,-1,32,32,0,0 -240,31,0,31,0,31,31,0,0 -241,31,-1,31,-1,32,32,0,0 -242,31,-1,31,-1,32,32,0,0 -243,31,-1,31,-1,32,32,0,0 -244,31,-1,31,-1,32,32,0,0 -245,31,-1,31,-1,32,32,0,0 -246,31,-1,31,-1,32,32,0,0 -247,31,-1,31,-1,32,32,0,0 -248,31,-1,31,-1,32,32,0,0 -249,31,0,31,0,31,31,0,0 -250,31,-1,31,-1,32,32,0,0 -251,31,0,31,0,31,31,0,0 -252,31,-1,31,-1,32,32,0,0 -253,31,0,31,0,31,31,0,0 -254,31,-1,31,-1,32,32,0,0 -255,31,-1,31,-1,32,32,0,0 -256,31,0,31,0,31,31,0,0 -257,31,0,31,0,31,31,0,0 -258,31,0,31,0,31,31,0,0 -259,31,0,31,0,31,31,0,0 -260,31,0,31,0,31,31,0,0 -261,31,0,31,0,31,31,0,0 -262,31,-1,31,-1,32,32,0,0 -263,31,0,31,0,31,31,0,0 -264,31,0,31,0,31,31,0,0 -265,31,0,31,0,31,31,0,0 -266,31,-1,31,-1,32,32,0,0 -267,31,0,31,0,31,31,0,0 -268,31,0,31,0,31,31,0,0 -269,31,0,31,0,31,31,0,0 -270,31,-1,31,-1,32,32,0,0 -271,31,0,31,0,31,31,0,0 -272,31,0,31,0,31,31,0,0 -273,31,0,31,0,31,31,0,0 -274,31,0,31,0,31,31,0,0 -275,31,0,31,0,31,31,0,0 -276,31,0,31,0,31,31,0,0 -277,31,0,31,0,31,31,0,0 -278,31,-1,31,-1,32,32,0,0 -279,31,0,31,0,31,31,0,0 -280,31,0,31,0,31,31,0,0 -281,31,0,31,0,31,31,0,0 -282,31,0,31,0,31,31,0,0 -283,31,0,31,0,31,31,0,0 -284,31,-1,31,-1,32,32,0,0 -285,31,0,31,0,31,31,0,0 -286,31,-1,31,-1,32,32,0,0 -287,31,0,31,0,31,31,0,0 -288,31,0,31,0,31,31,0,0 -289,31,0,31,0,31,31,0,0 -290,31,0,31,0,31,31,0,0 -291,31,0,31,0,31,31,0,0 -292,31,0,31,0,31,31,0,0 -293,31,0,31,0,31,31,0,0 -294,31,-1,31,-1,32,32,0,0 -295,31,0,31,0,31,31,0,0 -296,31,0,31,0,31,31,0,0 -297,31,0,31,0,31,31,0,0 -298,31,-1,31,-1,32,32,0,0 -299,31,0,31,0,31,31,0,0 -300,31,-1,31,-1,32,32,0,0 -301,31,0,31,0,31,31,0,0 -302,31,-1,31,-1,32,32,0,0 -303,31,0,31,0,31,31,0,0 -304,31,0,31,0,31,31,0,0 -305,31,0,31,0,31,31,0,0 -306,31,-1,31,-1,32,32,0,0 -307,31,0,31,0,31,31,0,0 -308,31,-1,31,-1,32,32,0,0 -309,31,0,31,0,31,31,0,0 -310,31,-1,31,-1,32,32,0,0 -311,31,0,31,0,31,31,0,0 -312,31,0,31,0,31,31,0,0 -313,31,0,31,0,31,31,0,0 -314,31,-1,31,-1,32,32,0,0 -315,31,0,31,0,31,31,0,0 -316,31,-1,31,-1,32,32,0,0 -317,31,0,31,0,31,31,0,0 -318,31,-1,31,-1,32,32,0,0 -319,31,0,31,0,31,31,0,0 -320,31,0,31,0,31,31,0,0 -321,31,0,31,0,31,31,0,0 -322,31,0,31,0,31,31,0,0 -323,31,0,31,0,31,31,0,0 -324,31,0,31,0,31,31,0,0 -325,31,0,31,0,31,31,0,0 -326,31,-1,31,-1,32,32,0,0 -327,31,0,31,0,31,31,0,0 -328,31,0,31,0,31,31,0,0 -329,31,0,31,0,31,31,0,0 -330,31,-1,31,-1,32,32,0,0 -331,31,0,31,0,31,31,0,0 -332,31,0,31,0,31,31,0,0 -333,31,0,31,0,31,31,0,0 -334,31,-1,31,-1,32,32,0,0 -335,31,0,31,0,31,31,0,0 -336,31,0,31,0,31,31,0,0 -337,31,0,31,0,31,31,0,0 -338,31,0,31,0,31,31,0,0 -339,31,-1,31,-1,32,32,0,0 -340,31,-1,31,-1,32,32,0,0 -341,31,-1,31,-1,32,32,0,0 -342,31,-1,31,-1,32,32,0,0 -343,31,0,31,0,31,31,0,0 -344,31,0,31,0,31,31,0,0 -345,31,0,31,0,31,31,0,0 -346,31,-1,31,-1,32,32,0,0 -347,31,0,31,0,31,31,0,0 -348,31,-1,31,-1,32,32,0,0 -349,31,0,31,0,31,31,0,0 -350,31,-1,31,-1,32,32,0,0 -351,31,0,31,0,31,31,0,0 -352,31,0,31,0,31,31,0,0 -353,31,0,31,0,31,31,0,0 -354,31,0,31,0,31,31,0,0 -355,31,0,31,0,31,31,0,0 -356,31,0,31,0,31,31,0,0 -357,31,-1,31,-1,32,32,0,0 -358,31,-1,31,-1,32,32,0,0 -359,31,-1,31,-1,32,32,0,0 -360,31,0,31,0,31,31,0,0 -361,31,0,31,0,31,31,0,0 -362,31,-1,31,-1,32,32,0,0 -363,31,0,31,0,31,31,0,0 -364,31,0,31,0,31,31,0,0 -365,31,0,31,0,31,31,0,0 -366,31,-1,31,-1,32,32,0,0 -367,31,-1,31,-1,32,32,0,0 -368,31,0,31,0,31,31,0,0 -369,31,0,31,0,31,31,0,0 -370,31,-1,31,-1,32,32,0,0 -371,31,0,31,0,31,31,0,0 -372,31,-1,31,-1,32,32,0,0 -373,31,-1,31,-1,32,32,0,0 -374,31,-1,31,-1,32,32,0,0 -375,31,-1,31,-1,32,32,0,0 -376,31,0,31,0,31,31,0,0 -377,31,0,31,0,31,31,0,0 -378,31,-1,31,-1,32,32,0,0 -379,31,0,31,0,31,31,0,0 -380,31,-1,31,-1,32,32,0,0 -381,31,0,31,0,31,31,0,0 -382,31,-1,31,-1,32,32,0,0 -383,31,-1,31,-1,32,32,0,0 -384,31,0,31,0,31,31,0,0 -385,31,0,31,0,31,31,0,0 -386,31,0,31,0,31,31,0,0 -387,31,0,31,0,31,31,0,0 -388,31,0,31,0,31,31,0,0 -389,31,0,31,0,31,31,0,0 -390,31,0,31,0,31,31,0,0 -391,31,-1,31,-1,32,32,0,0 -392,31,0,31,0,31,31,0,0 -393,31,0,31,0,31,31,0,0 -394,31,0,31,0,31,31,0,0 -395,31,0,31,0,31,31,0,0 -396,31,0,31,0,31,31,0,0 -397,31,0,31,0,31,31,0,0 -398,31,0,31,0,31,31,0,0 -399,31,-1,31,-1,32,32,0,0 -400,31,0,31,0,31,31,0,0 -401,31,0,31,0,31,31,0,0 -402,31,0,31,0,31,31,0,0 -403,31,-1,31,-1,32,32,0,0 -404,31,0,31,0,31,31,0,0 -405,31,-1,31,-1,32,32,0,0 -406,31,0,31,0,31,31,0,0 -407,31,0,31,0,31,31,0,0 -408,31,0,31,0,31,31,0,0 -409,31,0,31,0,31,31,0,0 -410,31,0,31,0,31,31,0,0 -411,31,0,31,0,31,31,0,0 -412,31,0,31,0,31,31,0,0 -413,31,-1,31,-1,32,32,0,0 -414,31,-1,31,-1,32,32,0,0 -415,31,-1,31,-1,32,32,0,0 -416,31,0,31,0,31,31,0,0 -417,31,0,31,0,31,31,0,0 -418,31,0,31,0,31,31,0,0 -419,31,0,31,0,31,31,0,0 -420,31,0,31,0,31,31,0,0 -421,31,0,31,0,31,31,0,0 -422,31,0,31,0,31,31,0,0 -423,31,-1,31,-1,32,32,0,0 -424,31,0,31,0,31,31,0,0 -425,31,0,31,0,31,31,0,0 -426,31,0,31,0,31,31,0,0 -427,31,-1,31,-1,32,32,0,0 -428,31,0,31,0,31,31,0,0 -429,31,0,31,0,31,31,0,0 -430,31,0,31,0,31,31,0,0 -431,31,-1,31,-1,32,32,0,0 -432,31,0,31,0,31,31,0,0 -433,31,0,31,0,31,31,0,0 -434,31,0,31,0,31,31,0,0 -435,31,-1,31,-1,32,32,0,0 -436,31,0,31,0,31,31,0,0 -437,31,-1,31,-1,32,32,0,0 -438,31,0,31,0,31,31,0,0 -439,31,-1,31,-1,32,32,0,0 -440,31,0,31,0,31,31,0,0 -441,31,0,31,0,31,31,0,0 -442,31,0,31,0,31,31,0,0 -443,31,-1,31,-1,32,32,0,0 -444,31,-1,31,-1,32,32,0,0 -445,31,-1,31,-1,32,32,0,0 -446,31,-1,31,-1,32,32,0,0 -447,31,-1,31,-1,32,32,0,0 -448,31,0,31,0,31,31,0,0 -449,31,0,31,0,31,31,0,0 -450,31,0,31,0,31,31,0,0 -451,31,0,31,0,31,31,0,0 -452,31,0,31,0,31,31,0,0 -453,31,0,31,0,31,31,0,0 -454,31,0,31,0,31,31,0,0 -455,31,0,31,0,31,31,0,0 -456,31,0,31,0,31,31,0,0 -457,31,0,31,0,31,31,0,0 -458,31,0,31,0,31,31,0,0 -459,31,0,31,0,31,31,0,0 -460,31,0,31,0,31,31,0,0 -461,31,0,31,0,31,31,0,0 -462,31,0,31,0,31,31,0,0 -463,31,-1,31,-1,32,32,0,0 -464,31,0,31,0,31,31,0,0 -465,31,0,31,0,31,31,0,0 -466,31,0,31,0,31,31,0,0 -467,31,0,31,0,31,31,0,0 -468,31,0,31,0,31,31,0,0 -469,31,-1,31,-1,32,32,0,0 -470,31,0,31,0,31,31,0,0 -471,31,0,31,0,31,31,0,0 -472,31,0,31,0,31,31,0,0 -473,31,0,31,0,31,31,0,0 -474,31,0,31,0,31,31,0,0 -475,31,0,31,0,31,31,0,0 -476,31,0,31,0,31,31,0,0 -477,31,0,31,0,31,31,0,0 -478,31,-1,31,-1,32,32,0,0 -479,31,-1,31,-1,32,32,0,0 -480,31,0,31,0,31,31,0,0 -481,31,0,31,0,31,31,0,0 -482,31,0,31,0,31,31,0,0 -483,31,0,31,0,31,31,0,0 -484,31,0,31,0,31,31,0,0 -485,31,0,31,0,31,31,0,0 -486,31,0,31,0,31,31,0,0 -487,31,0,31,0,31,31,0,0 -488,31,0,31,0,31,31,0,0 -489,31,0,31,0,31,31,0,0 -490,31,0,31,0,31,31,0,0 -491,31,0,31,0,31,31,0,0 -492,31,-1,31,-1,32,32,0,0 -493,31,0,31,0,31,31,0,0 -494,31,0,31,0,31,31,0,0 -495,31,-1,31,-1,32,32,0,0 -496,31,0,31,0,31,31,0,0 -497,31,0,31,0,31,31,0,0 -498,31,0,31,0,31,31,0,0 -499,31,0,31,0,31,31,0,0 -500,31,0,31,0,31,31,0,0 -501,31,0,31,0,31,31,0,0 -502,31,0,31,0,31,31,0,0 -503,31,0,31,0,31,31,0,0 -504,31,-1,31,-1,32,32,0,0 -505,31,0,31,0,31,31,0,0 -506,31,0,31,0,31,31,0,0 -507,31,0,31,0,31,31,0,0 -508,31,-1,31,-1,32,32,0,0 -509,31,0,31,0,31,31,0,0 -510,31,-1,31,-1,32,32,0,0 -511,31,-1,31,-1,32,32,0,0 -512,31,0,31,0,31,31,0,0 -513,31,0,31,0,31,31,0,0 -514,31,0,31,0,31,31,0,0 -515,31,0,31,0,31,31,0,0 -516,31,0,31,0,31,31,0,0 -517,31,0,31,0,31,31,0,0 -518,31,0,31,0,31,31,0,0 -519,31,0,31,0,31,31,0,0 -520,31,0,31,0,31,31,0,0 -521,31,0,31,0,31,31,0,0 -522,31,0,31,0,31,31,0,0 -523,31,0,31,0,31,31,0,0 -524,31,0,31,0,31,31,0,0 -525,31,0,31,0,31,31,0,0 -526,31,0,31,0,31,31,0,0 -527,31,0,31,0,31,31,0,0 -528,31,0,31,0,31,31,0,0 -529,31,0,31,0,31,31,0,0 -530,31,0,31,0,31,31,0,0 -531,31,0,31,0,31,31,0,0 -532,31,0,31,0,31,31,0,0 -533,31,0,31,0,31,31,0,0 -534,31,0,31,0,31,31,0,0 -535,31,0,31,0,31,31,0,0 -536,31,0,31,0,31,31,0,0 -537,31,0,31,0,31,31,0,0 -538,31,0,31,0,31,31,0,0 -539,31,0,31,0,31,31,0,0 -540,31,0,31,0,31,31,0,0 -541,31,0,31,0,31,31,0,0 -542,31,0,31,0,31,31,0,0 -543,31,0,31,0,31,31,0,0 -544,31,0,31,0,31,31,0,0 -545,31,0,31,0,31,31,0,0 -546,31,0,31,0,31,31,0,0 -547,31,0,31,0,31,31,0,0 -548,31,0,31,0,31,31,0,0 -549,31,0,31,0,31,31,0,0 -550,31,0,31,0,31,31,0,0 -551,31,0,31,0,31,31,0,0 -552,31,0,31,0,31,31,0,0 -553,31,0,31,0,31,31,0,0 -554,31,0,31,0,31,31,0,0 -555,31,0,31,0,31,31,0,0 -556,31,0,31,0,31,31,0,0 -557,31,0,31,0,31,31,0,0 -558,31,0,31,0,31,31,0,0 -559,31,0,31,0,31,31,0,0 -560,31,0,31,0,31,31,0,0 -561,31,0,31,0,31,31,0,0 -562,31,0,31,0,31,31,0,0 -563,31,0,31,0,31,31,0,0 -564,31,0,31,0,31,31,0,0 -565,31,0,31,0,31,31,0,0 -566,31,0,31,0,31,31,0,0 -567,31,0,31,0,31,31,0,0 -568,31,0,31,0,31,31,0,0 -569,31,0,31,0,31,31,0,0 -570,31,0,31,0,31,31,0,0 -571,31,0,31,0,31,31,0,0 -572,31,0,31,0,31,31,0,0 -573,31,0,31,0,31,31,0,0 -574,31,0,31,0,31,31,0,0 -575,31,0,31,0,31,31,0,0 -576,31,-1,31,-1,32,32,0,0 -577,31,0,31,0,31,31,0,0 -578,31,0,31,0,31,31,0,0 -579,31,0,31,0,31,31,0,0 -580,31,0,31,0,31,31,0,0 -581,31,0,31,0,31,31,0,0 -582,31,0,31,0,31,31,0,0 -583,31,0,31,0,31,31,0,0 -584,31,0,31,0,31,31,0,0 -585,31,0,31,0,31,31,0,0 -586,31,0,31,0,31,31,0,0 -587,31,0,31,0,31,31,0,0 -588,31,0,31,0,31,31,0,0 -589,31,0,31,0,31,31,0,0 -590,31,0,31,0,31,31,0,0 -591,31,0,31,0,31,31,0,0 -592,31,0,31,0,31,31,0,0 -593,31,0,31,0,31,31,0,0 -594,31,0,31,0,31,31,0,0 -595,31,0,31,0,31,31,0,0 -596,31,0,31,0,31,31,0,0 -597,31,0,31,0,31,31,0,0 -598,31,0,31,0,31,31,0,0 -599,31,0,31,0,31,31,0,0 -600,31,0,31,0,31,31,0,0 -601,31,0,31,0,31,31,0,0 -602,31,0,31,0,31,31,0,0 -603,31,0,31,0,31,31,0,0 -604,31,0,31,0,31,31,0,0 -605,31,0,31,0,31,31,0,0 -606,31,0,31,0,31,31,0,0 -607,31,0,31,0,31,31,0,0 -608,31,-1,31,-1,32,32,0,0 -609,31,0,31,0,31,31,0,0 -610,31,0,31,0,31,31,0,0 -611,31,0,31,0,31,31,0,0 -612,31,0,31,0,31,31,0,0 -613,31,0,31,0,31,31,0,0 -614,31,0,31,0,31,31,0,0 -615,31,0,31,0,31,31,0,0 -616,31,0,31,0,31,31,0,0 -617,31,0,31,0,31,31,0,0 -618,31,0,31,0,31,31,0,0 -619,31,0,31,0,31,31,0,0 -620,31,0,31,0,31,31,0,0 -621,31,0,31,0,31,31,0,0 -622,31,0,31,0,31,31,0,0 -623,31,0,31,0,31,31,0,0 -624,31,0,31,0,31,31,0,0 -625,31,0,31,0,31,31,0,0 -626,31,0,31,0,31,31,0,0 -627,31,0,31,0,31,31,0,0 -628,31,0,31,0,31,31,0,0 -629,31,0,31,0,31,31,0,0 -630,31,0,31,0,31,31,0,0 -631,31,0,31,0,31,31,0,0 -632,31,0,31,0,31,31,0,0 -633,31,0,31,0,31,31,0,0 -634,31,0,31,0,31,31,0,0 -635,31,0,31,0,31,31,0,0 -636,31,0,31,0,31,31,0,0 -637,31,0,31,0,31,31,0,0 -638,31,0,31,0,31,31,0,0 -639,31,0,31,0,31,31,0,0 -640,31,-1,31,-1,32,32,0,0 -641,31,0,31,0,31,31,0,0 -642,31,0,31,0,31,31,0,0 -643,31,0,31,0,31,31,0,0 -644,31,0,31,0,31,31,0,0 -645,31,0,31,0,31,31,0,0 -646,31,0,31,0,31,31,0,0 -647,31,0,31,0,31,31,0,0 -648,31,0,31,0,31,31,0,0 -649,31,0,31,0,31,31,0,0 -650,31,0,31,0,31,31,0,0 -651,31,0,31,0,31,31,0,0 -652,31,0,31,0,31,31,0,0 -653,31,0,31,0,31,31,0,0 -654,31,0,31,0,31,31,0,0 -655,31,0,31,0,31,31,0,0 -656,31,0,31,0,31,31,0,0 -657,31,0,31,0,31,31,0,0 -658,31,0,31,0,31,31,0,0 -659,31,0,31,0,31,31,0,0 -660,31,0,31,0,31,31,0,0 -661,31,0,31,0,31,31,0,0 -662,31,0,31,0,31,31,0,0 -663,31,0,31,0,31,31,0,0 -664,31,0,31,0,31,31,0,0 -665,31,0,31,0,31,31,0,0 -666,31,0,31,0,31,31,0,0 -667,31,0,31,0,31,31,0,0 -668,31,0,31,0,31,31,0,0 -669,31,0,31,0,31,31,0,0 -670,31,0,31,0,31,31,0,0 -671,31,0,31,0,31,31,0,0 -672,31,-1,31,-1,32,32,0,0 -673,31,0,31,0,31,31,0,0 -674,31,0,31,0,31,31,0,0 -675,31,0,31,0,31,31,0,0 -676,31,0,31,0,31,31,0,0 -677,31,0,31,0,31,31,0,0 -678,31,0,31,0,31,31,0,0 -679,31,0,31,0,31,31,0,0 -680,31,0,31,0,31,31,0,0 -681,31,0,31,0,31,31,0,0 -682,31,0,31,0,31,31,0,0 -683,31,0,31,0,31,31,0,0 -684,31,0,31,0,31,31,0,0 -685,31,0,31,0,31,31,0,0 -686,31,0,31,0,31,31,0,0 -687,31,0,31,0,31,31,0,0 -688,31,0,31,0,31,31,0,0 -689,31,0,31,0,31,31,0,0 -690,31,0,31,0,31,31,0,0 -691,31,0,31,0,31,31,0,0 -692,31,0,31,0,31,31,0,0 -693,31,0,31,0,31,31,0,0 -694,31,0,31,0,31,31,0,0 -695,31,0,31,0,31,31,0,0 -696,31,0,31,0,31,31,0,0 -697,31,0,31,0,31,31,0,0 -698,31,0,31,0,31,31,0,0 -699,31,0,31,0,31,31,0,0 -700,31,0,31,0,31,31,0,0 -701,31,-1,31,-1,32,32,0,0 -702,31,0,31,0,31,31,0,0 -703,31,-1,31,-1,32,32,0,0 -704,31,-1,31,-1,32,32,0,0 -705,31,0,31,0,31,31,0,0 -706,31,0,31,0,31,31,0,0 -707,31,0,31,0,31,31,0,0 -708,31,0,31,0,31,31,0,0 -709,31,0,31,0,31,31,0,0 -710,31,0,31,0,31,31,0,0 -711,31,0,31,0,31,31,0,0 -712,31,0,31,0,31,31,0,0 -713,31,0,31,0,31,31,0,0 -714,31,0,31,0,31,31,0,0 -715,31,0,31,0,31,31,0,0 -716,31,0,31,0,31,31,0,0 -717,31,0,31,0,31,31,0,0 -718,31,0,31,0,31,31,0,0 -719,31,0,31,0,31,31,0,0 -720,31,0,31,0,31,31,0,0 -721,31,0,31,0,31,31,0,0 -722,31,0,31,0,31,31,0,0 -723,31,0,31,0,31,31,0,0 -724,31,0,31,0,31,31,0,0 -725,31,0,31,0,31,31,0,0 -726,31,0,31,0,31,31,0,0 -727,31,-1,31,-1,32,32,0,0 -728,31,0,31,0,31,31,0,0 -729,31,0,31,0,31,31,0,0 -730,31,0,31,0,31,31,0,0 -731,31,-1,31,-1,32,32,0,0 -732,31,0,31,0,31,31,0,0 -733,31,-1,31,-1,32,32,0,0 -734,31,0,31,0,31,31,0,0 -735,31,-1,31,-1,32,32,0,0 -736,31,-1,31,-1,32,32,0,0 -737,31,0,31,0,31,31,0,0 -738,31,0,31,0,31,31,0,0 -739,31,0,31,0,31,31,0,0 -740,31,0,31,0,31,31,0,0 -741,31,0,31,0,31,31,0,0 -742,31,0,31,0,31,31,0,0 -743,31,0,31,0,31,31,0,0 -744,31,0,31,0,31,31,0,0 -745,31,0,31,0,31,31,0,0 -746,31,0,31,0,31,31,0,0 -747,31,0,31,0,31,31,0,0 -748,31,0,31,0,31,31,0,0 -749,31,0,31,0,31,31,0,0 -750,31,0,31,0,31,31,0,0 -751,31,-1,31,-1,32,32,0,0 -752,31,0,31,0,31,31,0,0 -753,31,-1,31,-1,32,32,0,0 -754,31,0,31,0,31,31,0,0 -755,31,-1,31,-1,32,32,0,0 -756,31,0,31,0,31,31,0,0 -757,31,0,31,0,31,31,0,0 -758,31,0,31,0,31,31,0,0 -759,31,-1,31,-1,32,32,0,0 -760,31,0,31,0,31,31,0,0 -761,31,-1,31,-1,32,32,0,0 -762,31,0,31,0,31,31,0,0 -763,31,-1,31,-1,32,32,0,0 -764,31,0,31,0,31,31,0,0 -765,31,-1,31,-1,32,32,0,0 -766,31,0,31,0,31,31,0,0 -767,31,0,31,0,31,31,0,0 -768,31,-1,31,-1,32,32,0,0 -769,31,0,31,0,31,31,0,0 -770,32,0,32,0,32,32,0,0 -771,31,0,31,0,31,31,0,0 -772,32,-1,32,-1,33,33,0,0 -773,31,0,31,0,31,31,0,0 -774,32,0,32,0,32,32,0,0 -775,31,0,31,0,31,31,0,0 -776,32,-1,32,-1,33,33,0,0 -777,32,0,32,0,32,32,0,0 -778,32,0,32,0,32,32,0,0 -779,31,0,31,0,31,31,0,0 -780,32,-1,32,-1,33,33,0,0 -781,31,0,31,0,31,31,0,0 -782,32,0,32,0,32,32,0,0 -783,31,0,31,0,31,31,0,0 -784,32,-1,32,-1,33,33,0,0 -785,32,0,32,0,32,32,0,0 -786,32,0,32,0,32,32,0,0 -787,31,0,31,0,31,31,0,0 -788,32,0,32,0,32,32,0,0 -789,31,0,31,0,31,31,0,0 -790,32,0,32,0,32,32,0,0 -791,31,0,31,0,31,31,0,0 -792,32,-1,32,-1,33,33,0,0 -793,31,0,31,0,31,31,0,0 -794,32,0,32,0,32,32,0,0 -795,31,0,31,0,31,31,0,0 -796,32,0,32,0,32,32,0,0 -797,31,0,31,0,31,31,0,0 -798,32,0,32,0,32,32,0,0 -799,31,0,31,0,31,31,0,0 -800,32,-1,32,-1,33,33,0,0 -801,32,0,32,0,32,32,0,0 -802,32,0,32,0,32,32,0,0 -803,32,0,32,0,32,32,0,0 -804,32,-1,32,-1,33,33,0,0 -805,32,0,32,0,32,32,0,0 -806,32,0,32,0,32,32,0,0 -807,31,0,31,0,31,31,0,0 -808,32,-1,32,-1,33,33,0,0 -809,32,0,32,0,32,32,0,0 -810,32,0,32,0,32,32,0,0 -811,31,0,31,0,31,31,0,0 -812,32,-1,32,-1,33,33,0,0 -813,31,0,31,0,31,31,0,0 -814,32,0,32,0,32,32,0,0 -815,31,0,31,0,31,31,0,0 -816,32,-1,32,-1,33,33,0,0 -817,32,0,32,0,32,32,0,0 -818,32,-1,32,-1,33,33,0,0 -819,31,0,31,0,31,31,0,0 -820,32,-1,32,-1,33,33,0,0 -821,32,0,32,0,32,32,0,0 -822,32,0,32,0,32,32,0,0 -823,31,0,31,0,31,31,0,0 -824,32,-1,32,-1,33,33,0,0 -825,31,0,31,0,31,31,0,0 -826,32,0,32,0,32,32,0,0 -827,31,0,31,0,31,31,0,0 -828,32,0,32,0,32,32,0,0 -829,31,0,31,0,31,31,0,0 -830,32,0,32,0,32,32,0,0 -831,31,0,31,0,31,31,0,0 -832,32,-1,32,-1,33,33,0,0 -833,32,-1,32,-1,33,33,0,0 -834,32,-1,32,-1,33,33,0,0 -835,32,0,32,0,32,32,0,0 -836,32,-1,32,-1,33,33,0,0 -837,32,0,32,0,32,32,0,0 -838,32,-1,32,-1,33,33,0,0 -839,32,0,32,0,32,32,0,0 -840,32,-1,32,-1,33,33,0,0 -841,32,0,32,0,32,32,0,0 -842,32,-1,32,-1,33,33,0,0 -843,32,0,32,0,32,32,0,0 -844,32,-1,32,-1,33,33,0,0 -845,32,0,32,0,32,32,0,0 -846,32,-1,32,-1,33,33,0,0 -847,32,0,32,0,32,32,0,0 -848,32,-1,32,-1,33,33,0,0 -849,32,0,32,0,32,32,0,0 -850,32,-1,32,-1,33,33,0,0 -851,32,0,32,0,32,32,0,0 -852,32,-1,32,-1,33,33,0,0 -853,32,0,32,0,32,32,0,0 -854,32,-1,32,-1,33,33,0,0 -855,32,0,32,0,32,32,0,0 -856,32,-1,32,-1,33,33,0,0 -857,32,0,32,0,32,32,0,0 -858,32,-1,32,-1,33,33,0,0 -859,32,0,32,0,32,32,0,0 -860,32,0,32,0,32,32,0,0 -861,32,0,32,0,32,32,0,0 -862,32,0,32,0,32,32,0,0 -863,32,0,32,0,32,32,0,0 -864,32,-1,32,-1,33,33,0,0 -865,32,0,32,0,32,32,0,0 -866,32,-1,32,-1,33,33,0,0 -867,32,0,32,0,32,32,0,0 -868,32,-1,32,-1,33,33,0,0 -869,32,0,32,0,32,32,0,0 -870,32,-1,32,-1,33,33,0,0 -871,32,0,32,0,32,32,0,0 -872,32,-1,32,-1,33,33,0,0 -873,32,0,32,0,32,32,0,0 -874,32,-1,32,-1,33,33,0,0 -875,32,0,32,0,32,32,0,0 -876,32,-1,32,-1,33,33,0,0 -877,32,0,32,0,32,32,0,0 -878,32,0,32,0,32,32,0,0 -879,32,0,32,0,32,32,0,0 -880,32,-1,32,-1,33,33,0,0 -881,32,0,32,0,32,32,0,0 -882,32,-1,32,-1,33,33,0,0 -883,32,0,32,0,32,32,0,0 -884,32,0,32,0,32,32,0,0 -885,32,0,32,0,32,32,0,0 -886,32,0,32,0,32,32,0,0 -887,32,0,32,0,32,32,0,0 -888,32,-1,32,-1,33,33,0,0 -889,32,0,32,0,32,32,0,0 -890,32,-1,32,-1,33,33,0,0 -891,32,0,32,0,32,32,0,0 -892,32,0,32,0,32,32,0,0 -893,32,0,32,0,32,32,0,0 -894,32,0,32,0,32,32,0,0 -895,32,0,32,0,32,32,0,0 -896,32,-1,32,-1,33,33,0,0 -897,32,-1,32,-1,33,33,0,0 -898,32,-1,32,-1,33,33,0,0 -899,32,-1,32,-1,33,33,0,0 -900,32,-1,32,-1,33,33,0,0 -901,32,-1,32,-1,33,33,0,0 -902,32,-1,32,-1,33,33,0,0 -903,32,0,32,0,32,32,0,0 -904,32,-1,32,-1,33,33,0,0 -905,32,-1,32,-1,33,33,0,0 -906,32,-1,32,-1,33,33,0,0 -907,32,0,32,0,32,32,0,0 -908,32,-1,32,-1,33,33,0,0 -909,32,-1,32,-1,33,33,0,0 -910,32,-1,32,-1,33,33,0,0 -911,32,0,32,0,32,32,0,0 -912,32,-1,32,-1,33,33,0,0 -913,32,-1,32,-1,33,33,0,0 -914,32,-1,32,-1,33,33,0,0 -915,32,0,32,0,32,32,0,0 -916,32,-1,32,-1,33,33,0,0 -917,32,0,32,0,32,32,0,0 -918,32,-1,32,-1,33,33,0,0 -919,32,0,32,0,32,32,0,0 -920,32,-1,32,-1,33,33,0,0 -921,32,0,32,0,32,32,0,0 -922,32,-1,32,-1,33,33,0,0 -923,32,0,32,0,32,32,0,0 -924,32,-1,32,-1,33,33,0,0 -925,32,0,32,0,32,32,0,0 -926,32,-1,32,-1,33,33,0,0 -927,32,0,32,0,32,32,0,0 -928,32,-1,32,-1,33,33,0,0 -929,32,-1,32,-1,33,33,0,0 -930,32,-1,32,-1,33,33,0,0 -931,32,0,32,0,32,32,0,0 -932,32,-1,32,-1,33,33,0,0 -933,32,-1,32,-1,33,33,0,0 -934,32,-1,32,-1,33,33,0,0 -935,32,0,32,0,32,32,0,0 -936,32,-1,32,-1,33,33,0,0 -937,32,-1,32,-1,33,33,0,0 -938,32,-1,32,-1,33,33,0,0 -939,32,0,32,0,32,32,0,0 -940,32,-1,32,-1,33,33,0,0 -941,32,0,32,0,32,32,0,0 -942,32,-1,32,-1,33,33,0,0 -943,32,0,32,0,32,32,0,0 -944,32,-1,32,-1,33,33,0,0 -945,32,0,32,0,32,32,0,0 -946,32,-1,32,-1,33,33,0,0 -947,32,0,32,0,32,32,0,0 -948,32,-1,32,-1,33,33,0,0 -949,32,0,32,0,32,32,0,0 -950,32,-1,32,-1,33,33,0,0 -951,32,0,32,0,32,32,0,0 -952,32,-1,32,-1,33,33,0,0 -953,32,0,32,0,32,32,0,0 -954,32,-1,32,-1,33,33,0,0 -955,32,0,32,0,32,32,0,0 -956,32,0,32,0,32,32,0,0 -957,32,0,32,0,32,32,0,0 -958,32,0,32,0,32,32,0,0 -959,32,0,32,0,32,32,0,0 -960,32,-1,32,-1,33,33,0,0 -961,32,-1,32,-1,33,33,0,0 -962,32,-1,32,-1,33,33,0,0 -963,32,-1,32,-1,33,33,0,0 -964,32,-1,32,-1,33,33,0,0 -965,32,-1,32,-1,33,33,0,0 -966,32,-1,32,-1,33,33,0,0 -967,32,-1,32,-1,33,33,0,0 -968,32,-1,32,-1,33,33,0,0 -969,32,-1,32,-1,33,33,0,0 -970,32,-1,32,-1,33,33,0,0 -971,32,-1,32,-1,33,33,0,0 -972,32,-1,32,-1,33,33,0,0 -973,32,-1,32,-1,33,33,0,0 -974,32,-1,32,-1,33,33,0,0 -975,32,0,32,0,32,32,0,0 -976,32,-1,32,-1,33,33,0,0 -977,32,-1,32,-1,33,33,0,0 -978,32,-1,32,-1,33,33,0,0 -979,32,0,32,0,32,32,0,0 -980,32,-1,32,-1,33,33,0,0 -981,32,-1,32,-1,33,33,0,0 -982,32,-1,32,-1,33,33,0,0 -983,32,0,32,0,32,32,0,0 -984,32,-1,32,-1,33,33,0,0 -985,32,-1,32,-1,33,33,0,0 -986,32,-1,32,-1,33,33,0,0 -987,32,0,32,0,32,32,0,0 -988,32,0,32,0,32,32,0,0 -989,32,0,32,0,32,32,0,0 -990,32,0,32,0,32,32,0,0 -991,32,0,32,0,32,32,0,0 -992,32,-1,32,-1,33,33,0,0 -993,32,-1,32,-1,33,33,0,0 -994,32,-1,32,-1,33,33,0,0 -995,32,-1,32,-1,33,33,0,0 -996,32,-1,32,-1,33,33,0,0 -997,32,-1,32,-1,33,33,0,0 -998,32,-1,32,-1,33,33,0,0 -999,32,-1,32,-1,33,33,0,0 -1000,32,-1,32,-1,33,33,0,0 -1001,32,-1,32,-1,33,33,0,0 -1002,32,-1,32,-1,33,33,0,0 -1003,32,0,32,0,32,32,0,0 -1004,32,0,32,0,32,32,0,0 -1005,32,-1,32,-1,33,33,0,0 -1006,32,0,32,0,32,32,0,0 -1007,32,0,32,0,32,32,0,0 -1008,32,0,32,0,32,32,0,0 -1009,32,0,32,0,32,32,0,0 -1010,32,-1,32,-1,33,33,0,0 -1011,32,0,32,0,32,32,0,0 -1012,32,0,32,0,32,32,0,0 -1013,32,-1,32,-1,33,33,0,0 -1014,32,-1,32,-1,33,33,0,0 -1015,32,0,32,0,32,32,0,0 -1016,32,0,32,0,32,32,0,0 -1017,32,0,32,0,32,32,0,0 -1018,32,0,32,0,32,32,0,0 -1019,32,0,32,0,32,32,0,0 -1020,32,0,32,0,32,32,0,0 -1021,32,0,32,0,32,32,0,0 -1022,32,0,32,0,32,32,0,0 -1023,32,0,32,0,32,32,0,0 diff --git a/9_Firmware/9_2_FPGA/tb/cosim/compare_mf_impulse.csv b/9_Firmware/9_2_FPGA/tb/cosim/compare_mf_impulse.csv deleted file mode 100644 index e54dce4..0000000 --- a/9_Firmware/9_2_FPGA/tb/cosim/compare_mf_impulse.csv +++ /dev/null @@ -1,1025 +0,0 @@ -bin,py_i,py_q,rtl_i,rtl_q,py_mag,rtl_mag,diff_i,diff_q -0,32761,0,32761,0,32761,32761,0,0 -1,0,0,0,0,0,0,0,0 -2,0,0,0,0,0,0,0,0 -3,0,0,0,0,0,0,0,0 -4,0,0,0,0,0,0,0,0 -5,0,0,0,0,0,0,0,0 -6,-1,0,-1,0,1,1,0,0 -7,0,0,0,0,0,0,0,0 -8,0,0,0,0,0,0,0,0 -9,0,0,0,0,0,0,0,0 -10,0,0,0,0,0,0,0,0 -11,0,0,0,0,0,0,0,0 -12,0,0,0,0,0,0,0,0 -13,-1,-1,-1,-1,2,2,0,0 -14,0,0,0,0,0,0,0,0 -15,0,0,0,0,0,0,0,0 -16,0,0,0,0,0,0,0,0 -17,0,0,0,0,0,0,0,0 -18,-1,0,-1,0,1,1,0,0 -19,0,0,0,0,0,0,0,0 -20,-1,0,-1,0,1,1,0,0 -21,0,0,0,0,0,0,0,0 -22,-1,0,-1,0,1,1,0,0 -23,0,0,0,0,0,0,0,0 -24,-1,0,-1,0,1,1,0,0 -25,-1,0,-1,0,1,1,0,0 -26,0,0,0,0,0,0,0,0 -27,0,0,0,0,0,0,0,0 -28,-1,0,-1,0,1,1,0,0 -29,-1,-1,-1,-1,2,2,0,0 -30,0,0,0,0,0,0,0,0 -31,0,0,0,0,0,0,0,0 -32,0,0,0,0,0,0,0,0 -33,0,0,0,0,0,0,0,0 -34,-1,0,-1,0,1,1,0,0 -35,0,0,0,0,0,0,0,0 -36,-1,0,-1,0,1,1,0,0 -37,0,0,0,0,0,0,0,0 -38,-1,0,-1,0,1,1,0,0 -39,0,0,0,0,0,0,0,0 -40,0,0,0,0,0,0,0,0 -41,0,0,0,0,0,0,0,0 -42,-1,0,-1,0,1,1,0,0 -43,0,0,0,0,0,0,0,0 -44,0,0,0,0,0,0,0,0 -45,-1,-1,-1,-1,2,2,0,0 -46,0,0,0,0,0,0,0,0 -47,0,0,0,0,0,0,0,0 -48,0,0,0,0,0,0,0,0 -49,-1,0,-1,0,1,1,0,0 -50,-1,0,-1,0,1,1,0,0 -51,0,0,0,0,0,0,0,0 -52,-1,0,-1,0,1,1,0,0 -53,0,0,0,0,0,0,0,0 -54,-1,0,-1,0,1,1,0,0 -55,0,0,0,0,0,0,0,0 -56,0,0,0,0,0,0,0,0 -57,-1,0,-1,0,1,1,0,0 -58,0,0,0,0,0,0,0,0 -59,0,0,0,0,0,0,0,0 -60,-1,0,-1,0,1,1,0,0 -61,-1,0,-1,0,1,1,0,0 -62,0,0,0,0,0,0,0,0 -63,0,0,0,0,0,0,0,0 -64,0,0,0,0,0,0,0,0 -65,0,0,0,0,0,0,0,0 -66,-1,0,-1,0,1,1,0,0 -67,0,0,0,0,0,0,0,0 -68,0,0,0,0,0,0,0,0 -69,0,0,0,0,0,0,0,0 -70,-1,-1,-1,-1,2,2,0,0 -71,0,0,0,0,0,0,0,0 -72,0,0,0,0,0,0,0,0 -73,0,0,0,0,0,0,0,0 -74,-1,0,-1,0,1,1,0,0 -75,0,0,0,0,0,0,0,0 -76,0,0,0,0,0,0,0,0 -77,-1,-1,-1,-1,2,2,0,0 -78,0,0,0,0,0,0,0,0 -79,0,0,0,0,0,0,0,0 -80,0,0,0,0,0,0,0,0 -81,0,0,0,0,0,0,0,0 -82,-1,0,-1,0,1,1,0,0 -83,0,0,0,0,0,0,0,0 -84,-1,0,-1,0,1,1,0,0 -85,0,0,0,0,0,0,0,0 -86,-1,-1,-1,-1,2,2,0,0 -87,0,0,0,0,0,0,0,0 -88,0,0,0,0,0,0,0,0 -89,-1,-1,-1,-1,2,2,0,0 -90,-1,0,-1,0,1,1,0,0 -91,0,0,0,0,0,0,0,0 -92,0,0,0,0,0,0,0,0 -93,-1,-1,-1,-1,2,2,0,0 -94,0,0,0,0,0,0,0,0 -95,0,0,0,0,0,0,0,0 -96,0,0,0,0,0,0,0,0 -97,-1,0,-1,0,1,1,0,0 -98,-1,0,-1,0,1,1,0,0 -99,0,0,0,0,0,0,0,0 -100,-1,0,-1,0,1,1,0,0 -101,0,0,0,0,0,0,0,0 -102,-1,0,-1,0,1,1,0,0 -103,0,0,0,0,0,0,0,0 -104,0,0,0,0,0,0,0,0 -105,0,0,0,0,0,0,0,0 -106,-1,0,-1,0,1,1,0,0 -107,0,0,0,0,0,0,0,0 -108,-1,0,-1,0,1,1,0,0 -109,-1,-1,-1,-1,2,2,0,0 -110,0,0,0,0,0,0,0,0 -111,0,0,0,0,0,0,0,0 -112,0,0,0,0,0,0,0,0 -113,-1,0,-1,0,1,1,0,0 -114,-1,0,-1,0,1,1,0,0 -115,0,0,0,0,0,0,0,0 -116,0,0,0,0,0,0,0,0 -117,0,0,0,0,0,0,0,0 -118,-1,0,-1,0,1,1,0,0 -119,0,0,0,0,0,0,0,0 -120,0,0,0,0,0,0,0,0 -121,-1,0,-1,0,1,1,0,0 -122,0,0,0,0,0,0,0,0 -123,0,0,0,0,0,0,0,0 -124,0,0,0,0,0,0,0,0 -125,-1,0,-1,0,1,1,0,0 -126,0,0,0,0,0,0,0,0 -127,0,0,0,0,0,0,0,0 -128,0,0,0,0,0,0,0,0 -129,0,0,0,0,0,0,0,0 -130,0,0,0,0,0,0,0,0 -131,0,0,0,0,0,0,0,0 -132,0,0,0,0,0,0,0,0 -133,0,0,0,0,0,0,0,0 -134,-1,0,-1,0,1,1,0,0 -135,0,0,0,0,0,0,0,0 -136,0,0,0,0,0,0,0,0 -137,0,0,0,0,0,0,0,0 -138,0,0,0,0,0,0,0,0 -139,0,0,0,0,0,0,0,0 -140,0,0,0,0,0,0,0,0 -141,-1,0,-1,0,1,1,0,0 -142,0,0,0,0,0,0,0,0 -143,0,0,0,0,0,0,0,0 -144,0,0,0,0,0,0,0,0 -145,0,0,0,0,0,0,0,0 -146,-1,0,-1,0,1,1,0,0 -147,0,0,0,0,0,0,0,0 -148,0,0,0,0,0,0,0,0 -149,0,0,0,0,0,0,0,0 -150,-1,0,-1,0,1,1,0,0 -151,0,0,0,0,0,0,0,0 -152,0,0,0,0,0,0,0,0 -153,-1,0,-1,0,1,1,0,0 -154,0,0,0,0,0,0,0,0 -155,0,0,0,0,0,0,0,0 -156,-1,0,-1,0,1,1,0,0 -157,-1,0,-1,0,1,1,0,0 -158,0,0,0,0,0,0,0,0 -159,0,0,0,0,0,0,0,0 -160,0,0,0,0,0,0,0,0 -161,0,0,0,0,0,0,0,0 -162,0,0,0,0,0,0,0,0 -163,0,0,0,0,0,0,0,0 -164,-1,0,-1,0,1,1,0,0 -165,0,0,0,0,0,0,0,0 -166,-1,0,-1,0,1,1,0,0 -167,0,0,0,0,0,0,0,0 -168,0,0,0,0,0,0,0,0 -169,0,0,0,0,0,0,0,0 -170,0,0,0,0,0,0,0,0 -171,0,0,0,0,0,0,0,0 -172,0,0,0,0,0,0,0,0 -173,-1,-1,-1,-1,2,2,0,0 -174,0,0,0,0,0,0,0,0 -175,0,0,0,0,0,0,0,0 -176,0,0,0,0,0,0,0,0 -177,-1,0,-1,0,1,1,0,0 -178,-1,0,-1,0,1,1,0,0 -179,0,0,0,0,0,0,0,0 -180,0,0,0,0,0,0,0,0 -181,0,0,0,0,0,0,0,0 -182,-1,0,-1,0,1,1,0,0 -183,0,0,0,0,0,0,0,0 -184,0,0,0,0,0,0,0,0 -185,-1,0,-1,0,1,1,0,0 -186,0,0,0,0,0,0,0,0 -187,0,0,0,0,0,0,0,0 -188,0,0,0,0,0,0,0,0 -189,-1,0,-1,0,1,1,0,0 -190,0,0,0,0,0,0,0,0 -191,0,0,0,0,0,0,0,0 -192,0,0,0,0,0,0,0,0 -193,-1,0,-1,0,1,1,0,0 -194,0,0,0,0,0,0,0,0 -195,0,0,0,0,0,0,0,0 -196,0,0,0,0,0,0,0,0 -197,0,0,0,0,0,0,0,0 -198,-1,0,-1,0,1,1,0,0 -199,0,0,0,0,0,0,0,0 -200,0,0,0,0,0,0,0,0 -201,0,0,0,0,0,0,0,0 -202,0,0,0,0,0,0,0,0 -203,0,0,0,0,0,0,0,0 -204,0,0,0,0,0,0,0,0 -205,-1,0,-1,0,1,1,0,0 -206,-1,0,-1,0,1,1,0,0 -207,0,0,0,0,0,0,0,0 -208,0,0,0,0,0,0,0,0 -209,0,0,0,0,0,0,0,0 -210,0,0,0,0,0,0,0,0 -211,0,0,0,0,0,0,0,0 -212,0,0,0,0,0,0,0,0 -213,0,0,0,0,0,0,0,0 -214,-1,0,-1,0,1,1,0,0 -215,0,0,0,0,0,0,0,0 -216,0,0,0,0,0,0,0,0 -217,-1,0,-1,0,1,1,0,0 -218,0,0,0,0,0,0,0,0 -219,0,0,0,0,0,0,0,0 -220,0,0,0,0,0,0,0,0 -221,-1,0,-1,0,1,1,0,0 -222,0,0,0,0,0,0,0,0 -223,0,0,0,0,0,0,0,0 -224,0,0,0,0,0,0,0,0 -225,-1,0,-1,0,1,1,0,0 -226,0,0,0,0,0,0,0,0 -227,0,0,0,0,0,0,0,0 -228,0,0,0,0,0,0,0,0 -229,0,0,0,0,0,0,0,0 -230,-1,0,-1,0,1,1,0,0 -231,0,0,0,0,0,0,0,0 -232,0,0,0,0,0,0,0,0 -233,0,0,0,0,0,0,0,0 -234,0,0,0,0,0,0,0,0 -235,0,0,0,0,0,0,0,0 -236,0,0,0,0,0,0,0,0 -237,-1,0,-1,0,1,1,0,0 -238,0,0,0,0,0,0,0,0 -239,0,0,0,0,0,0,0,0 -240,0,0,0,0,0,0,0,0 -241,-1,0,-1,0,1,1,0,0 -242,0,0,0,0,0,0,0,0 -243,0,0,0,0,0,0,0,0 -244,0,0,0,0,0,0,0,0 -245,0,0,0,0,0,0,0,0 -246,-1,0,-1,0,1,1,0,0 -247,0,0,0,0,0,0,0,0 -248,0,0,0,0,0,0,0,0 -249,-1,0,-1,0,1,1,0,0 -250,0,0,0,0,0,0,0,0 -251,0,0,0,0,0,0,0,0 -252,0,0,0,0,0,0,0,0 -253,-1,0,-1,0,1,1,0,0 -254,0,0,0,0,0,0,0,0 -255,0,0,0,0,0,0,0,0 -256,0,0,0,0,0,0,0,0 -257,0,0,0,0,0,0,0,0 -258,0,0,0,0,0,0,0,0 -259,0,0,0,0,0,0,0,0 -260,0,0,0,0,0,0,0,0 -261,0,0,0,0,0,0,0,0 -262,-1,0,-1,0,1,1,0,0 -263,0,0,0,0,0,0,0,0 -264,0,0,0,0,0,0,0,0 -265,0,0,0,0,0,0,0,0 -266,0,0,0,0,0,0,0,0 -267,0,0,0,0,0,0,0,0 -268,0,0,0,0,0,0,0,0 -269,-1,0,-1,0,1,1,0,0 -270,0,0,0,0,0,0,0,0 -271,0,0,0,0,0,0,0,0 -272,0,0,0,0,0,0,0,0 -273,0,0,0,0,0,0,0,0 -274,-1,0,-1,0,1,1,0,0 -275,0,0,0,0,0,0,0,0 -276,0,0,0,0,0,0,0,0 -277,0,0,0,0,0,0,0,0 -278,-1,0,-1,0,1,1,0,0 -279,0,0,0,0,0,0,0,0 -280,0,0,0,0,0,0,0,0 -281,-1,0,-1,0,1,1,0,0 -282,0,0,0,0,0,0,0,0 -283,0,0,0,0,0,0,0,0 -284,0,0,0,0,0,0,0,0 -285,-1,0,-1,0,1,1,0,0 -286,0,0,0,0,0,0,0,0 -287,0,0,0,0,0,0,0,0 -288,0,0,0,0,0,0,0,0 -289,0,0,0,0,0,0,0,0 -290,-1,0,-1,0,1,1,0,0 -291,0,0,0,0,0,0,0,0 -292,0,0,0,0,0,0,0,0 -293,0,0,0,0,0,0,0,0 -294,-1,0,-1,0,1,1,0,0 -295,0,0,0,0,0,0,0,0 -296,0,0,0,0,0,0,0,0 -297,0,0,0,0,0,0,0,0 -298,-1,0,-1,0,1,1,0,0 -299,0,0,0,0,0,0,0,0 -300,0,0,0,0,0,0,0,0 -301,-1,0,-1,0,1,1,0,0 -302,0,0,0,0,0,0,0,0 -303,0,0,0,0,0,0,0,0 -304,0,0,0,0,0,0,0,0 -305,-1,0,-1,0,1,1,0,0 -306,0,0,0,0,0,0,0,0 -307,0,0,0,0,0,0,0,0 -308,0,0,0,0,0,0,0,0 -309,0,0,0,0,0,0,0,0 -310,-1,0,-1,0,1,1,0,0 -311,0,0,0,0,0,0,0,0 -312,0,0,0,0,0,0,0,0 -313,-1,0,-1,0,1,1,0,0 -314,0,0,0,0,0,0,0,0 -315,0,0,0,0,0,0,0,0 -316,0,0,0,0,0,0,0,0 -317,-1,0,-1,0,1,1,0,0 -318,0,0,0,0,0,0,0,0 -319,0,0,0,0,0,0,0,0 -320,0,0,0,0,0,0,0,0 -321,0,0,0,0,0,0,0,0 -322,0,0,0,0,0,0,0,0 -323,0,0,0,0,0,0,0,0 -324,0,0,0,0,0,0,0,0 -325,0,0,0,0,0,0,0,0 -326,-1,0,-1,0,1,1,0,0 -327,0,0,0,0,0,0,0,0 -328,0,0,0,0,0,0,0,0 -329,0,0,0,0,0,0,0,0 -330,0,0,0,0,0,0,0,0 -331,0,0,0,0,0,0,0,0 -332,0,0,0,0,0,0,0,0 -333,-1,0,-1,0,1,1,0,0 -334,0,0,0,0,0,0,0,0 -335,0,0,0,0,0,0,0,0 -336,0,0,0,0,0,0,0,0 -337,0,0,0,0,0,0,0,0 -338,0,0,0,0,0,0,0,0 -339,0,0,0,0,0,0,0,0 -340,0,0,0,0,0,0,0,0 -341,0,0,0,0,0,0,0,0 -342,-1,0,-1,0,1,1,0,0 -343,0,0,0,0,0,0,0,0 -344,0,0,0,0,0,0,0,0 -345,-1,0,-1,0,1,1,0,0 -346,0,0,0,0,0,0,0,0 -347,0,0,0,0,0,0,0,0 -348,0,0,0,0,0,0,0,0 -349,-1,0,-1,0,1,1,0,0 -350,0,0,0,0,0,0,0,0 -351,0,0,0,0,0,0,0,0 -352,0,0,0,0,0,0,0,0 -353,-1,0,-1,0,1,1,0,0 -354,0,0,0,0,0,0,0,0 -355,0,0,0,0,0,0,0,0 -356,0,0,0,0,0,0,0,0 -357,0,0,0,0,0,0,0,0 -358,-1,0,-1,0,1,1,0,0 -359,0,0,0,0,0,0,0,0 -360,0,0,0,0,0,0,0,0 -361,0,0,0,0,0,0,0,0 -362,0,0,0,0,0,0,0,0 -363,0,0,0,0,0,0,0,0 -364,0,0,0,0,0,0,0,0 -365,-1,0,-1,0,1,1,0,0 -366,0,0,0,0,0,0,0,0 -367,0,0,0,0,0,0,0,0 -368,0,0,0,0,0,0,0,0 -369,-1,0,-1,0,1,1,0,0 -370,0,0,0,0,0,0,0,0 -371,0,0,0,0,0,0,0,0 -372,0,0,0,0,0,0,0,0 -373,0,0,0,0,0,0,0,0 -374,-1,0,-1,0,1,1,0,0 -375,0,0,0,0,0,0,0,0 -376,0,0,0,0,0,0,0,0 -377,-1,0,-1,0,1,1,0,0 -378,0,0,0,0,0,0,0,0 -379,0,0,0,0,0,0,0,0 -380,0,0,0,0,0,0,0,0 -381,-1,0,-1,0,1,1,0,0 -382,0,0,0,0,0,0,0,0 -383,0,0,0,0,0,0,0,0 -384,0,0,0,0,0,0,0,0 -385,0,0,0,0,0,0,0,0 -386,0,0,0,0,0,0,0,0 -387,0,0,0,0,0,0,0,0 -388,0,0,0,0,0,0,0,0 -389,0,0,0,0,0,0,0,0 -390,0,0,0,0,0,0,0,0 -391,0,0,0,0,0,0,0,0 -392,0,0,0,0,0,0,0,0 -393,0,0,0,0,0,0,0,0 -394,0,0,0,0,0,0,0,0 -395,0,0,0,0,0,0,0,0 -396,0,0,0,0,0,0,0,0 -397,0,0,0,0,0,0,0,0 -398,0,0,0,0,0,0,0,0 -399,0,0,0,0,0,0,0,0 -400,0,0,0,0,0,0,0,0 -401,0,0,0,0,0,0,0,0 -402,0,0,0,0,0,0,0,0 -403,0,0,0,0,0,0,0,0 -404,0,0,0,0,0,0,0,0 -405,0,0,0,0,0,0,0,0 -406,0,0,0,0,0,0,0,0 -407,0,0,0,0,0,0,0,0 -408,0,0,0,0,0,0,0,0 -409,-1,0,-1,0,1,1,0,0 -410,0,0,0,0,0,0,0,0 -411,0,0,0,0,0,0,0,0 -412,0,0,0,0,0,0,0,0 -413,-1,0,-1,0,1,1,0,0 -414,0,0,0,0,0,0,0,0 -415,0,0,0,0,0,0,0,0 -416,0,0,0,0,0,0,0,0 -417,0,0,0,0,0,0,0,0 -418,0,0,0,0,0,0,0,0 -419,0,0,0,0,0,0,0,0 -420,0,0,0,0,0,0,0,0 -421,0,0,0,0,0,0,0,0 -422,0,0,0,0,0,0,0,0 -423,0,0,0,0,0,0,0,0 -424,0,0,0,0,0,0,0,0 -425,0,0,0,0,0,0,0,0 -426,0,0,0,0,0,0,0,0 -427,0,0,0,0,0,0,0,0 -428,0,0,0,0,0,0,0,0 -429,-1,0,-1,0,1,1,0,0 -430,0,0,0,0,0,0,0,0 -431,0,0,0,0,0,0,0,0 -432,0,0,0,0,0,0,0,0 -433,-1,0,-1,0,1,1,0,0 -434,0,0,0,0,0,0,0,0 -435,0,0,0,0,0,0,0,0 -436,0,0,0,0,0,0,0,0 -437,0,0,0,0,0,0,0,0 -438,-1,0,-1,0,1,1,0,0 -439,0,0,0,0,0,0,0,0 -440,0,0,0,0,0,0,0,0 -441,-1,0,-1,0,1,1,0,0 -442,0,0,0,0,0,0,0,0 -443,0,0,0,0,0,0,0,0 -444,0,0,0,0,0,0,0,0 -445,-1,0,-1,0,1,1,0,0 -446,0,0,0,0,0,0,0,0 -447,0,0,0,0,0,0,0,0 -448,0,0,0,0,0,0,0,0 -449,0,0,0,0,0,0,0,0 -450,0,0,0,0,0,0,0,0 -451,0,0,0,0,0,0,0,0 -452,0,0,0,0,0,0,0,0 -453,0,0,0,0,0,0,0,0 -454,0,0,0,0,0,0,0,0 -455,0,0,0,0,0,0,0,0 -456,0,0,0,0,0,0,0,0 -457,0,0,0,0,0,0,0,0 -458,0,0,0,0,0,0,0,0 -459,0,0,0,0,0,0,0,0 -460,0,0,0,0,0,0,0,0 -461,0,0,0,0,0,0,0,0 -462,0,0,0,0,0,0,0,0 -463,0,0,0,0,0,0,0,0 -464,0,0,0,0,0,0,0,0 -465,0,0,0,0,0,0,0,0 -466,0,0,0,0,0,0,0,0 -467,0,0,0,0,0,0,0,0 -468,0,0,0,0,0,0,0,0 -469,0,0,0,0,0,0,0,0 -470,-1,0,-1,0,1,1,0,0 -471,0,0,0,0,0,0,0,0 -472,0,0,0,0,0,0,0,0 -473,-1,0,-1,0,1,1,0,0 -474,0,0,0,0,0,0,0,0 -475,0,0,0,0,0,0,0,0 -476,0,0,0,0,0,0,0,0 -477,-1,0,-1,0,1,1,0,0 -478,0,0,0,0,0,0,0,0 -479,0,0,0,0,0,0,0,0 -480,0,0,0,0,0,0,0,0 -481,0,0,0,0,0,0,0,0 -482,0,0,0,0,0,0,0,0 -483,0,0,0,0,0,0,0,0 -484,0,0,0,0,0,0,0,0 -485,0,0,0,0,0,0,0,0 -486,0,0,0,0,0,0,0,0 -487,0,0,0,0,0,0,0,0 -488,0,0,0,0,0,0,0,0 -489,0,0,0,0,0,0,0,0 -490,0,0,0,0,0,0,0,0 -491,0,0,0,0,0,0,0,0 -492,0,0,0,0,0,0,0,0 -493,-1,0,-1,0,1,1,0,0 -494,0,0,0,0,0,0,0,0 -495,0,0,0,0,0,0,0,0 -496,0,0,0,0,0,0,0,0 -497,0,0,0,0,0,0,0,0 -498,0,0,0,0,0,0,0,0 -499,0,0,0,0,0,0,0,0 -500,0,0,0,0,0,0,0,0 -501,0,0,0,0,0,0,0,0 -502,0,0,0,0,0,0,0,0 -503,0,0,0,0,0,0,0,0 -504,0,0,0,0,0,0,0,0 -505,0,0,0,0,0,0,0,0 -506,0,0,0,0,0,0,0,0 -507,0,0,0,0,0,0,0,0 -508,0,0,0,0,0,0,0,0 -509,0,0,0,0,0,0,0,0 -510,0,0,0,0,0,0,0,0 -511,0,0,0,0,0,0,0,0 -512,0,0,0,0,0,0,0,0 -513,0,0,0,0,0,0,0,0 -514,0,0,0,0,0,0,0,0 -515,0,0,0,0,0,0,0,0 -516,0,0,0,0,0,0,0,0 -517,0,0,0,0,0,0,0,0 -518,0,0,0,0,0,0,0,0 -519,0,0,0,0,0,0,0,0 -520,0,0,0,0,0,0,0,0 -521,0,0,0,0,0,0,0,0 -522,0,0,0,0,0,0,0,0 -523,0,0,0,0,0,0,0,0 -524,0,0,0,0,0,0,0,0 -525,0,0,0,0,0,0,0,0 -526,0,0,0,0,0,0,0,0 -527,0,0,0,0,0,0,0,0 -528,0,-1,0,-1,1,1,0,0 -529,0,0,0,0,0,0,0,0 -530,0,0,0,0,0,0,0,0 -531,0,0,0,0,0,0,0,0 -532,0,0,0,0,0,0,0,0 -533,0,0,0,0,0,0,0,0 -534,0,0,0,0,0,0,0,0 -535,0,0,0,0,0,0,0,0 -536,0,0,0,0,0,0,0,0 -537,0,0,0,0,0,0,0,0 -538,0,0,0,0,0,0,0,0 -539,0,0,0,0,0,0,0,0 -540,0,0,0,0,0,0,0,0 -541,0,0,0,0,0,0,0,0 -542,0,0,0,0,0,0,0,0 -543,0,0,0,0,0,0,0,0 -544,0,-1,0,-1,1,1,0,0 -545,0,0,0,0,0,0,0,0 -546,0,0,0,0,0,0,0,0 -547,0,0,0,0,0,0,0,0 -548,0,0,0,0,0,0,0,0 -549,0,0,0,0,0,0,0,0 -550,0,0,0,0,0,0,0,0 -551,0,0,0,0,0,0,0,0 -552,0,0,0,0,0,0,0,0 -553,0,0,0,0,0,0,0,0 -554,0,0,0,0,0,0,0,0 -555,0,0,0,0,0,0,0,0 -556,0,0,0,0,0,0,0,0 -557,0,0,0,0,0,0,0,0 -558,0,0,0,0,0,0,0,0 -559,0,0,0,0,0,0,0,0 -560,0,-1,0,-1,1,1,0,0 -561,0,0,0,0,0,0,0,0 -562,0,0,0,0,0,0,0,0 -563,0,0,0,0,0,0,0,0 -564,0,0,0,0,0,0,0,0 -565,0,0,0,0,0,0,0,0 -566,0,0,0,0,0,0,0,0 -567,0,0,0,0,0,0,0,0 -568,0,0,0,0,0,0,0,0 -569,0,0,0,0,0,0,0,0 -570,0,0,0,0,0,0,0,0 -571,0,0,0,0,0,0,0,0 -572,0,0,0,0,0,0,0,0 -573,0,0,0,0,0,0,0,0 -574,0,0,0,0,0,0,0,0 -575,0,0,0,0,0,0,0,0 -576,0,-1,0,-1,1,1,0,0 -577,0,0,0,0,0,0,0,0 -578,0,0,0,0,0,0,0,0 -579,0,0,0,0,0,0,0,0 -580,0,0,0,0,0,0,0,0 -581,0,0,0,0,0,0,0,0 -582,0,0,0,0,0,0,0,0 -583,0,0,0,0,0,0,0,0 -584,0,-1,0,-1,1,1,0,0 -585,0,0,0,0,0,0,0,0 -586,0,0,0,0,0,0,0,0 -587,0,0,0,0,0,0,0,0 -588,0,0,0,0,0,0,0,0 -589,0,0,0,0,0,0,0,0 -590,0,0,0,0,0,0,0,0 -591,0,0,0,0,0,0,0,0 -592,0,-1,0,-1,1,1,0,0 -593,0,0,0,0,0,0,0,0 -594,0,0,0,0,0,0,0,0 -595,0,0,0,0,0,0,0,0 -596,0,0,0,0,0,0,0,0 -597,0,0,0,0,0,0,0,0 -598,0,0,0,0,0,0,0,0 -599,0,0,0,0,0,0,0,0 -600,0,-1,0,-1,1,1,0,0 -601,0,0,0,0,0,0,0,0 -602,0,0,0,0,0,0,0,0 -603,0,0,0,0,0,0,0,0 -604,0,0,0,0,0,0,0,0 -605,0,0,0,0,0,0,0,0 -606,0,0,0,0,0,0,0,0 -607,0,0,0,0,0,0,0,0 -608,0,-1,0,-1,1,1,0,0 -609,0,0,0,0,0,0,0,0 -610,0,0,0,0,0,0,0,0 -611,0,0,0,0,0,0,0,0 -612,0,0,0,0,0,0,0,0 -613,0,0,0,0,0,0,0,0 -614,0,0,0,0,0,0,0,0 -615,0,0,0,0,0,0,0,0 -616,0,-1,0,-1,1,1,0,0 -617,0,0,0,0,0,0,0,0 -618,0,0,0,0,0,0,0,0 -619,0,0,0,0,0,0,0,0 -620,0,0,0,0,0,0,0,0 -621,0,0,0,0,0,0,0,0 -622,0,0,0,0,0,0,0,0 -623,0,0,0,0,0,0,0,0 -624,0,-1,0,-1,1,1,0,0 -625,0,0,0,0,0,0,0,0 -626,0,0,0,0,0,0,0,0 -627,0,0,0,0,0,0,0,0 -628,0,0,0,0,0,0,0,0 -629,0,0,0,0,0,0,0,0 -630,0,0,0,0,0,0,0,0 -631,0,0,0,0,0,0,0,0 -632,0,-1,0,-1,1,1,0,0 -633,0,0,0,0,0,0,0,0 -634,0,0,0,0,0,0,0,0 -635,0,0,0,0,0,0,0,0 -636,0,-1,0,-1,1,1,0,0 -637,0,0,0,0,0,0,0,0 -638,0,0,0,0,0,0,0,0 -639,0,0,0,0,0,0,0,0 -640,0,-1,0,-1,1,1,0,0 -641,0,0,0,0,0,0,0,0 -642,0,0,0,0,0,0,0,0 -643,0,0,0,0,0,0,0,0 -644,0,0,0,0,0,0,0,0 -645,0,0,0,0,0,0,0,0 -646,0,0,0,0,0,0,0,0 -647,0,0,0,0,0,0,0,0 -648,0,-1,0,-1,1,1,0,0 -649,0,0,0,0,0,0,0,0 -650,0,0,0,0,0,0,0,0 -651,0,0,0,0,0,0,0,0 -652,0,0,0,0,0,0,0,0 -653,0,0,0,0,0,0,0,0 -654,0,0,0,0,0,0,0,0 -655,0,0,0,0,0,0,0,0 -656,0,-1,0,-1,1,1,0,0 -657,0,0,0,0,0,0,0,0 -658,0,0,0,0,0,0,0,0 -659,0,0,0,0,0,0,0,0 -660,0,-1,0,-1,1,1,0,0 -661,0,0,0,0,0,0,0,0 -662,0,0,0,0,0,0,0,0 -663,0,0,0,0,0,0,0,0 -664,0,-1,0,-1,1,1,0,0 -665,0,0,0,0,0,0,0,0 -666,0,0,0,0,0,0,0,0 -667,0,0,0,0,0,0,0,0 -668,0,0,0,0,0,0,0,0 -669,0,0,0,0,0,0,0,0 -670,0,0,0,0,0,0,0,0 -671,0,0,0,0,0,0,0,0 -672,0,-1,0,-1,1,1,0,0 -673,0,0,0,0,0,0,0,0 -674,0,0,0,0,0,0,0,0 -675,0,0,0,0,0,0,0,0 -676,0,0,0,0,0,0,0,0 -677,0,0,0,0,0,0,0,0 -678,0,0,0,0,0,0,0,0 -679,0,0,0,0,0,0,0,0 -680,0,-1,0,-1,1,1,0,0 -681,0,0,0,0,0,0,0,0 -682,0,0,0,0,0,0,0,0 -683,0,0,0,0,0,0,0,0 -684,0,0,0,0,0,0,0,0 -685,0,0,0,0,0,0,0,0 -686,0,0,0,0,0,0,0,0 -687,0,0,0,0,0,0,0,0 -688,0,-1,0,-1,1,1,0,0 -689,0,0,0,0,0,0,0,0 -690,0,0,0,0,0,0,0,0 -691,0,0,0,0,0,0,0,0 -692,0,-1,0,-1,1,1,0,0 -693,0,0,0,0,0,0,0,0 -694,0,0,0,0,0,0,0,0 -695,0,0,0,0,0,0,0,0 -696,0,-1,0,-1,1,1,0,0 -697,0,0,0,0,0,0,0,0 -698,0,0,0,0,0,0,0,0 -699,0,0,0,0,0,0,0,0 -700,0,0,0,0,0,0,0,0 -701,0,0,0,0,0,0,0,0 -702,0,0,0,0,0,0,0,0 -703,0,0,0,0,0,0,0,0 -704,0,-1,0,-1,1,1,0,0 -705,0,0,0,0,0,0,0,0 -706,0,0,0,0,0,0,0,0 -707,0,0,0,0,0,0,0,0 -708,0,0,0,0,0,0,0,0 -709,0,0,0,0,0,0,0,0 -710,0,0,0,0,0,0,0,0 -711,0,0,0,0,0,0,0,0 -712,0,-1,0,-1,1,1,0,0 -713,0,0,0,0,0,0,0,0 -714,0,0,0,0,0,0,0,0 -715,0,0,0,0,0,0,0,0 -716,0,0,0,0,0,0,0,0 -717,0,0,0,0,0,0,0,0 -718,0,0,0,0,0,0,0,0 -719,0,0,0,0,0,0,0,0 -720,0,-1,0,-1,1,1,0,0 -721,0,0,0,0,0,0,0,0 -722,0,0,0,0,0,0,0,0 -723,0,0,0,0,0,0,0,0 -724,0,0,0,0,0,0,0,0 -725,0,0,0,0,0,0,0,0 -726,0,0,0,0,0,0,0,0 -727,0,0,0,0,0,0,0,0 -728,0,-1,0,-1,1,1,0,0 -729,0,0,0,0,0,0,0,0 -730,0,0,0,0,0,0,0,0 -731,0,0,0,0,0,0,0,0 -732,0,-1,0,-1,1,1,0,0 -733,0,0,0,0,0,0,0,0 -734,0,0,0,0,0,0,0,0 -735,0,0,0,0,0,0,0,0 -736,0,-1,0,-1,1,1,0,0 -737,0,0,0,0,0,0,0,0 -738,0,0,0,0,0,0,0,0 -739,0,0,0,0,0,0,0,0 -740,0,-1,0,-1,1,1,0,0 -741,0,0,0,0,0,0,0,0 -742,0,0,0,0,0,0,0,0 -743,0,0,0,0,0,0,0,0 -744,0,-1,0,-1,1,1,0,0 -745,0,0,0,0,0,0,0,0 -746,0,-1,0,-1,1,1,0,0 -747,0,0,0,0,0,0,0,0 -748,0,-1,0,-1,1,1,0,0 -749,0,0,0,0,0,0,0,0 -750,0,0,0,0,0,0,0,0 -751,0,0,0,0,0,0,0,0 -752,0,-1,0,-1,1,1,0,0 -753,0,0,0,0,0,0,0,0 -754,0,0,0,0,0,0,0,0 -755,0,0,0,0,0,0,0,0 -756,0,-1,0,-1,1,1,0,0 -757,0,0,0,0,0,0,0,0 -758,0,0,0,0,0,0,0,0 -759,0,0,0,0,0,0,0,0 -760,0,-1,0,-1,1,1,0,0 -761,0,0,0,0,0,0,0,0 -762,0,0,0,0,0,0,0,0 -763,0,0,0,0,0,0,0,0 -764,0,-1,0,-1,1,1,0,0 -765,0,0,0,0,0,0,0,0 -766,0,0,0,0,0,0,0,0 -767,0,0,0,0,0,0,0,0 -768,0,-1,0,-1,1,1,0,0 -769,0,0,0,0,0,0,0,0 -770,0,-1,0,-1,1,1,0,0 -771,0,0,0,0,0,0,0,0 -772,0,-1,0,-1,1,1,0,0 -773,0,0,0,0,0,0,0,0 -774,0,0,0,0,0,0,0,0 -775,0,0,0,0,0,0,0,0 -776,0,-1,0,-1,1,1,0,0 -777,0,0,0,0,0,0,0,0 -778,0,-1,0,-1,1,1,0,0 -779,0,0,0,0,0,0,0,0 -780,0,-1,0,-1,1,1,0,0 -781,0,0,0,0,0,0,0,0 -782,0,0,0,0,0,0,0,0 -783,0,0,0,0,0,0,0,0 -784,0,-1,0,-1,1,1,0,0 -785,0,0,0,0,0,0,0,0 -786,0,0,0,0,0,0,0,0 -787,0,0,0,0,0,0,0,0 -788,0,-1,0,-1,1,1,0,0 -789,0,0,0,0,0,0,0,0 -790,0,0,0,0,0,0,0,0 -791,0,0,0,0,0,0,0,0 -792,0,-1,0,-1,1,1,0,0 -793,0,0,0,0,0,0,0,0 -794,0,0,0,0,0,0,0,0 -795,0,0,0,0,0,0,0,0 -796,0,-1,0,-1,1,1,0,0 -797,0,0,0,0,0,0,0,0 -798,0,0,0,0,0,0,0,0 -799,0,0,0,0,0,0,0,0 -800,0,-1,0,-1,1,1,0,0 -801,0,0,0,0,0,0,0,0 -802,0,0,0,0,0,0,0,0 -803,0,0,0,0,0,0,0,0 -804,0,-1,0,-1,1,1,0,0 -805,0,0,0,0,0,0,0,0 -806,0,0,0,0,0,0,0,0 -807,0,0,0,0,0,0,0,0 -808,0,-1,0,-1,1,1,0,0 -809,0,0,0,0,0,0,0,0 -810,0,0,0,0,0,0,0,0 -811,0,0,0,0,0,0,0,0 -812,0,-1,0,-1,1,1,0,0 -813,0,0,0,0,0,0,0,0 -814,0,0,0,0,0,0,0,0 -815,0,0,0,0,0,0,0,0 -816,0,-1,0,-1,1,1,0,0 -817,0,0,0,0,0,0,0,0 -818,0,0,0,0,0,0,0,0 -819,0,0,0,0,0,0,0,0 -820,0,-1,0,-1,1,1,0,0 -821,0,0,0,0,0,0,0,0 -822,0,0,0,0,0,0,0,0 -823,0,0,0,0,0,0,0,0 -824,0,-1,0,-1,1,1,0,0 -825,0,0,0,0,0,0,0,0 -826,0,0,0,0,0,0,0,0 -827,0,0,0,0,0,0,0,0 -828,0,-1,0,-1,1,1,0,0 -829,0,0,0,0,0,0,0,0 -830,0,0,0,0,0,0,0,0 -831,0,0,0,0,0,0,0,0 -832,0,-1,0,-1,1,1,0,0 -833,0,0,0,0,0,0,0,0 -834,0,-1,0,-1,1,1,0,0 -835,0,0,0,0,0,0,0,0 -836,0,-1,0,-1,1,1,0,0 -837,0,0,0,0,0,0,0,0 -838,0,0,0,0,0,0,0,0 -839,0,0,0,0,0,0,0,0 -840,0,-1,0,-1,1,1,0,0 -841,0,0,0,0,0,0,0,0 -842,0,-1,0,-1,1,1,0,0 -843,0,0,0,0,0,0,0,0 -844,0,-1,0,-1,1,1,0,0 -845,0,0,0,0,0,0,0,0 -846,0,0,0,0,0,0,0,0 -847,0,0,0,0,0,0,0,0 -848,0,-1,0,-1,1,1,0,0 -849,0,0,0,0,0,0,0,0 -850,0,-1,0,-1,1,1,0,0 -851,0,0,0,0,0,0,0,0 -852,0,-1,0,-1,1,1,0,0 -853,0,0,0,0,0,0,0,0 -854,0,0,0,0,0,0,0,0 -855,0,0,0,0,0,0,0,0 -856,0,-1,0,-1,1,1,0,0 -857,0,0,0,0,0,0,0,0 -858,0,-1,0,-1,1,1,0,0 -859,0,0,0,0,0,0,0,0 -860,0,-1,0,-1,1,1,0,0 -861,0,0,0,0,0,0,0,0 -862,0,0,0,0,0,0,0,0 -863,0,0,0,0,0,0,0,0 -864,0,-1,0,-1,1,1,0,0 -865,0,0,0,0,0,0,0,0 -866,0,-1,0,-1,1,1,0,0 -867,0,0,0,0,0,0,0,0 -868,0,-1,0,-1,1,1,0,0 -869,0,0,0,0,0,0,0,0 -870,0,0,0,0,0,0,0,0 -871,0,0,0,0,0,0,0,0 -872,0,-1,0,-1,1,1,0,0 -873,0,0,0,0,0,0,0,0 -874,0,-1,0,-1,1,1,0,0 -875,0,0,0,0,0,0,0,0 -876,0,-1,0,-1,1,1,0,0 -877,0,0,0,0,0,0,0,0 -878,0,0,0,0,0,0,0,0 -879,0,0,0,0,0,0,0,0 -880,0,-1,0,-1,1,1,0,0 -881,0,0,0,0,0,0,0,0 -882,0,-1,0,-1,1,1,0,0 -883,0,0,0,0,0,0,0,0 -884,0,-1,0,-1,1,1,0,0 -885,0,0,0,0,0,0,0,0 -886,0,0,0,0,0,0,0,0 -887,0,0,0,0,0,0,0,0 -888,0,-1,0,-1,1,1,0,0 -889,0,0,0,0,0,0,0,0 -890,0,0,0,0,0,0,0,0 -891,0,0,0,0,0,0,0,0 -892,0,-1,0,-1,1,1,0,0 -893,0,0,0,0,0,0,0,0 -894,0,0,0,0,0,0,0,0 -895,0,0,0,0,0,0,0,0 -896,0,-1,0,-1,1,1,0,0 -897,0,-1,0,-1,1,1,0,0 -898,0,-1,0,-1,1,1,0,0 -899,0,0,0,0,0,0,0,0 -900,0,-1,0,-1,1,1,0,0 -901,0,0,0,0,0,0,0,0 -902,0,0,0,0,0,0,0,0 -903,0,0,0,0,0,0,0,0 -904,0,-1,0,-1,1,1,0,0 -905,0,0,0,0,0,0,0,0 -906,0,-1,0,-1,1,1,0,0 -907,0,0,0,0,0,0,0,0 -908,0,-1,0,-1,1,1,0,0 -909,0,0,0,0,0,0,0,0 -910,0,-1,0,-1,1,1,0,0 -911,0,0,0,0,0,0,0,0 -912,0,-1,0,-1,1,1,0,0 -913,0,0,0,0,0,0,0,0 -914,0,0,0,0,0,0,0,0 -915,0,0,0,0,0,0,0,0 -916,0,-1,0,-1,1,1,0,0 -917,0,0,0,0,0,0,0,0 -918,0,0,0,0,0,0,0,0 -919,0,0,0,0,0,0,0,0 -920,0,-1,0,-1,1,1,0,0 -921,0,0,0,0,0,0,0,0 -922,0,-1,0,-1,1,1,0,0 -923,0,0,0,0,0,0,0,0 -924,0,-1,0,-1,1,1,0,0 -925,0,0,0,0,0,0,0,0 -926,0,-1,0,-1,1,1,0,0 -927,0,0,0,0,0,0,0,0 -928,0,-1,0,-1,1,1,0,0 -929,0,0,0,0,0,0,0,0 -930,0,-1,0,-1,1,1,0,0 -931,0,0,0,0,0,0,0,0 -932,0,-1,0,-1,1,1,0,0 -933,0,0,0,0,0,0,0,0 -934,0,-1,0,-1,1,1,0,0 -935,0,0,0,0,0,0,0,0 -936,0,-1,0,-1,1,1,0,0 -937,0,0,0,0,0,0,0,0 -938,0,-1,0,-1,1,1,0,0 -939,0,0,0,0,0,0,0,0 -940,0,-1,0,-1,1,1,0,0 -941,0,0,0,0,0,0,0,0 -942,0,0,0,0,0,0,0,0 -943,0,0,0,0,0,0,0,0 -944,0,-1,0,-1,1,1,0,0 -945,0,0,0,0,0,0,0,0 -946,0,-1,0,-1,1,1,0,0 -947,0,0,0,0,0,0,0,0 -948,0,-1,0,-1,1,1,0,0 -949,0,0,0,0,0,0,0,0 -950,0,0,0,0,0,0,0,0 -951,0,0,0,0,0,0,0,0 -952,0,-1,0,-1,1,1,0,0 -953,0,0,0,0,0,0,0,0 -954,0,0,0,0,0,0,0,0 -955,0,0,0,0,0,0,0,0 -956,0,-1,0,-1,1,1,0,0 -957,0,0,0,0,0,0,0,0 -958,0,0,0,0,0,0,0,0 -959,0,0,0,0,0,0,0,0 -960,0,-1,0,-1,1,1,0,0 -961,0,-1,0,-1,1,1,0,0 -962,0,-1,0,-1,1,1,0,0 -963,0,0,0,0,0,0,0,0 -964,0,-1,0,-1,1,1,0,0 -965,0,0,0,0,0,0,0,0 -966,0,-1,0,-1,1,1,0,0 -967,0,0,0,0,0,0,0,0 -968,0,-1,0,-1,1,1,0,0 -969,0,0,0,0,0,0,0,0 -970,0,-1,0,-1,1,1,0,0 -971,0,0,0,0,0,0,0,0 -972,0,-1,0,-1,1,1,0,0 -973,0,0,0,0,0,0,0,0 -974,0,-1,0,-1,1,1,0,0 -975,0,0,0,0,0,0,0,0 -976,0,-1,0,-1,1,1,0,0 -977,0,0,0,0,0,0,0,0 -978,0,-1,0,-1,1,1,0,0 -979,0,0,0,0,0,0,0,0 -980,0,-1,0,-1,1,1,0,0 -981,0,0,0,0,0,0,0,0 -982,0,0,0,0,0,0,0,0 -983,0,0,0,0,0,0,0,0 -984,0,-1,0,-1,1,1,0,0 -985,0,0,0,0,0,0,0,0 -986,0,-1,0,-1,1,1,0,0 -987,0,0,0,0,0,0,0,0 -988,0,-1,0,-1,1,1,0,0 -989,0,0,0,0,0,0,0,0 -990,0,0,0,0,0,0,0,0 -991,0,0,0,0,0,0,0,0 -992,0,-1,0,-1,1,1,0,0 -993,0,-1,0,-1,1,1,0,0 -994,0,-1,0,-1,1,1,0,0 -995,0,0,0,0,0,0,0,0 -996,0,-1,0,-1,1,1,0,0 -997,0,0,0,0,0,0,0,0 -998,0,-1,0,-1,1,1,0,0 -999,0,0,0,0,0,0,0,0 -1000,0,-1,0,-1,1,1,0,0 -1001,0,0,0,0,0,0,0,0 -1002,0,-1,0,-1,1,1,0,0 -1003,0,0,0,0,0,0,0,0 -1004,0,-1,0,-1,1,1,0,0 -1005,0,0,0,0,0,0,0,0 -1006,0,0,0,0,0,0,0,0 -1007,0,0,0,0,0,0,0,0 -1008,0,-1,0,-1,1,1,0,0 -1009,0,-1,0,-1,1,1,0,0 -1010,0,-1,0,-1,1,1,0,0 -1011,0,0,0,0,0,0,0,0 -1012,0,-1,0,-1,1,1,0,0 -1013,0,0,0,0,0,0,0,0 -1014,0,-1,0,-1,1,1,0,0 -1015,0,0,0,0,0,0,0,0 -1016,0,-1,0,-1,1,1,0,0 -1017,0,-1,0,-1,1,1,0,0 -1018,0,-1,0,-1,1,1,0,0 -1019,0,0,0,0,0,0,0,0 -1020,0,-1,0,-1,1,1,0,0 -1021,0,-1,0,-1,1,1,0,0 -1022,0,-1,0,-1,1,1,0,0 -1023,0,0,0,0,0,0,0,0 diff --git a/9_Firmware/9_2_FPGA/tb/cosim/compare_mf_tone5.csv b/9_Firmware/9_2_FPGA/tb/cosim/compare_mf_tone5.csv deleted file mode 100644 index cf17bf6..0000000 --- a/9_Firmware/9_2_FPGA/tb/cosim/compare_mf_tone5.csv +++ /dev/null @@ -1,1025 +0,0 @@ -bin,py_i,py_q,rtl_i,rtl_q,py_mag,rtl_mag,diff_i,diff_q -0,32,0,32,0,32,32,0,0 -1,31,0,31,0,31,31,0,0 -2,31,1,31,1,32,32,0,0 -3,31,2,31,2,33,33,0,0 -4,31,3,31,3,34,34,0,0 -5,31,4,31,4,35,35,0,0 -6,31,5,31,5,36,36,0,0 -7,31,6,31,6,37,37,0,0 -8,31,7,31,7,38,38,0,0 -9,30,8,30,8,38,38,0,0 -10,30,9,30,9,39,39,0,0 -11,30,10,30,10,40,40,0,0 -12,29,11,29,11,40,40,0,0 -13,29,12,29,12,41,41,0,0 -14,29,13,29,13,42,42,0,0 -15,28,14,28,14,42,42,0,0 -16,28,15,28,15,43,43,0,0 -17,27,15,27,15,42,42,0,0 -18,27,16,27,16,43,43,0,0 -19,26,17,26,17,43,43,0,0 -20,26,18,26,18,44,44,0,0 -21,25,19,25,19,44,44,0,0 -22,24,19,24,19,43,43,0,0 -23,24,20,24,20,44,44,0,0 -24,23,21,23,21,44,44,0,0 -25,23,22,23,22,45,45,0,0 -26,22,22,22,22,44,44,0,0 -27,21,23,21,23,44,44,0,0 -28,20,24,20,24,44,44,0,0 -29,20,24,20,24,44,44,0,0 -30,19,25,19,25,44,44,0,0 -31,18,26,18,26,44,44,0,0 -32,17,26,17,26,43,43,0,0 -33,16,27,16,27,43,43,0,0 -34,16,27,16,27,43,43,0,0 -35,15,28,15,28,43,43,0,0 -36,14,28,14,28,42,42,0,0 -37,13,29,13,29,42,42,0,0 -38,12,29,12,29,41,41,0,0 -39,11,29,11,29,40,40,0,0 -40,10,30,10,30,40,40,0,0 -41,9,30,9,30,39,39,0,0 -42,8,30,8,30,38,38,0,0 -43,7,30,7,30,37,37,0,0 -44,7,31,7,31,38,38,0,0 -45,6,31,6,31,37,37,0,0 -46,5,31,5,31,36,36,0,0 -47,4,31,4,31,35,35,0,0 -48,3,31,3,31,34,34,0,0 -49,2,31,2,31,33,33,0,0 -50,1,31,1,31,32,32,0,0 -51,0,31,0,31,31,31,0,0 -52,-1,31,-1,31,32,32,0,0 -53,-2,31,-2,31,33,33,0,0 -54,-3,31,-3,31,34,34,0,0 -55,-4,31,-4,31,35,35,0,0 -56,-5,31,-5,31,36,36,0,0 -57,-6,31,-6,31,37,37,0,0 -58,-7,31,-7,31,38,38,0,0 -59,-8,31,-8,31,39,39,0,0 -60,-9,30,-9,30,39,39,0,0 -61,-10,30,-10,30,40,40,0,0 -62,-11,30,-11,30,41,41,0,0 -63,-12,29,-12,29,41,41,0,0 -64,-13,29,-13,29,42,42,0,0 -65,-14,29,-14,29,43,43,0,0 -66,-15,28,-15,28,43,43,0,0 -67,-15,28,-15,28,43,43,0,0 -68,-16,27,-16,27,43,43,0,0 -69,-17,27,-17,27,44,44,0,0 -70,-18,26,-18,26,44,44,0,0 -71,-19,26,-19,26,45,45,0,0 -72,-20,25,-20,25,45,45,0,0 -73,-20,25,-20,25,45,45,0,0 -74,-21,24,-21,24,45,45,0,0 -75,-22,23,-22,23,45,45,0,0 -76,-23,23,-23,23,46,46,0,0 -77,-23,22,-23,22,45,45,0,0 -78,-24,21,-24,21,45,45,0,0 -79,-25,21,-25,21,46,46,0,0 -80,-25,20,-25,20,45,45,0,0 -81,-26,19,-26,19,45,45,0,0 -82,-26,18,-26,18,44,44,0,0 -83,-27,17,-27,17,44,44,0,0 -84,-28,17,-28,17,45,45,0,0 -85,-28,16,-28,16,44,44,0,0 -86,-29,15,-29,15,44,44,0,0 -87,-29,14,-29,14,43,43,0,0 -88,-29,13,-29,13,42,42,0,0 -89,-30,12,-30,12,42,42,0,0 -90,-30,11,-30,11,41,41,0,0 -91,-31,10,-31,10,41,41,0,0 -92,-31,10,-31,10,41,41,0,0 -93,-31,9,-31,9,40,40,0,0 -94,-31,8,-31,8,39,39,0,0 -95,-32,7,-32,7,39,39,0,0 -96,-32,6,-32,6,38,38,0,0 -97,-32,5,-32,5,37,37,0,0 -98,-32,4,-32,4,36,36,0,0 -99,-32,3,-32,3,35,35,0,0 -100,-32,2,-32,2,34,34,0,0 -101,-32,1,-32,1,33,33,0,0 -102,-32,0,-32,0,32,32,0,0 -103,-32,-1,-32,-1,33,33,0,0 -104,-32,-2,-32,-2,34,34,0,0 -105,-32,-3,-32,-3,35,35,0,0 -106,-32,-4,-32,-4,36,36,0,0 -107,-32,-5,-32,-5,37,37,0,0 -108,-32,-6,-32,-6,38,38,0,0 -109,-32,-7,-32,-7,39,39,0,0 -110,-32,-8,-32,-8,40,40,0,0 -111,-31,-9,-31,-9,40,40,0,0 -112,-31,-10,-31,-10,41,41,0,0 -113,-31,-11,-31,-11,42,42,0,0 -114,-30,-12,-30,-12,42,42,0,0 -115,-30,-13,-30,-13,43,43,0,0 -116,-30,-13,-30,-13,43,43,0,0 -117,-29,-14,-29,-14,43,43,0,0 -118,-29,-15,-29,-15,44,44,0,0 -119,-28,-16,-28,-16,44,44,0,0 -120,-28,-17,-28,-17,45,45,0,0 -121,-27,-18,-27,-18,45,45,0,0 -122,-27,-19,-27,-19,46,46,0,0 -123,-26,-19,-26,-19,45,45,0,0 -124,-26,-20,-26,-20,46,46,0,0 -125,-25,-21,-25,-21,46,46,0,0 -126,-24,-22,-24,-22,46,46,0,0 -127,-24,-22,-24,-22,46,46,0,0 -128,-23,-23,-23,-23,46,46,0,0 -129,-22,-24,-22,-24,46,46,0,0 -130,-22,-24,-22,-24,46,46,0,0 -131,-21,-25,-21,-25,46,46,0,0 -132,-20,-26,-20,-26,46,46,0,0 -133,-19,-26,-19,-26,45,45,0,0 -134,-19,-27,-19,-27,46,46,0,0 -135,-18,-27,-18,-27,45,45,0,0 -136,-17,-28,-17,-28,45,45,0,0 -137,-16,-28,-16,-28,44,44,0,0 -138,-15,-29,-15,-29,44,44,0,0 -139,-14,-29,-14,-29,43,43,0,0 -140,-13,-30,-13,-30,43,43,0,0 -141,-13,-30,-13,-30,43,43,0,0 -142,-12,-30,-12,-30,42,42,0,0 -143,-11,-31,-11,-31,42,42,0,0 -144,-10,-31,-10,-31,41,41,0,0 -145,-9,-31,-9,-31,40,40,0,0 -146,-8,-32,-8,-32,40,40,0,0 -147,-7,-32,-7,-32,39,39,0,0 -148,-6,-32,-6,-32,38,38,0,0 -149,-5,-32,-5,-32,37,37,0,0 -150,-4,-32,-4,-32,36,36,0,0 -151,-3,-32,-3,-32,35,35,0,0 -152,-2,-32,-2,-32,34,34,0,0 -153,-1,-32,-1,-32,33,33,0,0 -154,0,-33,0,-33,33,33,0,0 -155,1,-32,1,-32,33,33,0,0 -156,2,-32,2,-32,34,34,0,0 -157,3,-32,3,-32,35,35,0,0 -158,4,-32,4,-32,36,36,0,0 -159,5,-32,5,-32,37,37,0,0 -160,6,-32,6,-32,38,38,0,0 -161,7,-32,7,-32,39,39,0,0 -162,8,-31,8,-31,39,39,0,0 -163,9,-31,9,-31,40,40,0,0 -164,10,-31,10,-31,41,41,0,0 -165,10,-31,10,-31,41,41,0,0 -166,11,-30,11,-30,41,41,0,0 -167,12,-30,12,-30,42,42,0,0 -168,13,-29,13,-29,42,42,0,0 -169,14,-29,14,-29,43,43,0,0 -170,15,-29,15,-29,44,44,0,0 -171,16,-28,16,-28,44,44,0,0 -172,17,-28,17,-28,45,45,0,0 -173,17,-27,17,-27,44,44,0,0 -174,18,-26,18,-26,44,44,0,0 -175,19,-26,19,-26,45,45,0,0 -176,20,-25,20,-25,45,45,0,0 -177,21,-25,21,-25,46,46,0,0 -178,21,-24,21,-24,45,45,0,0 -179,22,-23,22,-23,45,45,0,0 -180,23,-23,23,-23,46,46,0,0 -181,23,-22,23,-22,45,45,0,0 -182,24,-21,24,-21,45,45,0,0 -183,25,-20,25,-20,45,45,0,0 -184,25,-20,25,-20,45,45,0,0 -185,26,-19,26,-19,45,45,0,0 -186,26,-18,26,-18,44,44,0,0 -187,27,-17,27,-17,44,44,0,0 -188,27,-16,27,-16,43,43,0,0 -189,28,-15,28,-15,43,43,0,0 -190,28,-15,28,-15,43,43,0,0 -191,29,-14,29,-14,43,43,0,0 -192,29,-13,29,-13,42,42,0,0 -193,29,-12,29,-12,41,41,0,0 -194,30,-11,30,-11,41,41,0,0 -195,30,-10,30,-10,40,40,0,0 -196,30,-9,30,-9,39,39,0,0 -197,31,-8,31,-8,39,39,0,0 -198,31,-7,31,-7,38,38,0,0 -199,31,-6,31,-6,37,37,0,0 -200,31,-5,31,-5,36,36,0,0 -201,31,-4,31,-4,35,35,0,0 -202,31,-3,31,-3,34,34,0,0 -203,31,-2,31,-2,33,33,0,0 -204,31,-1,31,-1,32,32,0,0 -205,31,0,31,0,31,31,0,0 -206,31,1,31,1,32,32,0,0 -207,31,2,31,2,33,33,0,0 -208,31,3,31,3,34,34,0,0 -209,31,4,31,4,35,35,0,0 -210,31,5,31,5,36,36,0,0 -211,31,6,31,6,37,37,0,0 -212,31,7,31,7,38,38,0,0 -213,30,7,30,7,37,37,0,0 -214,30,8,30,8,38,38,0,0 -215,30,9,30,9,39,39,0,0 -216,30,10,30,10,40,40,0,0 -217,29,11,29,11,40,40,0,0 -218,29,12,29,12,41,41,0,0 -219,29,13,29,13,42,42,0,0 -220,28,14,28,14,42,42,0,0 -221,28,15,28,15,43,43,0,0 -222,27,16,27,16,43,43,0,0 -223,27,16,27,16,43,43,0,0 -224,26,17,26,17,43,43,0,0 -225,26,18,26,18,44,44,0,0 -226,25,19,25,19,44,44,0,0 -227,24,20,24,20,44,44,0,0 -228,24,20,24,20,44,44,0,0 -229,23,21,23,21,44,44,0,0 -230,22,22,22,22,44,44,0,0 -231,22,23,22,23,45,45,0,0 -232,21,23,21,23,44,44,0,0 -233,20,24,20,24,44,44,0,0 -234,19,24,19,24,43,43,0,0 -235,19,25,19,25,44,44,0,0 -236,18,26,18,26,44,44,0,0 -237,17,26,17,26,43,43,0,0 -238,16,27,16,27,43,43,0,0 -239,15,27,15,27,42,42,0,0 -240,15,28,15,28,43,43,0,0 -241,14,28,14,28,42,42,0,0 -242,13,29,13,29,42,42,0,0 -243,12,29,12,29,41,41,0,0 -244,11,29,11,29,40,40,0,0 -245,10,30,10,30,40,40,0,0 -246,9,30,9,30,39,39,0,0 -247,8,30,8,30,38,38,0,0 -248,7,31,7,31,38,38,0,0 -249,6,31,6,31,37,37,0,0 -250,5,31,5,31,36,36,0,0 -251,4,31,4,31,35,35,0,0 -252,3,31,3,31,34,34,0,0 -253,2,31,2,31,33,33,0,0 -254,1,31,1,31,32,32,0,0 -255,0,31,0,31,31,31,0,0 -256,0,31,0,31,31,31,0,0 -257,-1,31,-1,31,32,32,0,0 -258,-2,31,-2,31,33,33,0,0 -259,-3,31,-3,31,34,34,0,0 -260,-4,31,-4,31,35,35,0,0 -261,-5,31,-5,31,36,36,0,0 -262,-6,31,-6,31,37,37,0,0 -263,-7,31,-7,31,38,38,0,0 -264,-8,31,-8,31,39,39,0,0 -265,-9,30,-9,30,39,39,0,0 -266,-10,30,-10,30,40,40,0,0 -267,-11,30,-11,30,41,41,0,0 -268,-12,29,-12,29,41,41,0,0 -269,-13,29,-13,29,42,42,0,0 -270,-14,29,-14,29,43,43,0,0 -271,-15,28,-15,28,43,43,0,0 -272,-16,28,-16,28,44,44,0,0 -273,-16,27,-16,27,43,43,0,0 -274,-17,27,-17,27,44,44,0,0 -275,-18,26,-18,26,44,44,0,0 -276,-19,26,-19,26,45,45,0,0 -277,-20,25,-20,25,45,45,0,0 -278,-20,24,-20,24,44,44,0,0 -279,-21,24,-21,24,45,45,0,0 -280,-22,23,-22,23,45,45,0,0 -281,-23,23,-23,23,46,46,0,0 -282,-23,22,-23,22,45,45,0,0 -283,-24,21,-24,21,45,45,0,0 -284,-25,20,-25,20,45,45,0,0 -285,-25,20,-25,20,45,45,0,0 -286,-26,19,-26,19,45,45,0,0 -287,-27,18,-27,18,45,45,0,0 -288,-27,17,-27,17,44,44,0,0 -289,-28,16,-28,16,44,44,0,0 -290,-28,16,-28,16,44,44,0,0 -291,-29,15,-29,15,44,44,0,0 -292,-29,14,-29,14,43,43,0,0 -293,-30,13,-30,13,43,43,0,0 -294,-30,12,-30,12,42,42,0,0 -295,-30,11,-30,11,41,41,0,0 -296,-31,10,-31,10,41,41,0,0 -297,-31,9,-31,9,40,40,0,0 -298,-31,8,-31,8,39,39,0,0 -299,-31,7,-31,7,38,38,0,0 -300,-32,7,-32,7,39,39,0,0 -301,-32,6,-32,6,38,38,0,0 -302,-32,5,-32,5,37,37,0,0 -303,-32,4,-32,4,36,36,0,0 -304,-32,3,-32,3,35,35,0,0 -305,-32,2,-32,2,34,34,0,0 -306,-32,1,-32,1,33,33,0,0 -307,-32,0,-32,0,32,32,0,0 -308,-32,-1,-32,-1,33,33,0,0 -309,-32,-2,-32,-2,34,34,0,0 -310,-32,-3,-32,-3,35,35,0,0 -311,-32,-4,-32,-4,36,36,0,0 -312,-32,-5,-32,-5,37,37,0,0 -313,-32,-6,-32,-6,38,38,0,0 -314,-32,-7,-32,-7,39,39,0,0 -315,-32,-8,-32,-8,40,40,0,0 -316,-31,-9,-31,-9,40,40,0,0 -317,-31,-10,-31,-10,41,41,0,0 -318,-31,-11,-31,-11,42,42,0,0 -319,-30,-12,-30,-12,42,42,0,0 -320,-30,-13,-30,-13,43,43,0,0 -321,-30,-14,-30,-14,44,44,0,0 -322,-29,-15,-29,-15,44,44,0,0 -323,-29,-15,-29,-15,44,44,0,0 -324,-28,-16,-28,-16,44,44,0,0 -325,-28,-17,-28,-17,45,45,0,0 -326,-27,-18,-27,-18,45,45,0,0 -327,-27,-19,-27,-19,46,46,0,0 -328,-26,-20,-26,-20,46,46,0,0 -329,-26,-20,-26,-20,46,46,0,0 -330,-25,-21,-25,-21,46,46,0,0 -331,-24,-22,-24,-22,46,46,0,0 -332,-24,-23,-24,-23,47,47,0,0 -333,-23,-23,-23,-23,46,46,0,0 -334,-22,-24,-22,-24,46,46,0,0 -335,-22,-25,-22,-25,47,47,0,0 -336,-21,-25,-21,-25,46,46,0,0 -337,-20,-26,-20,-26,46,46,0,0 -338,-19,-26,-19,-26,45,45,0,0 -339,-18,-27,-18,-27,45,45,0,0 -340,-18,-28,-18,-28,46,46,0,0 -341,-17,-28,-17,-28,45,45,0,0 -342,-16,-29,-16,-29,45,45,0,0 -343,-15,-29,-15,-29,44,44,0,0 -344,-14,-29,-14,-29,43,43,0,0 -345,-13,-30,-13,-30,43,43,0,0 -346,-12,-30,-12,-30,42,42,0,0 -347,-11,-31,-11,-31,42,42,0,0 -348,-11,-31,-11,-31,42,42,0,0 -349,-10,-31,-10,-31,41,41,0,0 -350,-9,-31,-9,-31,40,40,0,0 -351,-8,-32,-8,-32,40,40,0,0 -352,-7,-32,-7,-32,39,39,0,0 -353,-6,-32,-6,-32,38,38,0,0 -354,-5,-32,-5,-32,37,37,0,0 -355,-4,-32,-4,-32,36,36,0,0 -356,-3,-32,-3,-32,35,35,0,0 -357,-2,-32,-2,-32,34,34,0,0 -358,-1,-32,-1,-32,33,33,0,0 -359,0,-32,0,-32,32,32,0,0 -360,1,-32,1,-32,33,33,0,0 -361,2,-32,2,-32,34,34,0,0 -362,3,-32,3,-32,35,35,0,0 -363,4,-32,4,-32,36,36,0,0 -364,5,-32,5,-32,37,37,0,0 -365,6,-32,6,-32,38,38,0,0 -366,7,-32,7,-32,39,39,0,0 -367,8,-31,8,-31,39,39,0,0 -368,9,-31,9,-31,40,40,0,0 -369,10,-31,10,-31,41,41,0,0 -370,11,-30,11,-30,41,41,0,0 -371,12,-30,12,-30,42,42,0,0 -372,12,-30,12,-30,42,42,0,0 -373,13,-29,13,-29,42,42,0,0 -374,14,-29,14,-29,43,43,0,0 -375,15,-28,15,-28,43,43,0,0 -376,16,-28,16,-28,44,44,0,0 -377,17,-27,17,-27,44,44,0,0 -378,18,-27,18,-27,45,45,0,0 -379,18,-26,18,-26,44,44,0,0 -380,19,-26,19,-26,45,45,0,0 -381,20,-25,20,-25,45,45,0,0 -382,21,-24,21,-24,45,45,0,0 -383,21,-24,21,-24,45,45,0,0 -384,22,-23,22,-23,45,45,0,0 -385,23,-22,23,-22,45,45,0,0 -386,23,-22,23,-22,45,45,0,0 -387,24,-21,24,-21,45,45,0,0 -388,25,-20,25,-20,45,45,0,0 -389,25,-19,25,-19,44,44,0,0 -390,26,-19,26,-19,45,45,0,0 -391,26,-18,26,-18,44,44,0,0 -392,27,-17,27,-17,44,44,0,0 -393,27,-16,27,-16,43,43,0,0 -394,28,-15,28,-15,43,43,0,0 -395,28,-14,28,-14,42,42,0,0 -396,29,-13,29,-13,42,42,0,0 -397,29,-13,29,-13,42,42,0,0 -398,29,-12,29,-12,41,41,0,0 -399,30,-11,30,-11,41,41,0,0 -400,30,-10,30,-10,40,40,0,0 -401,30,-9,30,-9,39,39,0,0 -402,31,-8,31,-8,39,39,0,0 -403,31,-7,31,-7,38,38,0,0 -404,31,-6,31,-6,37,37,0,0 -405,31,-5,31,-5,36,36,0,0 -406,31,-4,31,-4,35,35,0,0 -407,31,-3,31,-3,34,34,0,0 -408,31,-2,31,-2,33,33,0,0 -409,31,-1,31,-1,32,32,0,0 -410,31,0,31,0,31,31,0,0 -411,31,1,31,1,32,32,0,0 -412,31,2,31,2,33,33,0,0 -413,31,3,31,3,34,34,0,0 -414,31,4,31,4,35,35,0,0 -415,31,5,31,5,36,36,0,0 -416,31,6,31,6,37,37,0,0 -417,31,7,31,7,38,38,0,0 -418,30,8,30,8,38,38,0,0 -419,30,9,30,9,39,39,0,0 -420,30,10,30,10,40,40,0,0 -421,30,10,30,10,40,40,0,0 -422,29,11,29,11,40,40,0,0 -423,29,12,29,12,41,41,0,0 -424,28,13,28,13,41,41,0,0 -425,28,14,28,14,42,42,0,0 -426,28,15,28,15,43,43,0,0 -427,27,16,27,16,43,43,0,0 -428,27,17,27,17,44,44,0,0 -429,26,17,26,17,43,43,0,0 -430,25,18,25,18,43,43,0,0 -431,25,19,25,19,44,44,0,0 -432,24,20,24,20,44,44,0,0 -433,24,21,24,21,45,45,0,0 -434,23,21,23,21,44,44,0,0 -435,22,22,22,22,44,44,0,0 -436,22,23,22,23,45,45,0,0 -437,21,23,21,23,44,44,0,0 -438,20,24,20,24,44,44,0,0 -439,19,25,19,25,44,44,0,0 -440,19,25,19,25,44,44,0,0 -441,18,26,18,26,44,44,0,0 -442,17,26,17,26,43,43,0,0 -443,16,27,16,27,43,43,0,0 -444,15,27,15,27,42,42,0,0 -445,14,28,14,28,42,42,0,0 -446,14,28,14,28,42,42,0,0 -447,13,29,13,29,42,42,0,0 -448,12,29,12,29,41,41,0,0 -449,11,29,11,29,40,40,0,0 -450,10,30,10,30,40,40,0,0 -451,9,30,9,30,39,39,0,0 -452,8,30,8,30,38,38,0,0 -453,7,31,7,31,38,38,0,0 -454,6,31,6,31,37,37,0,0 -455,5,31,5,31,36,36,0,0 -456,4,31,4,31,35,35,0,0 -457,3,31,3,31,34,34,0,0 -458,2,31,2,31,33,33,0,0 -459,1,31,1,31,32,32,0,0 -460,0,31,0,31,31,31,0,0 -461,-1,31,-1,31,32,32,0,0 -462,-2,31,-2,31,33,33,0,0 -463,-3,31,-3,31,34,34,0,0 -464,-4,31,-4,31,35,35,0,0 -465,-5,31,-5,31,36,36,0,0 -466,-6,31,-6,31,37,37,0,0 -467,-7,31,-7,31,38,38,0,0 -468,-8,31,-8,31,39,39,0,0 -469,-8,30,-8,30,38,38,0,0 -470,-9,30,-9,30,39,39,0,0 -471,-10,30,-10,30,40,40,0,0 -472,-11,30,-11,30,41,41,0,0 -473,-12,29,-12,29,41,41,0,0 -474,-13,29,-13,29,42,42,0,0 -475,-14,29,-14,29,43,43,0,0 -476,-15,28,-15,28,43,43,0,0 -477,-16,28,-16,28,44,44,0,0 -478,-17,27,-17,27,44,44,0,0 -479,-17,27,-17,27,44,44,0,0 -480,-18,26,-18,26,44,44,0,0 -481,-19,26,-19,26,45,45,0,0 -482,-20,25,-20,25,45,45,0,0 -483,-21,24,-21,24,45,45,0,0 -484,-21,24,-21,24,45,45,0,0 -485,-22,23,-22,23,45,45,0,0 -486,-23,22,-23,22,45,45,0,0 -487,-24,22,-24,22,46,46,0,0 -488,-24,21,-24,21,45,45,0,0 -489,-25,20,-25,20,45,45,0,0 -490,-25,19,-25,19,44,44,0,0 -491,-26,19,-26,19,45,45,0,0 -492,-27,18,-27,18,45,45,0,0 -493,-27,17,-27,17,44,44,0,0 -494,-28,16,-28,16,44,44,0,0 -495,-28,15,-28,15,43,43,0,0 -496,-29,15,-29,15,44,44,0,0 -497,-29,14,-29,14,43,43,0,0 -498,-30,13,-30,13,43,43,0,0 -499,-30,12,-30,12,42,42,0,0 -500,-30,11,-30,11,41,41,0,0 -501,-31,10,-31,10,41,41,0,0 -502,-31,9,-31,9,40,40,0,0 -503,-31,8,-31,8,39,39,0,0 -504,-32,7,-32,7,39,39,0,0 -505,-32,6,-32,6,38,38,0,0 -506,-32,5,-32,5,37,37,0,0 -507,-32,4,-32,4,36,36,0,0 -508,-32,3,-32,3,35,35,0,0 -509,-32,2,-32,2,34,34,0,0 -510,-32,1,-32,1,33,33,0,0 -511,-32,0,-32,0,32,32,0,0 -512,-32,0,-32,0,32,32,0,0 -513,-32,-1,-32,-1,33,33,0,0 -514,-32,-2,-32,-2,34,34,0,0 -515,-32,-3,-32,-3,35,35,0,0 -516,-32,-4,-32,-4,36,36,0,0 -517,-32,-5,-32,-5,37,37,0,0 -518,-32,-6,-32,-6,38,38,0,0 -519,-32,-7,-32,-7,39,39,0,0 -520,-32,-8,-32,-8,40,40,0,0 -521,-31,-9,-31,-9,40,40,0,0 -522,-31,-10,-31,-10,41,41,0,0 -523,-31,-11,-31,-11,42,42,0,0 -524,-30,-12,-30,-12,42,42,0,0 -525,-30,-13,-30,-13,43,43,0,0 -526,-30,-14,-30,-14,44,44,0,0 -527,-29,-15,-29,-15,44,44,0,0 -528,-29,-16,-29,-16,45,45,0,0 -529,-28,-16,-28,-16,44,44,0,0 -530,-28,-17,-28,-17,45,45,0,0 -531,-27,-18,-27,-18,45,45,0,0 -532,-27,-19,-27,-19,46,46,0,0 -533,-26,-20,-26,-20,46,46,0,0 -534,-25,-20,-25,-20,45,45,0,0 -535,-25,-21,-25,-21,46,46,0,0 -536,-24,-22,-24,-22,46,46,0,0 -537,-24,-23,-24,-23,47,47,0,0 -538,-23,-23,-23,-23,46,46,0,0 -539,-22,-24,-22,-24,46,46,0,0 -540,-21,-25,-21,-25,46,46,0,0 -541,-21,-25,-21,-25,46,46,0,0 -542,-20,-26,-20,-26,46,46,0,0 -543,-19,-27,-19,-27,46,46,0,0 -544,-18,-27,-18,-27,45,45,0,0 -545,-17,-28,-17,-28,45,45,0,0 -546,-17,-28,-17,-28,45,45,0,0 -547,-16,-29,-16,-29,45,45,0,0 -548,-15,-29,-15,-29,44,44,0,0 -549,-14,-29,-14,-29,43,43,0,0 -550,-13,-30,-13,-30,43,43,0,0 -551,-12,-30,-12,-30,42,42,0,0 -552,-11,-31,-11,-31,42,42,0,0 -553,-10,-31,-10,-31,41,41,0,0 -554,-9,-31,-9,-31,40,40,0,0 -555,-8,-31,-8,-31,39,39,0,0 -556,-8,-32,-8,-32,40,40,0,0 -557,-7,-32,-7,-32,39,39,0,0 -558,-6,-32,-6,-32,38,38,0,0 -559,-5,-32,-5,-32,37,37,0,0 -560,-4,-32,-4,-32,36,36,0,0 -561,-3,-32,-3,-32,35,35,0,0 -562,-2,-32,-2,-32,34,34,0,0 -563,-1,-32,-1,-32,33,33,0,0 -564,0,-32,0,-32,32,32,0,0 -565,1,-32,1,-32,33,33,0,0 -566,2,-32,2,-32,34,34,0,0 -567,3,-32,3,-32,35,35,0,0 -568,4,-32,4,-32,36,36,0,0 -569,5,-32,5,-32,37,37,0,0 -570,6,-32,6,-32,38,38,0,0 -571,7,-32,7,-32,39,39,0,0 -572,8,-31,8,-31,39,39,0,0 -573,9,-31,9,-31,40,40,0,0 -574,10,-31,10,-31,41,41,0,0 -575,11,-30,11,-30,41,41,0,0 -576,12,-30,12,-30,42,42,0,0 -577,13,-30,13,-30,43,43,0,0 -578,14,-29,14,-29,43,43,0,0 -579,14,-29,14,-29,43,43,0,0 -580,15,-28,15,-28,43,43,0,0 -581,16,-28,16,-28,44,44,0,0 -582,17,-27,17,-27,44,44,0,0 -583,18,-27,18,-27,45,45,0,0 -584,19,-26,19,-26,45,45,0,0 -585,19,-26,19,-26,45,45,0,0 -586,20,-25,20,-25,45,45,0,0 -587,21,-24,21,-24,45,45,0,0 -588,22,-24,22,-24,46,46,0,0 -589,22,-23,22,-23,45,45,0,0 -590,23,-22,23,-22,45,45,0,0 -591,24,-22,24,-22,46,46,0,0 -592,24,-21,24,-21,45,45,0,0 -593,25,-20,25,-20,45,45,0,0 -594,25,-19,25,-19,44,44,0,0 -595,26,-18,26,-18,44,44,0,0 -596,27,-18,27,-18,45,45,0,0 -597,27,-17,27,-17,44,44,0,0 -598,28,-16,28,-16,44,44,0,0 -599,28,-15,28,-15,43,43,0,0 -600,28,-14,28,-14,42,42,0,0 -601,29,-13,29,-13,42,42,0,0 -602,29,-12,29,-12,41,41,0,0 -603,30,-11,30,-11,41,41,0,0 -604,30,-11,30,-11,41,41,0,0 -605,30,-10,30,-10,40,40,0,0 -606,30,-9,30,-9,39,39,0,0 -607,31,-8,31,-8,39,39,0,0 -608,31,-7,31,-7,38,38,0,0 -609,31,-6,31,-6,37,37,0,0 -610,31,-5,31,-5,36,36,0,0 -611,31,-4,31,-4,35,35,0,0 -612,31,-3,31,-3,34,34,0,0 -613,31,-2,31,-2,33,33,0,0 -614,31,-1,31,-1,32,32,0,0 -615,31,0,31,0,31,31,0,0 -616,31,1,31,1,32,32,0,0 -617,31,2,31,2,33,33,0,0 -618,31,3,31,3,34,34,0,0 -619,31,4,31,4,35,35,0,0 -620,31,5,31,5,36,36,0,0 -621,31,6,31,6,37,37,0,0 -622,31,7,31,7,38,38,0,0 -623,30,8,30,8,38,38,0,0 -624,30,9,30,9,39,39,0,0 -625,30,10,30,10,40,40,0,0 -626,29,11,29,11,40,40,0,0 -627,29,12,29,12,41,41,0,0 -628,29,12,29,12,41,41,0,0 -629,28,13,28,13,41,41,0,0 -630,28,14,28,14,42,42,0,0 -631,27,15,27,15,42,42,0,0 -632,27,16,27,16,43,43,0,0 -633,26,17,26,17,43,43,0,0 -634,26,18,26,18,44,44,0,0 -635,25,18,25,18,43,43,0,0 -636,25,19,25,19,44,44,0,0 -637,24,20,24,20,44,44,0,0 -638,23,21,23,21,44,44,0,0 -639,23,21,23,21,44,44,0,0 -640,22,22,22,22,44,44,0,0 -641,21,23,21,23,44,44,0,0 -642,21,23,21,23,44,44,0,0 -643,20,24,20,24,44,44,0,0 -644,19,25,19,25,44,44,0,0 -645,18,25,18,25,43,43,0,0 -646,18,26,18,26,44,44,0,0 -647,17,26,17,26,43,43,0,0 -648,16,27,16,27,43,43,0,0 -649,15,27,15,27,42,42,0,0 -650,14,28,14,28,42,42,0,0 -651,13,28,13,28,41,41,0,0 -652,12,29,12,29,41,41,0,0 -653,12,29,12,29,41,41,0,0 -654,11,29,11,29,40,40,0,0 -655,10,30,10,30,40,40,0,0 -656,9,30,9,30,39,39,0,0 -657,8,30,8,30,38,38,0,0 -658,7,31,7,31,38,38,0,0 -659,6,31,6,31,37,37,0,0 -660,5,31,5,31,36,36,0,0 -661,4,31,4,31,35,35,0,0 -662,3,31,3,31,34,34,0,0 -663,2,31,2,31,33,33,0,0 -664,1,31,1,31,32,32,0,0 -665,0,31,0,31,31,31,0,0 -666,-1,32,-1,32,33,33,0,0 -667,-2,31,-2,31,33,33,0,0 -668,-3,31,-3,31,34,34,0,0 -669,-4,31,-4,31,35,35,0,0 -670,-5,31,-5,31,36,36,0,0 -671,-6,31,-6,31,37,37,0,0 -672,-7,31,-7,31,38,38,0,0 -673,-8,31,-8,31,39,39,0,0 -674,-9,30,-9,30,39,39,0,0 -675,-10,30,-10,30,40,40,0,0 -676,-11,30,-11,30,41,41,0,0 -677,-11,30,-11,30,41,41,0,0 -678,-12,29,-12,29,41,41,0,0 -679,-13,29,-13,29,42,42,0,0 -680,-14,28,-14,28,42,42,0,0 -681,-15,28,-15,28,43,43,0,0 -682,-16,28,-16,28,44,44,0,0 -683,-17,27,-17,27,44,44,0,0 -684,-18,27,-18,27,45,45,0,0 -685,-18,26,-18,26,44,44,0,0 -686,-19,25,-19,25,44,44,0,0 -687,-20,25,-20,25,45,45,0,0 -688,-21,24,-21,24,45,45,0,0 -689,-22,24,-22,24,46,46,0,0 -690,-22,23,-22,23,45,45,0,0 -691,-23,22,-23,22,45,45,0,0 -692,-24,22,-24,22,46,46,0,0 -693,-24,21,-24,21,45,45,0,0 -694,-25,20,-25,20,45,45,0,0 -695,-26,19,-26,19,45,45,0,0 -696,-26,19,-26,19,45,45,0,0 -697,-27,18,-27,18,45,45,0,0 -698,-27,17,-27,17,44,44,0,0 -699,-28,16,-28,16,44,44,0,0 -700,-28,15,-28,15,43,43,0,0 -701,-29,14,-29,14,43,43,0,0 -702,-29,14,-29,14,43,43,0,0 -703,-30,13,-30,13,43,43,0,0 -704,-30,12,-30,12,42,42,0,0 -705,-30,11,-30,11,41,41,0,0 -706,-31,10,-31,10,41,41,0,0 -707,-31,9,-31,9,40,40,0,0 -708,-31,8,-31,8,39,39,0,0 -709,-32,7,-32,7,39,39,0,0 -710,-32,6,-32,6,38,38,0,0 -711,-32,5,-32,5,37,37,0,0 -712,-32,4,-32,4,36,36,0,0 -713,-32,3,-32,3,35,35,0,0 -714,-32,2,-32,2,34,34,0,0 -715,-32,1,-32,1,33,33,0,0 -716,-32,0,-32,0,32,32,0,0 -717,-32,-1,-32,-1,33,33,0,0 -718,-32,-2,-32,-2,34,34,0,0 -719,-32,-3,-32,-3,35,35,0,0 -720,-32,-4,-32,-4,36,36,0,0 -721,-32,-5,-32,-5,37,37,0,0 -722,-32,-6,-32,-6,38,38,0,0 -723,-32,-7,-32,-7,39,39,0,0 -724,-32,-8,-32,-8,40,40,0,0 -725,-31,-8,-31,-8,39,39,0,0 -726,-31,-9,-31,-9,40,40,0,0 -727,-31,-10,-31,-10,41,41,0,0 -728,-31,-11,-31,-11,42,42,0,0 -729,-30,-12,-30,-12,42,42,0,0 -730,-30,-13,-30,-13,43,43,0,0 -731,-29,-14,-29,-14,43,43,0,0 -732,-29,-15,-29,-15,44,44,0,0 -733,-29,-16,-29,-16,45,45,0,0 -734,-28,-17,-28,-17,45,45,0,0 -735,-28,-17,-28,-17,45,45,0,0 -736,-27,-18,-27,-18,45,45,0,0 -737,-27,-19,-27,-19,46,46,0,0 -738,-26,-20,-26,-20,46,46,0,0 -739,-25,-21,-25,-21,46,46,0,0 -740,-25,-21,-25,-21,46,46,0,0 -741,-24,-22,-24,-22,46,46,0,0 -742,-23,-23,-23,-23,46,46,0,0 -743,-23,-24,-23,-24,47,47,0,0 -744,-22,-24,-22,-24,46,46,0,0 -745,-21,-25,-21,-25,46,46,0,0 -746,-20,-25,-20,-25,45,45,0,0 -747,-20,-26,-20,-26,46,46,0,0 -748,-19,-27,-19,-27,46,46,0,0 -749,-18,-27,-18,-27,45,45,0,0 -750,-17,-28,-17,-28,45,45,0,0 -751,-16,-28,-16,-28,44,44,0,0 -752,-16,-29,-16,-29,45,45,0,0 -753,-15,-29,-15,-29,44,44,0,0 -754,-14,-30,-14,-30,44,44,0,0 -755,-13,-30,-13,-30,43,43,0,0 -756,-12,-30,-12,-30,42,42,0,0 -757,-11,-31,-11,-31,42,42,0,0 -758,-10,-31,-10,-31,41,41,0,0 -759,-9,-31,-9,-31,40,40,0,0 -760,-8,-32,-8,-32,40,40,0,0 -761,-7,-32,-7,-32,39,39,0,0 -762,-6,-32,-6,-32,38,38,0,0 -763,-5,-32,-5,-32,37,37,0,0 -764,-4,-32,-4,-32,36,36,0,0 -765,-3,-32,-3,-32,35,35,0,0 -766,-2,-32,-2,-32,34,34,0,0 -767,-1,-32,-1,-32,33,33,0,0 -768,0,-32,0,-32,32,32,0,0 -769,0,-32,0,-32,32,32,0,0 -770,1,-32,1,-32,33,33,0,0 -771,2,-32,2,-32,34,34,0,0 -772,3,-32,3,-32,35,35,0,0 -773,4,-32,4,-32,36,36,0,0 -774,5,-32,5,-32,37,37,0,0 -775,6,-32,6,-32,38,38,0,0 -776,7,-32,7,-32,39,39,0,0 -777,8,-31,8,-31,39,39,0,0 -778,9,-31,9,-31,40,40,0,0 -779,10,-31,10,-31,41,41,0,0 -780,11,-30,11,-30,41,41,0,0 -781,12,-30,12,-30,42,42,0,0 -782,13,-30,13,-30,43,43,0,0 -783,14,-29,14,-29,43,43,0,0 -784,15,-29,15,-29,44,44,0,0 -785,15,-28,15,-28,43,43,0,0 -786,16,-28,16,-28,44,44,0,0 -787,17,-27,17,-27,44,44,0,0 -788,18,-27,18,-27,45,45,0,0 -789,19,-26,19,-26,45,45,0,0 -790,19,-25,19,-25,44,44,0,0 -791,20,-25,20,-25,45,45,0,0 -792,21,-24,21,-24,45,45,0,0 -793,22,-24,22,-24,46,46,0,0 -794,22,-23,22,-23,45,45,0,0 -795,23,-22,23,-22,45,45,0,0 -796,24,-21,24,-21,45,45,0,0 -797,24,-21,24,-21,45,45,0,0 -798,25,-20,25,-20,45,45,0,0 -799,26,-19,26,-19,45,45,0,0 -800,26,-18,26,-18,44,44,0,0 -801,27,-17,27,-17,44,44,0,0 -802,27,-17,27,-17,44,44,0,0 -803,28,-16,28,-16,44,44,0,0 -804,28,-15,28,-15,43,43,0,0 -805,29,-14,29,-14,43,43,0,0 -806,29,-13,29,-13,42,42,0,0 -807,29,-12,29,-12,41,41,0,0 -808,30,-11,30,-11,41,41,0,0 -809,30,-10,30,-10,40,40,0,0 -810,30,-9,30,-9,39,39,0,0 -811,30,-8,30,-8,38,38,0,0 -812,31,-8,31,-8,39,39,0,0 -813,31,-7,31,-7,38,38,0,0 -814,31,-6,31,-6,37,37,0,0 -815,31,-5,31,-5,36,36,0,0 -816,31,-4,31,-4,35,35,0,0 -817,31,-3,31,-3,34,34,0,0 -818,31,-2,31,-2,33,33,0,0 -819,31,-1,31,-1,32,32,0,0 -820,31,0,31,0,31,31,0,0 -821,31,1,31,1,32,32,0,0 -822,31,2,31,2,33,33,0,0 -823,31,3,31,3,34,34,0,0 -824,31,4,31,4,35,35,0,0 -825,31,5,31,5,36,36,0,0 -826,31,6,31,6,37,37,0,0 -827,31,7,31,7,38,38,0,0 -828,30,8,30,8,38,38,0,0 -829,30,9,30,9,39,39,0,0 -830,30,10,30,10,40,40,0,0 -831,29,11,29,11,40,40,0,0 -832,29,12,29,12,41,41,0,0 -833,29,13,29,13,42,42,0,0 -834,28,14,28,14,42,42,0,0 -835,28,14,28,14,42,42,0,0 -836,27,15,27,15,42,42,0,0 -837,27,16,27,16,43,43,0,0 -838,26,17,26,17,43,43,0,0 -839,26,18,26,18,44,44,0,0 -840,25,19,25,19,44,44,0,0 -841,25,19,25,19,44,44,0,0 -842,24,20,24,20,44,44,0,0 -843,23,21,23,21,44,44,0,0 -844,23,22,23,22,45,45,0,0 -845,22,22,22,22,44,44,0,0 -846,21,23,21,23,44,44,0,0 -847,21,24,21,24,45,45,0,0 -848,20,24,20,24,44,44,0,0 -849,19,25,19,25,44,44,0,0 -850,18,25,18,25,43,43,0,0 -851,17,26,17,26,43,43,0,0 -852,17,27,17,27,44,44,0,0 -853,16,27,16,27,43,43,0,0 -854,15,28,15,28,43,43,0,0 -855,14,28,14,28,42,42,0,0 -856,13,28,13,28,41,41,0,0 -857,12,29,12,29,41,41,0,0 -858,11,29,11,29,40,40,0,0 -859,10,30,10,30,40,40,0,0 -860,10,30,10,30,40,40,0,0 -861,9,30,9,30,39,39,0,0 -862,8,30,8,30,38,38,0,0 -863,7,31,7,31,38,38,0,0 -864,6,31,6,31,37,37,0,0 -865,5,31,5,31,36,36,0,0 -866,4,31,4,31,35,35,0,0 -867,3,31,3,31,34,34,0,0 -868,2,31,2,31,33,33,0,0 -869,1,31,1,31,32,32,0,0 -870,0,31,0,31,31,31,0,0 -871,-1,31,-1,31,32,32,0,0 -872,-2,31,-2,31,33,33,0,0 -873,-3,31,-3,31,34,34,0,0 -874,-4,31,-4,31,35,35,0,0 -875,-5,31,-5,31,36,36,0,0 -876,-6,31,-6,31,37,37,0,0 -877,-7,31,-7,31,38,38,0,0 -878,-8,31,-8,31,39,39,0,0 -879,-9,30,-9,30,39,39,0,0 -880,-10,30,-10,30,40,40,0,0 -881,-11,30,-11,30,41,41,0,0 -882,-12,29,-12,29,41,41,0,0 -883,-13,29,-13,29,42,42,0,0 -884,-13,29,-13,29,42,42,0,0 -885,-14,28,-14,28,42,42,0,0 -886,-15,28,-15,28,43,43,0,0 -887,-16,27,-16,27,43,43,0,0 -888,-17,27,-17,27,44,44,0,0 -889,-18,26,-18,26,44,44,0,0 -890,-19,26,-19,26,45,45,0,0 -891,-19,25,-19,25,44,44,0,0 -892,-20,25,-20,25,45,45,0,0 -893,-21,24,-21,24,45,45,0,0 -894,-22,23,-22,23,45,45,0,0 -895,-22,23,-22,23,45,45,0,0 -896,-23,22,-23,22,45,45,0,0 -897,-24,21,-24,21,45,45,0,0 -898,-24,21,-24,21,45,45,0,0 -899,-25,20,-25,20,45,45,0,0 -900,-26,19,-26,19,45,45,0,0 -901,-26,18,-26,18,44,44,0,0 -902,-27,18,-27,18,45,45,0,0 -903,-27,17,-27,17,44,44,0,0 -904,-28,16,-28,16,44,44,0,0 -905,-28,15,-28,15,43,43,0,0 -906,-29,14,-29,14,43,43,0,0 -907,-29,13,-29,13,42,42,0,0 -908,-30,12,-30,12,42,42,0,0 -909,-30,12,-30,12,42,42,0,0 -910,-30,11,-30,11,41,41,0,0 -911,-31,10,-31,10,41,41,0,0 -912,-31,9,-31,9,40,40,0,0 -913,-31,8,-31,8,39,39,0,0 -914,-32,7,-32,7,39,39,0,0 -915,-32,6,-32,6,38,38,0,0 -916,-32,5,-32,5,37,37,0,0 -917,-32,4,-32,4,36,36,0,0 -918,-32,3,-32,3,35,35,0,0 -919,-32,2,-32,2,34,34,0,0 -920,-32,1,-32,1,33,33,0,0 -921,-32,0,-32,0,32,32,0,0 -922,-32,-1,-32,-1,33,33,0,0 -923,-32,-2,-32,-2,34,34,0,0 -924,-32,-3,-32,-3,35,35,0,0 -925,-32,-4,-32,-4,36,36,0,0 -926,-32,-5,-32,-5,37,37,0,0 -927,-32,-6,-32,-6,38,38,0,0 -928,-32,-7,-32,-7,39,39,0,0 -929,-32,-8,-32,-8,40,40,0,0 -930,-31,-9,-31,-9,40,40,0,0 -931,-31,-10,-31,-10,41,41,0,0 -932,-31,-11,-31,-11,42,42,0,0 -933,-31,-11,-31,-11,42,42,0,0 -934,-30,-12,-30,-12,42,42,0,0 -935,-30,-13,-30,-13,43,43,0,0 -936,-29,-14,-29,-14,43,43,0,0 -937,-29,-15,-29,-15,44,44,0,0 -938,-29,-16,-29,-16,45,45,0,0 -939,-28,-17,-28,-17,45,45,0,0 -940,-28,-18,-28,-18,46,46,0,0 -941,-27,-18,-27,-18,45,45,0,0 -942,-26,-19,-26,-19,45,45,0,0 -943,-26,-20,-26,-20,46,46,0,0 -944,-25,-21,-25,-21,46,46,0,0 -945,-25,-22,-25,-22,47,47,0,0 -946,-24,-22,-24,-22,46,46,0,0 -947,-23,-23,-23,-23,46,46,0,0 -948,-23,-24,-23,-24,47,47,0,0 -949,-22,-24,-22,-24,46,46,0,0 -950,-21,-25,-21,-25,46,46,0,0 -951,-20,-26,-20,-26,46,46,0,0 -952,-20,-26,-20,-26,46,46,0,0 -953,-19,-27,-19,-27,46,46,0,0 -954,-18,-27,-18,-27,45,45,0,0 -955,-17,-28,-17,-28,45,45,0,0 -956,-16,-28,-16,-28,44,44,0,0 -957,-15,-29,-15,-29,44,44,0,0 -958,-15,-29,-15,-29,44,44,0,0 -959,-14,-30,-14,-30,44,44,0,0 -960,-13,-30,-13,-30,43,43,0,0 -961,-12,-30,-12,-30,42,42,0,0 -962,-11,-31,-11,-31,42,42,0,0 -963,-10,-31,-10,-31,41,41,0,0 -964,-9,-31,-9,-31,40,40,0,0 -965,-8,-32,-8,-32,40,40,0,0 -966,-7,-32,-7,-32,39,39,0,0 -967,-6,-32,-6,-32,38,38,0,0 -968,-5,-32,-5,-32,37,37,0,0 -969,-4,-32,-4,-32,36,36,0,0 -970,-3,-32,-3,-32,35,35,0,0 -971,-2,-32,-2,-32,34,34,0,0 -972,-1,-32,-1,-32,33,33,0,0 -973,0,-32,0,-32,32,32,0,0 -974,1,-32,1,-32,33,33,0,0 -975,2,-32,2,-32,34,34,0,0 -976,3,-32,3,-32,35,35,0,0 -977,4,-32,4,-32,36,36,0,0 -978,5,-32,5,-32,37,37,0,0 -979,6,-32,6,-32,38,38,0,0 -980,7,-32,7,-32,39,39,0,0 -981,7,-31,7,-31,38,38,0,0 -982,8,-31,8,-31,39,39,0,0 -983,9,-31,9,-31,40,40,0,0 -984,10,-31,10,-31,41,41,0,0 -985,11,-30,11,-30,41,41,0,0 -986,12,-30,12,-30,42,42,0,0 -987,13,-30,13,-30,43,43,0,0 -988,14,-29,14,-29,43,43,0,0 -989,15,-29,15,-29,44,44,0,0 -990,16,-28,16,-28,44,44,0,0 -991,16,-28,16,-28,44,44,0,0 -992,17,-27,17,-27,44,44,0,0 -993,18,-27,18,-27,45,45,0,0 -994,19,-26,19,-26,45,45,0,0 -995,20,-25,20,-25,45,45,0,0 -996,20,-25,20,-25,45,45,0,0 -997,21,-24,21,-24,45,45,0,0 -998,22,-23,22,-23,45,45,0,0 -999,23,-23,23,-23,46,46,0,0 -1000,23,-22,23,-22,45,45,0,0 -1001,24,-21,24,-21,45,45,0,0 -1002,24,-20,24,-20,44,44,0,0 -1003,25,-20,25,-20,45,45,0,0 -1004,26,-19,26,-19,45,45,0,0 -1005,26,-18,26,-18,44,44,0,0 -1006,27,-17,27,-17,44,44,0,0 -1007,27,-16,27,-16,43,43,0,0 -1008,28,-16,28,-16,44,44,0,0 -1009,28,-15,28,-15,43,43,0,0 -1010,29,-14,29,-14,43,43,0,0 -1011,29,-13,29,-13,42,42,0,0 -1012,29,-12,29,-12,41,41,0,0 -1013,30,-11,30,-11,41,41,0,0 -1014,30,-10,30,-10,40,40,0,0 -1015,30,-9,30,-9,39,39,0,0 -1016,31,-8,31,-8,39,39,0,0 -1017,31,-7,31,-7,38,38,0,0 -1018,31,-6,31,-6,37,37,0,0 -1019,31,-5,31,-5,36,36,0,0 -1020,31,-4,31,-4,35,35,0,0 -1021,31,-3,31,-3,34,34,0,0 -1022,31,-2,31,-2,33,33,0,0 -1023,32,-1,32,-1,33,33,0,0 diff --git a/9_Firmware/9_2_FPGA/tb/cosim/rtl_mf_chirp.csv b/9_Firmware/9_2_FPGA/tb/cosim/rtl_mf_chirp.csv deleted file mode 100644 index 5cc27b6..0000000 --- a/9_Firmware/9_2_FPGA/tb/cosim/rtl_mf_chirp.csv +++ /dev/null @@ -1,1025 +0,0 @@ -bin,range_profile_i,range_profile_q -0,-2,-2 -1,-2,-3 -2,-2,-3 -3,-1,-3 -4,-1,-2 -5,-1,-3 -6,-1,-3 -7,-1,-3 -8,-1,-2 -9,0,-2 -10,0,-3 -11,1,-3 -12,1,-3 -13,0,-2 -14,1,-3 -15,2,-2 -16,2,-3 -17,2,-2 -18,3,-1 -19,3,-1 -20,3,-1 -21,4,-1 -22,4,-1 -23,3,0 -24,2,1 -25,1,1 -26,1,1 -27,1,1 -28,1,1 -29,1,1 -30,0,2 -31,0,2 -32,0,1 -33,0,1 -34,-1,2 -35,-2,2 -36,-2,2 -37,-3,1 -38,-3,0 -39,-3,0 -40,-2,0 -41,-2,0 -42,-2,0 -43,-2,-1 -44,-3,-1 -45,-4,-2 -46,-4,-3 -47,-3,-4 -48,-2,-4 -49,-3,-3 -50,-3,-3 -51,-2,-3 -52,-1,-3 -53,0,-2 -54,-1,-3 -55,0,-4 -56,0,-4 -57,1,-5 -58,1,-4 -59,1,-4 -60,1,-3 -61,2,-3 -62,2,-3 -63,2,-2 -64,2,-2 -65,2,-2 -66,3,-1 -67,3,0 -68,3,1 -69,2,1 -70,0,0 -71,0,0 -72,1,0 -73,1,1 -74,1,1 -75,1,2 -76,0,2 -77,-1,2 -78,-1,2 -79,-1,1 -80,-1,0 -81,-2,1 -82,-3,2 -83,-3,1 -84,-4,0 -85,-4,0 -86,-3,-1 -87,-3,-1 -88,-3,0 -89,-3,-1 -90,-3,-1 -91,-4,-2 -92,-2,-2 -93,-3,-1 -94,-3,-1 -95,-4,-2 -96,-4,-3 -97,-3,-3 -98,-2,-4 -99,-2,-3 -100,-2,-3 -101,-1,-4 -102,-1,-4 -103,0,-4 -104,0,-4 -105,0,-4 -106,0,-4 -107,1,-3 -108,1,-2 -109,1,-1 -110,1,-1 -111,1,0 -112,1,-1 -113,2,0 -114,3,1 -115,3,1 -116,2,2 -117,1,1 -118,0,2 -119,0,1 -120,0,1 -121,-1,1 -122,-1,1 -123,0,1 -124,-1,1 -125,-1,1 -126,-2,2 -127,-3,2 -128,-4,1 -129,-4,0 -130,-3,0 -131,-3,-1 -132,-3,-1 -133,-3,-1 -134,-3,-1 -135,-4,-1 -136,-3,-2 -137,-3,-2 -138,-3,-3 -139,-3,-3 -140,-3,-4 -141,-3,-5 -142,-2,-6 -143,-1,-5 -144,0,-4 -145,0,-4 -146,0,-3 -147,0,-3 -148,0,-3 -149,0,-3 -150,0,-3 -151,0,-3 -152,1,-3 -153,1,-3 -154,2,-2 -155,2,-1 -156,1,0 -157,1,-1 -158,1,-1 -159,2,0 -160,2,0 -161,1,1 -162,2,1 -163,2,1 -164,1,1 -165,1,1 -166,0,1 -167,-1,1 -168,-2,1 -169,-2,1 -170,-2,1 -171,-2,1 -172,-3,1 -173,-3,0 -174,-2,0 -175,-3,0 -176,-4,0 -177,-4,-1 -178,-4,-2 -179,-4,-3 -180,-3,-3 -181,-3,-3 -182,-3,-3 -183,-2,-3 -184,-2,-4 -185,-2,-3 -186,-2,-4 -187,-2,-5 -188,-1,-5 -189,0,-5 -190,-1,-5 -191,-1,-5 -192,-1,-5 -193,0,-5 -194,1,-4 -195,2,-4 -196,2,-3 -197,2,-2 -198,1,-2 -199,2,-2 -200,2,-1 -201,1,0 -202,1,-1 -203,1,-1 -204,1,-1 -205,1,-1 -206,2,-1 -207,3,0 -208,2,1 -209,1,1 -210,1,1 -211,0,0 -212,0,0 -213,-1,0 -214,0,0 -215,1,1 -216,0,2 -217,-2,2 -218,-3,1 -219,-3,1 -220,-3,0 -221,-3,0 -222,-2,-1 -223,-3,-1 -224,-3,-2 -225,-2,-2 -226,-3,-2 -227,-2,-2 -228,-2,-3 -229,-1,-3 -230,-1,-3 -231,-1,-3 -232,-1,-3 -233,-1,-3 -234,-1,-3 -235,0,-4 -236,0,-4 -237,1,-3 -238,0,-3 -239,1,-4 -240,1,-3 -241,1,-3 -242,1,-2 -243,1,-2 -244,2,-1 -245,2,-1 -246,2,-1 -247,2,0 -248,1,-1 -249,1,-1 -250,1,0 -251,0,0 -252,0,0 -253,0,0 -254,1,0 -255,1,1 -256,1,2 -257,1,1 -258,0,1 -259,-1,1 -260,-2,0 -261,-2,0 -262,-2,0 -263,-2,0 -264,-2,-1 -265,-2,0 -266,-2,-1 -267,-3,0 -268,-4,0 -269,-4,-1 -270,-3,-2 -271,-3,-3 -272,-3,-3 -273,-4,-3 -274,-4,-3 -275,-3,-4 -276,-2,-3 -277,-2,-3 -278,-2,-2 -279,-2,-2 -280,-2,-2 -281,-2,-3 -282,-1,-3 -283,0,-4 -284,1,-4 -285,2,-3 -286,2,-2 -287,1,-2 -288,1,-2 -289,1,-2 -290,1,-1 -291,0,-1 -292,1,-1 -293,1,-1 -294,1,0 -295,1,0 -296,1,0 -297,1,1 -298,1,2 -299,1,2 -300,1,2 -301,1,3 -302,-1,3 -303,-2,3 -304,-3,2 -305,-2,1 -306,-3,1 -307,-3,1 -308,-3,1 -309,-3,1 -310,-4,-1 -311,-4,0 -312,-5,-1 -313,-4,-2 -314,-3,-3 -315,-2,-3 -316,-2,-2 -317,-2,-3 -318,-2,-3 -319,-2,-2 -320,-2,-2 -321,-2,-2 -322,-1,-2 -323,-1,-2 -324,-1,-3 -325,0,-2 -326,0,-3 -327,0,-3 -328,1,-3 -329,0,-4 -330,1,-4 -331,1,-3 -332,1,-3 -333,2,-2 -334,1,-1 -335,1,-1 -336,2,0 -337,1,1 -338,2,0 -339,1,0 -340,2,1 -341,2,1 -342,1,2 -343,1,3 -344,0,3 -345,-1,2 -346,-1,2 -347,-2,1 -348,-2,1 -349,-3,0 -350,-3,0 -351,-3,0 -352,-3,0 -353,-3,1 -354,-3,-1 -355,-2,-1 -356,-2,-2 -357,-2,-1 -358,-2,-2 -359,-3,-2 -360,-3,-2 -361,-2,-3 -362,-2,-3 -363,-1,-2 -364,-1,-2 -365,-2,-3 -366,-2,-3 -367,-1,-4 -368,-1,-4 -369,-1,-4 -370,0,-3 -371,0,-3 -372,0,-3 -373,0,-4 -374,1,-4 -375,1,-3 -376,1,-2 -377,1,-2 -378,2,-1 -379,1,0 -380,1,1 -381,1,0 -382,2,0 -383,2,0 -384,2,1 -385,1,2 -386,1,2 -387,0,2 -388,0,2 -389,-1,1 -390,-1,1 -391,-2,1 -392,-2,1 -393,-3,1 -394,-4,1 -395,-4,1 -396,-4,0 -397,-3,0 -398,-3,0 -399,-2,-1 -400,-2,-1 -401,-2,0 -402,-2,-1 -403,-3,-1 -404,-3,-2 -405,-3,-3 -406,-3,-3 -407,-3,-3 -408,-3,-3 -409,-3,-3 -410,-3,-3 -411,-2,-3 -412,-1,-3 -413,-1,-2 -414,0,-3 -415,0,-2 -416,0,-2 -417,0,-3 -418,1,-3 -419,2,-3 -420,2,-2 -421,1,-1 -422,1,-1 -423,1,-2 -424,1,-2 -425,1,-2 -426,1,-1 -427,1,0 -428,1,1 -429,1,2 -430,1,2 -431,0,1 -432,0,1 -433,-1,2 -434,-1,1 -435,-2,1 -436,-2,1 -437,-2,1 -438,-2,1 -439,-2,1 -440,-2,1 -441,-2,1 -442,-3,2 -443,-4,1 -444,-4,0 -445,-5,-1 -446,-4,-1 -447,-4,-1 -448,-4,-1 -449,-4,-2 -450,-4,-2 -451,-3,-3 -452,-2,-3 -453,-2,-4 -454,-2,-4 -455,-2,-4 -456,-2,-3 -457,-2,-4 -458,-2,-4 -459,-1,-4 -460,1,-4 -461,1,-4 -462,1,-4 -463,2,-5 -464,2,-4 -465,2,-3 -466,1,-3 -467,2,-2 -468,1,-2 -469,1,-2 -470,2,-1 -471,3,-1 -472,2,-1 -473,1,-1 -474,1,0 -475,1,0 -476,1,1 -477,1,1 -478,1,1 -479,0,1 -480,0,1 -481,-1,0 -482,-1,-1 -483,-2,0 -484,-1,1 -485,-2,1 -486,-2,1 -487,-2,1 -488,-2,1 -489,-3,0 -490,-3,-1 -491,-3,-1 -492,-3,-1 -493,-3,-2 -494,-3,-2 -495,-4,-2 -496,-4,-3 -497,-3,-3 -498,-3,-4 -499,-2,-3 -500,-2,-4 -501,-1,-4 -502,-1,-3 -503,-1,-3 -504,0,-3 -505,0,-3 -506,-1,-3 -507,0,-3 -508,0,-2 -509,0,-2 -510,0,-2 -511,1,-2 -512,1,-2 -513,2,-1 -514,1,-1 -515,2,-1 -516,1,0 -517,1,2 -518,0,2 -519,-1,2 -520,-1,2 -521,-1,2 -522,-1,2 -523,0,1 -524,0,1 -525,-2,2 -526,-2,2 -527,-3,2 -528,-2,1 -529,-3,1 -530,-3,0 -531,-3,0 -532,-3,1 -533,-3,-1 -534,-3,-1 -535,-3,-2 -536,-3,-1 -537,-3,-2 -538,-4,-3 -539,-3,-3 -540,-2,-3 -541,-2,-3 -542,-2,-3 -543,-2,-3 -544,-2,-3 -545,-2,-2 -546,-2,-3 -547,-1,-3 -548,0,-3 -549,-1,-2 -550,0,-2 -551,0,-2 -552,1,-2 -553,1,-1 -554,0,-1 -555,-1,-1 -556,0,-1 -557,0,-1 -558,0,0 -559,0,0 -560,1,0 -561,1,1 -562,1,1 -563,1,0 -564,1,0 -565,0,1 -566,0,1 -567,0,1 -568,-1,2 -569,-1,2 -570,-1,2 -571,-2,2 -572,-2,1 -573,-2,1 -574,-2,1 -575,-3,0 -576,-2,0 -577,-2,0 -578,-3,0 -579,-3,0 -580,-4,-1 -581,-4,-1 -582,-4,-1 -583,-4,-1 -584,-3,-1 -585,-4,0 -586,-4,0 -587,-4,-1 -588,-3,-2 -589,-3,-2 -590,-2,-2 -591,-2,-3 -592,-1,-3 -593,-2,-3 -594,-1,-3 -595,0,-3 -596,0,-3 -597,0,-4 -598,0,-3 -599,1,-3 -600,1,-3 -601,1,-2 -602,2,-2 -603,2,0 -604,2,0 -605,2,0 -606,1,0 -607,1,0 -608,1,1 -609,1,1 -610,1,1 -611,1,1 -612,1,2 -613,0,2 -614,-1,2 -615,-1,2 -616,-2,2 -617,-2,2 -618,-3,1 -619,-3,1 -620,-4,1 -621,-3,1 -622,-4,1 -623,-4,1 -624,-5,1 -625,-4,0 -626,-4,0 -627,-4,-1 -628,-4,-2 -629,-3,-3 -630,-3,-3 -631,-3,-2 -632,-2,-2 -633,-2,-2 -634,-1,-2 -635,0,-3 -636,-1,-3 -637,-1,-2 -638,-1,-2 -639,-1,-2 -640,0,-2 -641,1,-2 -642,1,-2 -643,1,-1 -644,2,-1 -645,1,0 -646,1,0 -647,1,-1 -648,1,-1 -649,2,0 -650,2,1 -651,1,1 -652,1,2 -653,1,2 -654,0,2 -655,0,2 -656,-1,2 -657,-1,2 -658,-2,2 -659,-2,2 -660,-2,2 -661,-1,2 -662,-1,3 -663,-2,2 -664,-3,2 -665,-4,1 -666,-4,0 -667,-4,-1 -668,-4,-1 -669,-4,-1 -670,-3,-1 -671,-3,-2 -672,-3,-1 -673,-3,-2 -674,-2,-3 -675,-2,-2 -676,-1,-2 -677,-2,-2 -678,-1,-2 -679,-1,-2 -680,-1,-2 -681,0,-2 -682,0,-1 -683,-1,-2 -684,0,-2 -685,0,-2 -686,1,-2 -687,1,-1 -688,1,0 -689,0,1 -690,0,1 -691,-1,2 -692,-1,2 -693,0,1 -694,1,1 -695,0,2 -696,-1,2 -697,-1,2 -698,-1,0 -699,-1,0 -700,-1,0 -701,-1,0 -702,-2,1 -703,-2,1 -704,-3,1 -705,-4,1 -706,-3,0 -707,-3,-1 -708,-3,-1 -709,-2,-1 -710,-2,-1 -711,-2,-1 -712,-3,-2 -713,-2,-2 -714,-1,-2 -715,-1,-2 -716,-1,-2 -717,-1,-2 -718,-1,-3 -719,-2,-2 -720,-2,-2 -721,-2,-3 -722,-1,-2 -723,-1,-2 -724,-1,-2 -725,0,-2 -726,0,-1 -727,0,-1 -728,-1,-1 -729,0,-1 -730,0,-1 -731,-1,-1 -732,0,0 -733,-1,0 -734,-1,0 -735,-1,1 -736,0,1 -737,-1,1 -738,-2,1 -739,-2,0 -740,-2,1 -741,-2,0 -742,-2,0 -743,-2,1 -744,-3,0 -745,-3,0 -746,-3,0 -747,-3,1 -748,-3,0 -749,-3,0 -750,-2,0 -751,-3,-1 -752,-3,-1 -753,-3,-1 -754,-4,-1 -755,-3,-2 -756,-3,-2 -757,-3,-2 -758,-2,-2 -759,-2,-2 -760,-2,-2 -761,-2,-2 -762,-1,-3 -763,-1,-3 -764,-1,-3 -765,0,-2 -766,0,-2 -767,0,-1 -768,0,-1 -769,0,-1 -770,0,-1 -771,0,-1 -772,0,-1 -773,0,-1 -774,0,0 -775,0,0 -776,0,1 -777,0,1 -778,0,1 -779,0,1 -780,0,1 -781,0,2 -782,-1,2 -783,-1,3 -784,-1,3 -785,-1,2 -786,-1,2 -787,-2,2 -788,-3,2 -789,-3,2 -790,-3,1 -791,-3,0 -792,-3,0 -793,-4,0 -794,-4,-1 -795,-5,-1 -796,-5,-1 -797,-5,-2 -798,-5,-2 -799,-4,-2 -800,-2,-1 -801,-3,-2 -802,-2,-2 -803,-2,-1 -804,-1,-1 -805,-1,-2 -806,-1,-3 -807,-1,-3 -808,0,-2 -809,-1,-2 -810,-1,-3 -811,-1,-3 -812,-1,-2 -813,0,-2 -814,0,-2 -815,1,-2 -816,1,-2 -817,1,-1 -818,1,-1 -819,1,0 -820,2,0 -821,2,0 -822,1,0 -823,0,0 -824,0,1 -825,0,1 -826,0,2 -827,0,3 -828,0,3 -829,-1,3 -830,-1,3 -831,-2,3 -832,-2,2 -833,-2,2 -834,-3,1 -835,-3,1 -836,-3,1 -837,-3,1 -838,-3,1 -839,-3,1 -840,-3,0 -841,-3,0 -842,-3,0 -843,-4,0 -844,-4,0 -845,-5,0 -846,-4,-1 -847,-4,-1 -848,-4,-1 -849,-3,-2 -850,-3,-1 -851,-2,-2 -852,-2,-2 -853,-2,-3 -854,-1,-3 -855,-1,-2 -856,-1,-1 -857,-1,0 -858,-1,0 -859,-1,-1 -860,0,0 -861,0,0 -862,0,0 -863,1,0 -864,0,0 -865,-1,0 -866,-1,0 -867,-1,0 -868,0,1 -869,0,1 -870,-1,2 -871,-1,2 -872,-1,2 -873,-2,2 -874,-2,2 -875,-2,1 -876,-2,2 -877,-2,2 -878,-2,2 -879,-3,2 -880,-3,2 -881,-3,1 -882,-3,1 -883,-3,1 -884,-2,0 -885,-2,1 -886,-3,0 -887,-2,0 -888,-3,0 -889,-3,0 -890,-3,-1 -891,-3,-1 -892,-3,-2 -893,-2,-1 -894,-2,-1 -895,-2,-1 -896,-2,-2 -897,-1,-2 -898,-1,-2 -899,0,-2 -900,-1,-2 -901,0,-2 -902,0,-1 -903,0,-1 -904,1,-1 -905,1,-1 -906,2,-1 -907,2,0 -908,2,1 -909,2,1 -910,1,2 -911,0,3 -912,0,2 -913,0,2 -914,0,2 -915,0,2 -916,0,3 -917,0,4 -918,-1,4 -919,-1,4 -920,-1,3 -921,-1,3 -922,-1,3 -923,-2,3 -924,-2,3 -925,-3,3 -926,-3,3 -927,-3,2 -928,-3,2 -929,-3,2 -930,-2,2 -931,-3,1 -932,-4,1 -933,-4,0 -934,-4,1 -935,-3,1 -936,-3,0 -937,-4,0 -938,-4,-1 -939,-3,-1 -940,-3,-1 -941,-2,-1 -942,-2,-1 -943,-1,-1 -944,-2,-1 -945,-2,-1 -946,-1,-1 -947,-1,-1 -948,-1,0 -949,-1,0 -950,-1,0 -951,-1,0 -952,-1,0 -953,-1,0 -954,0,1 -955,0,1 -956,0,2 -957,-1,2 -958,0,2 -959,-1,2 -960,-1,2 -961,-1,3 -962,-1,3 -963,-2,4 -964,-2,4 -965,-3,4 -966,-3,3 -967,-2,2 -968,-3,2 -969,-3,2 -970,-3,2 -971,-3,1 -972,-3,2 -973,-3,2 -974,-4,2 -975,-4,1 -976,-4,1 -977,-3,1 -978,-3,2 -979,-4,2 -980,-5,1 -981,-5,1 -982,-4,0 -983,-4,0 -984,-4,-1 -985,-4,0 -986,-4,-1 -987,-3,-1 -988,-2,-1 -989,-2,-1 -990,-1,-1 -991,-1,-1 -992,-1,0 -993,-1,1 -994,-1,1 -995,-1,1 -996,0,1 -997,0,1 -998,-1,0 -999,-1,1 -1000,0,1 -1001,0,2 -1002,0,2 -1003,0,3 -1004,0,3 -1005,0,3 -1006,0,3 -1007,0,3 -1008,0,4 -1009,0,4 -1010,-1,4 -1011,-1,4 -1012,-1,4 -1013,-1,4 -1014,-2,4 -1015,-2,3 -1016,-2,3 -1017,-1,2 -1018,0,2 -1019,0,2 -1020,0,2 -1021,0,3 -1022,-1,2 -1023,-1,1 diff --git a/9_Firmware/9_2_FPGA/tb/cosim/rtl_mf_dc.csv b/9_Firmware/9_2_FPGA/tb/cosim/rtl_mf_dc.csv deleted file mode 100644 index 08fe8fc..0000000 --- a/9_Firmware/9_2_FPGA/tb/cosim/rtl_mf_dc.csv +++ /dev/null @@ -1,1025 +0,0 @@ -bin,range_profile_i,range_profile_q -0,32,0 -1,32,-1 -2,32,-1 -3,32,-1 -4,32,-1 -5,32,-1 -6,32,-1 -7,32,-1 -8,32,-1 -9,32,-1 -10,32,-1 -11,32,-1 -12,32,-1 -13,32,-1 -14,32,-1 -15,32,-1 -16,32,-1 -17,32,-1 -18,32,-1 -19,32,-1 -20,32,-1 -21,32,-1 -22,32,-1 -23,32,-1 -24,32,-1 -25,32,-1 -26,32,-1 -27,32,-1 -28,32,-1 -29,32,-1 -30,32,-1 -31,32,-1 -32,32,-1 -33,32,-1 -34,32,-1 -35,32,-1 -36,32,-1 -37,32,-1 -38,32,-1 -39,32,-1 -40,32,-1 -41,32,-1 -42,32,-1 -43,32,-1 -44,32,0 -45,32,-1 -46,32,-1 -47,32,-1 -48,32,0 -49,32,-1 -50,32,-1 -51,32,-1 -52,32,0 -53,32,-1 -54,32,-1 -55,32,-1 -56,32,0 -57,32,-1 -58,32,-1 -59,32,-1 -60,32,0 -61,32,-1 -62,32,0 -63,32,-1 -64,32,0 -65,32,-1 -66,32,-1 -67,32,-1 -68,32,0 -69,32,-1 -70,32,-1 -71,32,-1 -72,32,0 -73,32,-1 -74,32,-1 -75,32,-1 -76,32,0 -77,32,-1 -78,32,-1 -79,32,-1 -80,32,0 -81,32,-1 -82,32,-1 -83,32,-1 -84,32,-1 -85,32,-1 -86,32,-1 -87,32,-1 -88,32,0 -89,32,-1 -90,32,-1 -91,32,-1 -92,32,0 -93,32,-1 -94,32,0 -95,32,-1 -96,32,0 -97,32,-1 -98,32,-1 -99,32,-1 -100,32,0 -101,32,-1 -102,32,-1 -103,32,-1 -104,32,0 -105,32,-1 -106,32,-1 -107,32,-1 -108,32,0 -109,32,-1 -110,32,-1 -111,32,-1 -112,32,0 -113,32,-1 -114,32,-1 -115,32,-1 -116,32,0 -117,32,-1 -118,32,-1 -119,32,-1 -120,32,0 -121,32,-1 -122,32,-1 -123,32,-1 -124,32,0 -125,32,-1 -126,32,-1 -127,32,-1 -128,32,0 -129,32,0 -130,32,0 -131,31,-1 -132,32,0 -133,31,-1 -134,32,-1 -135,31,0 -136,32,0 -137,31,0 -138,32,-1 -139,31,-1 -140,32,0 -141,31,-1 -142,32,-1 -143,31,-1 -144,32,0 -145,31,-1 -146,32,-1 -147,31,-1 -148,32,-1 -149,31,-1 -150,32,-1 -151,31,-1 -152,32,0 -153,31,-1 -154,32,-1 -155,31,-1 -156,32,-1 -157,31,-1 -158,32,-1 -159,31,-1 -160,32,0 -161,31,-1 -162,32,-1 -163,31,-1 -164,32,0 -165,31,-1 -166,32,-1 -167,31,-1 -168,31,0 -169,31,0 -170,32,-1 -171,31,-1 -172,32,0 -173,31,-1 -174,32,-1 -175,31,-1 -176,32,0 -177,31,-1 -178,31,-1 -179,31,-1 -180,32,-1 -181,31,-1 -182,32,-1 -183,31,-1 -184,32,0 -185,31,-1 -186,31,-1 -187,31,-1 -188,32,-1 -189,31,-1 -190,32,-1 -191,31,-1 -192,31,0 -193,31,0 -194,31,-1 -195,31,0 -196,31,0 -197,31,-1 -198,31,-1 -199,31,0 -200,31,0 -201,31,0 -202,31,-1 -203,31,0 -204,31,0 -205,31,0 -206,31,-1 -207,31,0 -208,31,0 -209,31,0 -210,31,-1 -211,31,-1 -212,31,-1 -213,31,0 -214,31,-1 -215,31,0 -216,31,0 -217,31,0 -218,31,-1 -219,31,-1 -220,31,-1 -221,31,-1 -222,31,-1 -223,31,-1 -224,31,0 -225,31,0 -226,31,-1 -227,31,0 -228,31,-1 -229,31,0 -230,31,-1 -231,31,0 -232,31,0 -233,31,0 -234,31,-1 -235,31,0 -236,31,-1 -237,31,0 -238,31,-1 -239,31,-1 -240,31,0 -241,31,-1 -242,31,-1 -243,31,-1 -244,31,-1 -245,31,-1 -246,31,-1 -247,31,-1 -248,31,-1 -249,31,0 -250,31,-1 -251,31,0 -252,31,-1 -253,31,0 -254,31,-1 -255,31,-1 -256,31,0 -257,31,0 -258,31,0 -259,31,0 -260,31,0 -261,31,0 -262,31,-1 -263,31,0 -264,31,0 -265,31,0 -266,31,-1 -267,31,0 -268,31,0 -269,31,0 -270,31,-1 -271,31,0 -272,31,0 -273,31,0 -274,31,0 -275,31,0 -276,31,0 -277,31,0 -278,31,-1 -279,31,0 -280,31,0 -281,31,0 -282,31,0 -283,31,0 -284,31,-1 -285,31,0 -286,31,-1 -287,31,0 -288,31,0 -289,31,0 -290,31,0 -291,31,0 -292,31,0 -293,31,0 -294,31,-1 -295,31,0 -296,31,0 -297,31,0 -298,31,-1 -299,31,0 -300,31,-1 -301,31,0 -302,31,-1 -303,31,0 -304,31,0 -305,31,0 -306,31,-1 -307,31,0 -308,31,-1 -309,31,0 -310,31,-1 -311,31,0 -312,31,0 -313,31,0 -314,31,-1 -315,31,0 -316,31,-1 -317,31,0 -318,31,-1 -319,31,0 -320,31,0 -321,31,0 -322,31,0 -323,31,0 -324,31,0 -325,31,0 -326,31,-1 -327,31,0 -328,31,0 -329,31,0 -330,31,-1 -331,31,0 -332,31,0 -333,31,0 -334,31,-1 -335,31,0 -336,31,0 -337,31,0 -338,31,0 -339,31,-1 -340,31,-1 -341,31,-1 -342,31,-1 -343,31,0 -344,31,0 -345,31,0 -346,31,-1 -347,31,0 -348,31,-1 -349,31,0 -350,31,-1 -351,31,0 -352,31,0 -353,31,0 -354,31,0 -355,31,0 -356,31,0 -357,31,-1 -358,31,-1 -359,31,-1 -360,31,0 -361,31,0 -362,31,-1 -363,31,0 -364,31,0 -365,31,0 -366,31,-1 -367,31,-1 -368,31,0 -369,31,0 -370,31,-1 -371,31,0 -372,31,-1 -373,31,-1 -374,31,-1 -375,31,-1 -376,31,0 -377,31,0 -378,31,-1 -379,31,0 -380,31,-1 -381,31,0 -382,31,-1 -383,31,-1 -384,31,0 -385,31,0 -386,31,0 -387,31,0 -388,31,0 -389,31,0 -390,31,0 -391,31,-1 -392,31,0 -393,31,0 -394,31,0 -395,31,0 -396,31,0 -397,31,0 -398,31,0 -399,31,-1 -400,31,0 -401,31,0 -402,31,0 -403,31,-1 -404,31,0 -405,31,-1 -406,31,0 -407,31,0 -408,31,0 -409,31,0 -410,31,0 -411,31,0 -412,31,0 -413,31,-1 -414,31,-1 -415,31,-1 -416,31,0 -417,31,0 -418,31,0 -419,31,0 -420,31,0 -421,31,0 -422,31,0 -423,31,-1 -424,31,0 -425,31,0 -426,31,0 -427,31,-1 -428,31,0 -429,31,0 -430,31,0 -431,31,-1 -432,31,0 -433,31,0 -434,31,0 -435,31,-1 -436,31,0 -437,31,-1 -438,31,0 -439,31,-1 -440,31,0 -441,31,0 -442,31,0 -443,31,-1 -444,31,-1 -445,31,-1 -446,31,-1 -447,31,-1 -448,31,0 -449,31,0 -450,31,0 -451,31,0 -452,31,0 -453,31,0 -454,31,0 -455,31,0 -456,31,0 -457,31,0 -458,31,0 -459,31,0 -460,31,0 -461,31,0 -462,31,0 -463,31,-1 -464,31,0 -465,31,0 -466,31,0 -467,31,0 -468,31,0 -469,31,-1 -470,31,0 -471,31,0 -472,31,0 -473,31,0 -474,31,0 -475,31,0 -476,31,0 -477,31,0 -478,31,-1 -479,31,-1 -480,31,0 -481,31,0 -482,31,0 -483,31,0 -484,31,0 -485,31,0 -486,31,0 -487,31,0 -488,31,0 -489,31,0 -490,31,0 -491,31,0 -492,31,-1 -493,31,0 -494,31,0 -495,31,-1 -496,31,0 -497,31,0 -498,31,0 -499,31,0 -500,31,0 -501,31,0 -502,31,0 -503,31,0 -504,31,-1 -505,31,0 -506,31,0 -507,31,0 -508,31,-1 -509,31,0 -510,31,-1 -511,31,-1 -512,31,0 -513,31,0 -514,31,0 -515,31,0 -516,31,0 -517,31,0 -518,31,0 -519,31,0 -520,31,0 -521,31,0 -522,31,0 -523,31,0 -524,31,0 -525,31,0 -526,31,0 -527,31,0 -528,31,0 -529,31,0 -530,31,0 -531,31,0 -532,31,0 -533,31,0 -534,31,0 -535,31,0 -536,31,0 -537,31,0 -538,31,0 -539,31,0 -540,31,0 -541,31,0 -542,31,0 -543,31,0 -544,31,0 -545,31,0 -546,31,0 -547,31,0 -548,31,0 -549,31,0 -550,31,0 -551,31,0 -552,31,0 -553,31,0 -554,31,0 -555,31,0 -556,31,0 -557,31,0 -558,31,0 -559,31,0 -560,31,0 -561,31,0 -562,31,0 -563,31,0 -564,31,0 -565,31,0 -566,31,0 -567,31,0 -568,31,0 -569,31,0 -570,31,0 -571,31,0 -572,31,0 -573,31,0 -574,31,0 -575,31,0 -576,31,-1 -577,31,0 -578,31,0 -579,31,0 -580,31,0 -581,31,0 -582,31,0 -583,31,0 -584,31,0 -585,31,0 -586,31,0 -587,31,0 -588,31,0 -589,31,0 -590,31,0 -591,31,0 -592,31,0 -593,31,0 -594,31,0 -595,31,0 -596,31,0 -597,31,0 -598,31,0 -599,31,0 -600,31,0 -601,31,0 -602,31,0 -603,31,0 -604,31,0 -605,31,0 -606,31,0 -607,31,0 -608,31,-1 -609,31,0 -610,31,0 -611,31,0 -612,31,0 -613,31,0 -614,31,0 -615,31,0 -616,31,0 -617,31,0 -618,31,0 -619,31,0 -620,31,0 -621,31,0 -622,31,0 -623,31,0 -624,31,0 -625,31,0 -626,31,0 -627,31,0 -628,31,0 -629,31,0 -630,31,0 -631,31,0 -632,31,0 -633,31,0 -634,31,0 -635,31,0 -636,31,0 -637,31,0 -638,31,0 -639,31,0 -640,31,-1 -641,31,0 -642,31,0 -643,31,0 -644,31,0 -645,31,0 -646,31,0 -647,31,0 -648,31,0 -649,31,0 -650,31,0 -651,31,0 -652,31,0 -653,31,0 -654,31,0 -655,31,0 -656,31,0 -657,31,0 -658,31,0 -659,31,0 -660,31,0 -661,31,0 -662,31,0 -663,31,0 -664,31,0 -665,31,0 -666,31,0 -667,31,0 -668,31,0 -669,31,0 -670,31,0 -671,31,0 -672,31,-1 -673,31,0 -674,31,0 -675,31,0 -676,31,0 -677,31,0 -678,31,0 -679,31,0 -680,31,0 -681,31,0 -682,31,0 -683,31,0 -684,31,0 -685,31,0 -686,31,0 -687,31,0 -688,31,0 -689,31,0 -690,31,0 -691,31,0 -692,31,0 -693,31,0 -694,31,0 -695,31,0 -696,31,0 -697,31,0 -698,31,0 -699,31,0 -700,31,0 -701,31,-1 -702,31,0 -703,31,-1 -704,31,-1 -705,31,0 -706,31,0 -707,31,0 -708,31,0 -709,31,0 -710,31,0 -711,31,0 -712,31,0 -713,31,0 -714,31,0 -715,31,0 -716,31,0 -717,31,0 -718,31,0 -719,31,0 -720,31,0 -721,31,0 -722,31,0 -723,31,0 -724,31,0 -725,31,0 -726,31,0 -727,31,-1 -728,31,0 -729,31,0 -730,31,0 -731,31,-1 -732,31,0 -733,31,-1 -734,31,0 -735,31,-1 -736,31,-1 -737,31,0 -738,31,0 -739,31,0 -740,31,0 -741,31,0 -742,31,0 -743,31,0 -744,31,0 -745,31,0 -746,31,0 -747,31,0 -748,31,0 -749,31,0 -750,31,0 -751,31,-1 -752,31,0 -753,31,-1 -754,31,0 -755,31,-1 -756,31,0 -757,31,0 -758,31,0 -759,31,-1 -760,31,0 -761,31,-1 -762,31,0 -763,31,-1 -764,31,0 -765,31,-1 -766,31,0 -767,31,0 -768,31,-1 -769,31,0 -770,32,0 -771,31,0 -772,32,-1 -773,31,0 -774,32,0 -775,31,0 -776,32,-1 -777,32,0 -778,32,0 -779,31,0 -780,32,-1 -781,31,0 -782,32,0 -783,31,0 -784,32,-1 -785,32,0 -786,32,0 -787,31,0 -788,32,0 -789,31,0 -790,32,0 -791,31,0 -792,32,-1 -793,31,0 -794,32,0 -795,31,0 -796,32,0 -797,31,0 -798,32,0 -799,31,0 -800,32,-1 -801,32,0 -802,32,0 -803,32,0 -804,32,-1 -805,32,0 -806,32,0 -807,31,0 -808,32,-1 -809,32,0 -810,32,0 -811,31,0 -812,32,-1 -813,31,0 -814,32,0 -815,31,0 -816,32,-1 -817,32,0 -818,32,-1 -819,31,0 -820,32,-1 -821,32,0 -822,32,0 -823,31,0 -824,32,-1 -825,31,0 -826,32,0 -827,31,0 -828,32,0 -829,31,0 -830,32,0 -831,31,0 -832,32,-1 -833,32,-1 -834,32,-1 -835,32,0 -836,32,-1 -837,32,0 -838,32,-1 -839,32,0 -840,32,-1 -841,32,0 -842,32,-1 -843,32,0 -844,32,-1 -845,32,0 -846,32,-1 -847,32,0 -848,32,-1 -849,32,0 -850,32,-1 -851,32,0 -852,32,-1 -853,32,0 -854,32,-1 -855,32,0 -856,32,-1 -857,32,0 -858,32,-1 -859,32,0 -860,32,0 -861,32,0 -862,32,0 -863,32,0 -864,32,-1 -865,32,0 -866,32,-1 -867,32,0 -868,32,-1 -869,32,0 -870,32,-1 -871,32,0 -872,32,-1 -873,32,0 -874,32,-1 -875,32,0 -876,32,-1 -877,32,0 -878,32,0 -879,32,0 -880,32,-1 -881,32,0 -882,32,-1 -883,32,0 -884,32,0 -885,32,0 -886,32,0 -887,32,0 -888,32,-1 -889,32,0 -890,32,-1 -891,32,0 -892,32,0 -893,32,0 -894,32,0 -895,32,0 -896,32,-1 -897,32,-1 -898,32,-1 -899,32,-1 -900,32,-1 -901,32,-1 -902,32,-1 -903,32,0 -904,32,-1 -905,32,-1 -906,32,-1 -907,32,0 -908,32,-1 -909,32,-1 -910,32,-1 -911,32,0 -912,32,-1 -913,32,-1 -914,32,-1 -915,32,0 -916,32,-1 -917,32,0 -918,32,-1 -919,32,0 -920,32,-1 -921,32,0 -922,32,-1 -923,32,0 -924,32,-1 -925,32,0 -926,32,-1 -927,32,0 -928,32,-1 -929,32,-1 -930,32,-1 -931,32,0 -932,32,-1 -933,32,-1 -934,32,-1 -935,32,0 -936,32,-1 -937,32,-1 -938,32,-1 -939,32,0 -940,32,-1 -941,32,0 -942,32,-1 -943,32,0 -944,32,-1 -945,32,0 -946,32,-1 -947,32,0 -948,32,-1 -949,32,0 -950,32,-1 -951,32,0 -952,32,-1 -953,32,0 -954,32,-1 -955,32,0 -956,32,0 -957,32,0 -958,32,0 -959,32,0 -960,32,-1 -961,32,-1 -962,32,-1 -963,32,-1 -964,32,-1 -965,32,-1 -966,32,-1 -967,32,-1 -968,32,-1 -969,32,-1 -970,32,-1 -971,32,-1 -972,32,-1 -973,32,-1 -974,32,-1 -975,32,0 -976,32,-1 -977,32,-1 -978,32,-1 -979,32,0 -980,32,-1 -981,32,-1 -982,32,-1 -983,32,0 -984,32,-1 -985,32,-1 -986,32,-1 -987,32,0 -988,32,0 -989,32,0 -990,32,0 -991,32,0 -992,32,-1 -993,32,-1 -994,32,-1 -995,32,-1 -996,32,-1 -997,32,-1 -998,32,-1 -999,32,-1 -1000,32,-1 -1001,32,-1 -1002,32,-1 -1003,32,0 -1004,32,0 -1005,32,-1 -1006,32,0 -1007,32,0 -1008,32,0 -1009,32,0 -1010,32,-1 -1011,32,0 -1012,32,0 -1013,32,-1 -1014,32,-1 -1015,32,0 -1016,32,0 -1017,32,0 -1018,32,0 -1019,32,0 -1020,32,0 -1021,32,0 -1022,32,0 -1023,32,0 diff --git a/9_Firmware/9_2_FPGA/tb/cosim/rtl_mf_impulse.csv b/9_Firmware/9_2_FPGA/tb/cosim/rtl_mf_impulse.csv deleted file mode 100644 index cec48f6..0000000 --- a/9_Firmware/9_2_FPGA/tb/cosim/rtl_mf_impulse.csv +++ /dev/null @@ -1,1025 +0,0 @@ -bin,range_profile_i,range_profile_q -0,32761,0 -1,0,0 -2,0,0 -3,0,0 -4,0,0 -5,0,0 -6,-1,0 -7,0,0 -8,0,0 -9,0,0 -10,0,0 -11,0,0 -12,0,0 -13,-1,-1 -14,0,0 -15,0,0 -16,0,0 -17,0,0 -18,-1,0 -19,0,0 -20,-1,0 -21,0,0 -22,-1,0 -23,0,0 -24,-1,0 -25,-1,0 -26,0,0 -27,0,0 -28,-1,0 -29,-1,-1 -30,0,0 -31,0,0 -32,0,0 -33,0,0 -34,-1,0 -35,0,0 -36,-1,0 -37,0,0 -38,-1,0 -39,0,0 -40,0,0 -41,0,0 -42,-1,0 -43,0,0 -44,0,0 -45,-1,-1 -46,0,0 -47,0,0 -48,0,0 -49,-1,0 -50,-1,0 -51,0,0 -52,-1,0 -53,0,0 -54,-1,0 -55,0,0 -56,0,0 -57,-1,0 -58,0,0 -59,0,0 -60,-1,0 -61,-1,0 -62,0,0 -63,0,0 -64,0,0 -65,0,0 -66,-1,0 -67,0,0 -68,0,0 -69,0,0 -70,-1,-1 -71,0,0 -72,0,0 -73,0,0 -74,-1,0 -75,0,0 -76,0,0 -77,-1,-1 -78,0,0 -79,0,0 -80,0,0 -81,0,0 -82,-1,0 -83,0,0 -84,-1,0 -85,0,0 -86,-1,-1 -87,0,0 -88,0,0 -89,-1,-1 -90,-1,0 -91,0,0 -92,0,0 -93,-1,-1 -94,0,0 -95,0,0 -96,0,0 -97,-1,0 -98,-1,0 -99,0,0 -100,-1,0 -101,0,0 -102,-1,0 -103,0,0 -104,0,0 -105,0,0 -106,-1,0 -107,0,0 -108,-1,0 -109,-1,-1 -110,0,0 -111,0,0 -112,0,0 -113,-1,0 -114,-1,0 -115,0,0 -116,0,0 -117,0,0 -118,-1,0 -119,0,0 -120,0,0 -121,-1,0 -122,0,0 -123,0,0 -124,0,0 -125,-1,0 -126,0,0 -127,0,0 -128,0,0 -129,0,0 -130,0,0 -131,0,0 -132,0,0 -133,0,0 -134,-1,0 -135,0,0 -136,0,0 -137,0,0 -138,0,0 -139,0,0 -140,0,0 -141,-1,0 -142,0,0 -143,0,0 -144,0,0 -145,0,0 -146,-1,0 -147,0,0 -148,0,0 -149,0,0 -150,-1,0 -151,0,0 -152,0,0 -153,-1,0 -154,0,0 -155,0,0 -156,-1,0 -157,-1,0 -158,0,0 -159,0,0 -160,0,0 -161,0,0 -162,0,0 -163,0,0 -164,-1,0 -165,0,0 -166,-1,0 -167,0,0 -168,0,0 -169,0,0 -170,0,0 -171,0,0 -172,0,0 -173,-1,-1 -174,0,0 -175,0,0 -176,0,0 -177,-1,0 -178,-1,0 -179,0,0 -180,0,0 -181,0,0 -182,-1,0 -183,0,0 -184,0,0 -185,-1,0 -186,0,0 -187,0,0 -188,0,0 -189,-1,0 -190,0,0 -191,0,0 -192,0,0 -193,-1,0 -194,0,0 -195,0,0 -196,0,0 -197,0,0 -198,-1,0 -199,0,0 -200,0,0 -201,0,0 -202,0,0 -203,0,0 -204,0,0 -205,-1,0 -206,-1,0 -207,0,0 -208,0,0 -209,0,0 -210,0,0 -211,0,0 -212,0,0 -213,0,0 -214,-1,0 -215,0,0 -216,0,0 -217,-1,0 -218,0,0 -219,0,0 -220,0,0 -221,-1,0 -222,0,0 -223,0,0 -224,0,0 -225,-1,0 -226,0,0 -227,0,0 -228,0,0 -229,0,0 -230,-1,0 -231,0,0 -232,0,0 -233,0,0 -234,0,0 -235,0,0 -236,0,0 -237,-1,0 -238,0,0 -239,0,0 -240,0,0 -241,-1,0 -242,0,0 -243,0,0 -244,0,0 -245,0,0 -246,-1,0 -247,0,0 -248,0,0 -249,-1,0 -250,0,0 -251,0,0 -252,0,0 -253,-1,0 -254,0,0 -255,0,0 -256,0,0 -257,0,0 -258,0,0 -259,0,0 -260,0,0 -261,0,0 -262,-1,0 -263,0,0 -264,0,0 -265,0,0 -266,0,0 -267,0,0 -268,0,0 -269,-1,0 -270,0,0 -271,0,0 -272,0,0 -273,0,0 -274,-1,0 -275,0,0 -276,0,0 -277,0,0 -278,-1,0 -279,0,0 -280,0,0 -281,-1,0 -282,0,0 -283,0,0 -284,0,0 -285,-1,0 -286,0,0 -287,0,0 -288,0,0 -289,0,0 -290,-1,0 -291,0,0 -292,0,0 -293,0,0 -294,-1,0 -295,0,0 -296,0,0 -297,0,0 -298,-1,0 -299,0,0 -300,0,0 -301,-1,0 -302,0,0 -303,0,0 -304,0,0 -305,-1,0 -306,0,0 -307,0,0 -308,0,0 -309,0,0 -310,-1,0 -311,0,0 -312,0,0 -313,-1,0 -314,0,0 -315,0,0 -316,0,0 -317,-1,0 -318,0,0 -319,0,0 -320,0,0 -321,0,0 -322,0,0 -323,0,0 -324,0,0 -325,0,0 -326,-1,0 -327,0,0 -328,0,0 -329,0,0 -330,0,0 -331,0,0 -332,0,0 -333,-1,0 -334,0,0 -335,0,0 -336,0,0 -337,0,0 -338,0,0 -339,0,0 -340,0,0 -341,0,0 -342,-1,0 -343,0,0 -344,0,0 -345,-1,0 -346,0,0 -347,0,0 -348,0,0 -349,-1,0 -350,0,0 -351,0,0 -352,0,0 -353,-1,0 -354,0,0 -355,0,0 -356,0,0 -357,0,0 -358,-1,0 -359,0,0 -360,0,0 -361,0,0 -362,0,0 -363,0,0 -364,0,0 -365,-1,0 -366,0,0 -367,0,0 -368,0,0 -369,-1,0 -370,0,0 -371,0,0 -372,0,0 -373,0,0 -374,-1,0 -375,0,0 -376,0,0 -377,-1,0 -378,0,0 -379,0,0 -380,0,0 -381,-1,0 -382,0,0 -383,0,0 -384,0,0 -385,0,0 -386,0,0 -387,0,0 -388,0,0 -389,0,0 -390,0,0 -391,0,0 -392,0,0 -393,0,0 -394,0,0 -395,0,0 -396,0,0 -397,0,0 -398,0,0 -399,0,0 -400,0,0 -401,0,0 -402,0,0 -403,0,0 -404,0,0 -405,0,0 -406,0,0 -407,0,0 -408,0,0 -409,-1,0 -410,0,0 -411,0,0 -412,0,0 -413,-1,0 -414,0,0 -415,0,0 -416,0,0 -417,0,0 -418,0,0 -419,0,0 -420,0,0 -421,0,0 -422,0,0 -423,0,0 -424,0,0 -425,0,0 -426,0,0 -427,0,0 -428,0,0 -429,-1,0 -430,0,0 -431,0,0 -432,0,0 -433,-1,0 -434,0,0 -435,0,0 -436,0,0 -437,0,0 -438,-1,0 -439,0,0 -440,0,0 -441,-1,0 -442,0,0 -443,0,0 -444,0,0 -445,-1,0 -446,0,0 -447,0,0 -448,0,0 -449,0,0 -450,0,0 -451,0,0 -452,0,0 -453,0,0 -454,0,0 -455,0,0 -456,0,0 -457,0,0 -458,0,0 -459,0,0 -460,0,0 -461,0,0 -462,0,0 -463,0,0 -464,0,0 -465,0,0 -466,0,0 -467,0,0 -468,0,0 -469,0,0 -470,-1,0 -471,0,0 -472,0,0 -473,-1,0 -474,0,0 -475,0,0 -476,0,0 -477,-1,0 -478,0,0 -479,0,0 -480,0,0 -481,0,0 -482,0,0 -483,0,0 -484,0,0 -485,0,0 -486,0,0 -487,0,0 -488,0,0 -489,0,0 -490,0,0 -491,0,0 -492,0,0 -493,-1,0 -494,0,0 -495,0,0 -496,0,0 -497,0,0 -498,0,0 -499,0,0 -500,0,0 -501,0,0 -502,0,0 -503,0,0 -504,0,0 -505,0,0 -506,0,0 -507,0,0 -508,0,0 -509,0,0 -510,0,0 -511,0,0 -512,0,0 -513,0,0 -514,0,0 -515,0,0 -516,0,0 -517,0,0 -518,0,0 -519,0,0 -520,0,0 -521,0,0 -522,0,0 -523,0,0 -524,0,0 -525,0,0 -526,0,0 -527,0,0 -528,0,-1 -529,0,0 -530,0,0 -531,0,0 -532,0,0 -533,0,0 -534,0,0 -535,0,0 -536,0,0 -537,0,0 -538,0,0 -539,0,0 -540,0,0 -541,0,0 -542,0,0 -543,0,0 -544,0,-1 -545,0,0 -546,0,0 -547,0,0 -548,0,0 -549,0,0 -550,0,0 -551,0,0 -552,0,0 -553,0,0 -554,0,0 -555,0,0 -556,0,0 -557,0,0 -558,0,0 -559,0,0 -560,0,-1 -561,0,0 -562,0,0 -563,0,0 -564,0,0 -565,0,0 -566,0,0 -567,0,0 -568,0,0 -569,0,0 -570,0,0 -571,0,0 -572,0,0 -573,0,0 -574,0,0 -575,0,0 -576,0,-1 -577,0,0 -578,0,0 -579,0,0 -580,0,0 -581,0,0 -582,0,0 -583,0,0 -584,0,-1 -585,0,0 -586,0,0 -587,0,0 -588,0,0 -589,0,0 -590,0,0 -591,0,0 -592,0,-1 -593,0,0 -594,0,0 -595,0,0 -596,0,0 -597,0,0 -598,0,0 -599,0,0 -600,0,-1 -601,0,0 -602,0,0 -603,0,0 -604,0,0 -605,0,0 -606,0,0 -607,0,0 -608,0,-1 -609,0,0 -610,0,0 -611,0,0 -612,0,0 -613,0,0 -614,0,0 -615,0,0 -616,0,-1 -617,0,0 -618,0,0 -619,0,0 -620,0,0 -621,0,0 -622,0,0 -623,0,0 -624,0,-1 -625,0,0 -626,0,0 -627,0,0 -628,0,0 -629,0,0 -630,0,0 -631,0,0 -632,0,-1 -633,0,0 -634,0,0 -635,0,0 -636,0,-1 -637,0,0 -638,0,0 -639,0,0 -640,0,-1 -641,0,0 -642,0,0 -643,0,0 -644,0,0 -645,0,0 -646,0,0 -647,0,0 -648,0,-1 -649,0,0 -650,0,0 -651,0,0 -652,0,0 -653,0,0 -654,0,0 -655,0,0 -656,0,-1 -657,0,0 -658,0,0 -659,0,0 -660,0,-1 -661,0,0 -662,0,0 -663,0,0 -664,0,-1 -665,0,0 -666,0,0 -667,0,0 -668,0,0 -669,0,0 -670,0,0 -671,0,0 -672,0,-1 -673,0,0 -674,0,0 -675,0,0 -676,0,0 -677,0,0 -678,0,0 -679,0,0 -680,0,-1 -681,0,0 -682,0,0 -683,0,0 -684,0,0 -685,0,0 -686,0,0 -687,0,0 -688,0,-1 -689,0,0 -690,0,0 -691,0,0 -692,0,-1 -693,0,0 -694,0,0 -695,0,0 -696,0,-1 -697,0,0 -698,0,0 -699,0,0 -700,0,0 -701,0,0 -702,0,0 -703,0,0 -704,0,-1 -705,0,0 -706,0,0 -707,0,0 -708,0,0 -709,0,0 -710,0,0 -711,0,0 -712,0,-1 -713,0,0 -714,0,0 -715,0,0 -716,0,0 -717,0,0 -718,0,0 -719,0,0 -720,0,-1 -721,0,0 -722,0,0 -723,0,0 -724,0,0 -725,0,0 -726,0,0 -727,0,0 -728,0,-1 -729,0,0 -730,0,0 -731,0,0 -732,0,-1 -733,0,0 -734,0,0 -735,0,0 -736,0,-1 -737,0,0 -738,0,0 -739,0,0 -740,0,-1 -741,0,0 -742,0,0 -743,0,0 -744,0,-1 -745,0,0 -746,0,-1 -747,0,0 -748,0,-1 -749,0,0 -750,0,0 -751,0,0 -752,0,-1 -753,0,0 -754,0,0 -755,0,0 -756,0,-1 -757,0,0 -758,0,0 -759,0,0 -760,0,-1 -761,0,0 -762,0,0 -763,0,0 -764,0,-1 -765,0,0 -766,0,0 -767,0,0 -768,0,-1 -769,0,0 -770,0,-1 -771,0,0 -772,0,-1 -773,0,0 -774,0,0 -775,0,0 -776,0,-1 -777,0,0 -778,0,-1 -779,0,0 -780,0,-1 -781,0,0 -782,0,0 -783,0,0 -784,0,-1 -785,0,0 -786,0,0 -787,0,0 -788,0,-1 -789,0,0 -790,0,0 -791,0,0 -792,0,-1 -793,0,0 -794,0,0 -795,0,0 -796,0,-1 -797,0,0 -798,0,0 -799,0,0 -800,0,-1 -801,0,0 -802,0,0 -803,0,0 -804,0,-1 -805,0,0 -806,0,0 -807,0,0 -808,0,-1 -809,0,0 -810,0,0 -811,0,0 -812,0,-1 -813,0,0 -814,0,0 -815,0,0 -816,0,-1 -817,0,0 -818,0,0 -819,0,0 -820,0,-1 -821,0,0 -822,0,0 -823,0,0 -824,0,-1 -825,0,0 -826,0,0 -827,0,0 -828,0,-1 -829,0,0 -830,0,0 -831,0,0 -832,0,-1 -833,0,0 -834,0,-1 -835,0,0 -836,0,-1 -837,0,0 -838,0,0 -839,0,0 -840,0,-1 -841,0,0 -842,0,-1 -843,0,0 -844,0,-1 -845,0,0 -846,0,0 -847,0,0 -848,0,-1 -849,0,0 -850,0,-1 -851,0,0 -852,0,-1 -853,0,0 -854,0,0 -855,0,0 -856,0,-1 -857,0,0 -858,0,-1 -859,0,0 -860,0,-1 -861,0,0 -862,0,0 -863,0,0 -864,0,-1 -865,0,0 -866,0,-1 -867,0,0 -868,0,-1 -869,0,0 -870,0,0 -871,0,0 -872,0,-1 -873,0,0 -874,0,-1 -875,0,0 -876,0,-1 -877,0,0 -878,0,0 -879,0,0 -880,0,-1 -881,0,0 -882,0,-1 -883,0,0 -884,0,-1 -885,0,0 -886,0,0 -887,0,0 -888,0,-1 -889,0,0 -890,0,0 -891,0,0 -892,0,-1 -893,0,0 -894,0,0 -895,0,0 -896,0,-1 -897,0,-1 -898,0,-1 -899,0,0 -900,0,-1 -901,0,0 -902,0,0 -903,0,0 -904,0,-1 -905,0,0 -906,0,-1 -907,0,0 -908,0,-1 -909,0,0 -910,0,-1 -911,0,0 -912,0,-1 -913,0,0 -914,0,0 -915,0,0 -916,0,-1 -917,0,0 -918,0,0 -919,0,0 -920,0,-1 -921,0,0 -922,0,-1 -923,0,0 -924,0,-1 -925,0,0 -926,0,-1 -927,0,0 -928,0,-1 -929,0,0 -930,0,-1 -931,0,0 -932,0,-1 -933,0,0 -934,0,-1 -935,0,0 -936,0,-1 -937,0,0 -938,0,-1 -939,0,0 -940,0,-1 -941,0,0 -942,0,0 -943,0,0 -944,0,-1 -945,0,0 -946,0,-1 -947,0,0 -948,0,-1 -949,0,0 -950,0,0 -951,0,0 -952,0,-1 -953,0,0 -954,0,0 -955,0,0 -956,0,-1 -957,0,0 -958,0,0 -959,0,0 -960,0,-1 -961,0,-1 -962,0,-1 -963,0,0 -964,0,-1 -965,0,0 -966,0,-1 -967,0,0 -968,0,-1 -969,0,0 -970,0,-1 -971,0,0 -972,0,-1 -973,0,0 -974,0,-1 -975,0,0 -976,0,-1 -977,0,0 -978,0,-1 -979,0,0 -980,0,-1 -981,0,0 -982,0,0 -983,0,0 -984,0,-1 -985,0,0 -986,0,-1 -987,0,0 -988,0,-1 -989,0,0 -990,0,0 -991,0,0 -992,0,-1 -993,0,-1 -994,0,-1 -995,0,0 -996,0,-1 -997,0,0 -998,0,-1 -999,0,0 -1000,0,-1 -1001,0,0 -1002,0,-1 -1003,0,0 -1004,0,-1 -1005,0,0 -1006,0,0 -1007,0,0 -1008,0,-1 -1009,0,-1 -1010,0,-1 -1011,0,0 -1012,0,-1 -1013,0,0 -1014,0,-1 -1015,0,0 -1016,0,-1 -1017,0,-1 -1018,0,-1 -1019,0,0 -1020,0,-1 -1021,0,-1 -1022,0,-1 -1023,0,0 diff --git a/9_Firmware/9_2_FPGA/tb/cosim/rtl_mf_tone5.csv b/9_Firmware/9_2_FPGA/tb/cosim/rtl_mf_tone5.csv deleted file mode 100644 index f98d7ad..0000000 --- a/9_Firmware/9_2_FPGA/tb/cosim/rtl_mf_tone5.csv +++ /dev/null @@ -1,1025 +0,0 @@ -bin,range_profile_i,range_profile_q -0,32,0 -1,31,0 -2,31,1 -3,31,2 -4,31,3 -5,31,4 -6,31,5 -7,31,6 -8,31,7 -9,30,8 -10,30,9 -11,30,10 -12,29,11 -13,29,12 -14,29,13 -15,28,14 -16,28,15 -17,27,15 -18,27,16 -19,26,17 -20,26,18 -21,25,19 -22,24,19 -23,24,20 -24,23,21 -25,23,22 -26,22,22 -27,21,23 -28,20,24 -29,20,24 -30,19,25 -31,18,26 -32,17,26 -33,16,27 -34,16,27 -35,15,28 -36,14,28 -37,13,29 -38,12,29 -39,11,29 -40,10,30 -41,9,30 -42,8,30 -43,7,30 -44,7,31 -45,6,31 -46,5,31 -47,4,31 -48,3,31 -49,2,31 -50,1,31 -51,0,31 -52,-1,31 -53,-2,31 -54,-3,31 -55,-4,31 -56,-5,31 -57,-6,31 -58,-7,31 -59,-8,31 -60,-9,30 -61,-10,30 -62,-11,30 -63,-12,29 -64,-13,29 -65,-14,29 -66,-15,28 -67,-15,28 -68,-16,27 -69,-17,27 -70,-18,26 -71,-19,26 -72,-20,25 -73,-20,25 -74,-21,24 -75,-22,23 -76,-23,23 -77,-23,22 -78,-24,21 -79,-25,21 -80,-25,20 -81,-26,19 -82,-26,18 -83,-27,17 -84,-28,17 -85,-28,16 -86,-29,15 -87,-29,14 -88,-29,13 -89,-30,12 -90,-30,11 -91,-31,10 -92,-31,10 -93,-31,9 -94,-31,8 -95,-32,7 -96,-32,6 -97,-32,5 -98,-32,4 -99,-32,3 -100,-32,2 -101,-32,1 -102,-32,0 -103,-32,-1 -104,-32,-2 -105,-32,-3 -106,-32,-4 -107,-32,-5 -108,-32,-6 -109,-32,-7 -110,-32,-8 -111,-31,-9 -112,-31,-10 -113,-31,-11 -114,-30,-12 -115,-30,-13 -116,-30,-13 -117,-29,-14 -118,-29,-15 -119,-28,-16 -120,-28,-17 -121,-27,-18 -122,-27,-19 -123,-26,-19 -124,-26,-20 -125,-25,-21 -126,-24,-22 -127,-24,-22 -128,-23,-23 -129,-22,-24 -130,-22,-24 -131,-21,-25 -132,-20,-26 -133,-19,-26 -134,-19,-27 -135,-18,-27 -136,-17,-28 -137,-16,-28 -138,-15,-29 -139,-14,-29 -140,-13,-30 -141,-13,-30 -142,-12,-30 -143,-11,-31 -144,-10,-31 -145,-9,-31 -146,-8,-32 -147,-7,-32 -148,-6,-32 -149,-5,-32 -150,-4,-32 -151,-3,-32 -152,-2,-32 -153,-1,-32 -154,0,-33 -155,1,-32 -156,2,-32 -157,3,-32 -158,4,-32 -159,5,-32 -160,6,-32 -161,7,-32 -162,8,-31 -163,9,-31 -164,10,-31 -165,10,-31 -166,11,-30 -167,12,-30 -168,13,-29 -169,14,-29 -170,15,-29 -171,16,-28 -172,17,-28 -173,17,-27 -174,18,-26 -175,19,-26 -176,20,-25 -177,21,-25 -178,21,-24 -179,22,-23 -180,23,-23 -181,23,-22 -182,24,-21 -183,25,-20 -184,25,-20 -185,26,-19 -186,26,-18 -187,27,-17 -188,27,-16 -189,28,-15 -190,28,-15 -191,29,-14 -192,29,-13 -193,29,-12 -194,30,-11 -195,30,-10 -196,30,-9 -197,31,-8 -198,31,-7 -199,31,-6 -200,31,-5 -201,31,-4 -202,31,-3 -203,31,-2 -204,31,-1 -205,31,0 -206,31,1 -207,31,2 -208,31,3 -209,31,4 -210,31,5 -211,31,6 -212,31,7 -213,30,7 -214,30,8 -215,30,9 -216,30,10 -217,29,11 -218,29,12 -219,29,13 -220,28,14 -221,28,15 -222,27,16 -223,27,16 -224,26,17 -225,26,18 -226,25,19 -227,24,20 -228,24,20 -229,23,21 -230,22,22 -231,22,23 -232,21,23 -233,20,24 -234,19,24 -235,19,25 -236,18,26 -237,17,26 -238,16,27 -239,15,27 -240,15,28 -241,14,28 -242,13,29 -243,12,29 -244,11,29 -245,10,30 -246,9,30 -247,8,30 -248,7,31 -249,6,31 -250,5,31 -251,4,31 -252,3,31 -253,2,31 -254,1,31 -255,0,31 -256,0,31 -257,-1,31 -258,-2,31 -259,-3,31 -260,-4,31 -261,-5,31 -262,-6,31 -263,-7,31 -264,-8,31 -265,-9,30 -266,-10,30 -267,-11,30 -268,-12,29 -269,-13,29 -270,-14,29 -271,-15,28 -272,-16,28 -273,-16,27 -274,-17,27 -275,-18,26 -276,-19,26 -277,-20,25 -278,-20,24 -279,-21,24 -280,-22,23 -281,-23,23 -282,-23,22 -283,-24,21 -284,-25,20 -285,-25,20 -286,-26,19 -287,-27,18 -288,-27,17 -289,-28,16 -290,-28,16 -291,-29,15 -292,-29,14 -293,-30,13 -294,-30,12 -295,-30,11 -296,-31,10 -297,-31,9 -298,-31,8 -299,-31,7 -300,-32,7 -301,-32,6 -302,-32,5 -303,-32,4 -304,-32,3 -305,-32,2 -306,-32,1 -307,-32,0 -308,-32,-1 -309,-32,-2 -310,-32,-3 -311,-32,-4 -312,-32,-5 -313,-32,-6 -314,-32,-7 -315,-32,-8 -316,-31,-9 -317,-31,-10 -318,-31,-11 -319,-30,-12 -320,-30,-13 -321,-30,-14 -322,-29,-15 -323,-29,-15 -324,-28,-16 -325,-28,-17 -326,-27,-18 -327,-27,-19 -328,-26,-20 -329,-26,-20 -330,-25,-21 -331,-24,-22 -332,-24,-23 -333,-23,-23 -334,-22,-24 -335,-22,-25 -336,-21,-25 -337,-20,-26 -338,-19,-26 -339,-18,-27 -340,-18,-28 -341,-17,-28 -342,-16,-29 -343,-15,-29 -344,-14,-29 -345,-13,-30 -346,-12,-30 -347,-11,-31 -348,-11,-31 -349,-10,-31 -350,-9,-31 -351,-8,-32 -352,-7,-32 -353,-6,-32 -354,-5,-32 -355,-4,-32 -356,-3,-32 -357,-2,-32 -358,-1,-32 -359,0,-32 -360,1,-32 -361,2,-32 -362,3,-32 -363,4,-32 -364,5,-32 -365,6,-32 -366,7,-32 -367,8,-31 -368,9,-31 -369,10,-31 -370,11,-30 -371,12,-30 -372,12,-30 -373,13,-29 -374,14,-29 -375,15,-28 -376,16,-28 -377,17,-27 -378,18,-27 -379,18,-26 -380,19,-26 -381,20,-25 -382,21,-24 -383,21,-24 -384,22,-23 -385,23,-22 -386,23,-22 -387,24,-21 -388,25,-20 -389,25,-19 -390,26,-19 -391,26,-18 -392,27,-17 -393,27,-16 -394,28,-15 -395,28,-14 -396,29,-13 -397,29,-13 -398,29,-12 -399,30,-11 -400,30,-10 -401,30,-9 -402,31,-8 -403,31,-7 -404,31,-6 -405,31,-5 -406,31,-4 -407,31,-3 -408,31,-2 -409,31,-1 -410,31,0 -411,31,1 -412,31,2 -413,31,3 -414,31,4 -415,31,5 -416,31,6 -417,31,7 -418,30,8 -419,30,9 -420,30,10 -421,30,10 -422,29,11 -423,29,12 -424,28,13 -425,28,14 -426,28,15 -427,27,16 -428,27,17 -429,26,17 -430,25,18 -431,25,19 -432,24,20 -433,24,21 -434,23,21 -435,22,22 -436,22,23 -437,21,23 -438,20,24 -439,19,25 -440,19,25 -441,18,26 -442,17,26 -443,16,27 -444,15,27 -445,14,28 -446,14,28 -447,13,29 -448,12,29 -449,11,29 -450,10,30 -451,9,30 -452,8,30 -453,7,31 -454,6,31 -455,5,31 -456,4,31 -457,3,31 -458,2,31 -459,1,31 -460,0,31 -461,-1,31 -462,-2,31 -463,-3,31 -464,-4,31 -465,-5,31 -466,-6,31 -467,-7,31 -468,-8,31 -469,-8,30 -470,-9,30 -471,-10,30 -472,-11,30 -473,-12,29 -474,-13,29 -475,-14,29 -476,-15,28 -477,-16,28 -478,-17,27 -479,-17,27 -480,-18,26 -481,-19,26 -482,-20,25 -483,-21,24 -484,-21,24 -485,-22,23 -486,-23,22 -487,-24,22 -488,-24,21 -489,-25,20 -490,-25,19 -491,-26,19 -492,-27,18 -493,-27,17 -494,-28,16 -495,-28,15 -496,-29,15 -497,-29,14 -498,-30,13 -499,-30,12 -500,-30,11 -501,-31,10 -502,-31,9 -503,-31,8 -504,-32,7 -505,-32,6 -506,-32,5 -507,-32,4 -508,-32,3 -509,-32,2 -510,-32,1 -511,-32,0 -512,-32,0 -513,-32,-1 -514,-32,-2 -515,-32,-3 -516,-32,-4 -517,-32,-5 -518,-32,-6 -519,-32,-7 -520,-32,-8 -521,-31,-9 -522,-31,-10 -523,-31,-11 -524,-30,-12 -525,-30,-13 -526,-30,-14 -527,-29,-15 -528,-29,-16 -529,-28,-16 -530,-28,-17 -531,-27,-18 -532,-27,-19 -533,-26,-20 -534,-25,-20 -535,-25,-21 -536,-24,-22 -537,-24,-23 -538,-23,-23 -539,-22,-24 -540,-21,-25 -541,-21,-25 -542,-20,-26 -543,-19,-27 -544,-18,-27 -545,-17,-28 -546,-17,-28 -547,-16,-29 -548,-15,-29 -549,-14,-29 -550,-13,-30 -551,-12,-30 -552,-11,-31 -553,-10,-31 -554,-9,-31 -555,-8,-31 -556,-8,-32 -557,-7,-32 -558,-6,-32 -559,-5,-32 -560,-4,-32 -561,-3,-32 -562,-2,-32 -563,-1,-32 -564,0,-32 -565,1,-32 -566,2,-32 -567,3,-32 -568,4,-32 -569,5,-32 -570,6,-32 -571,7,-32 -572,8,-31 -573,9,-31 -574,10,-31 -575,11,-30 -576,12,-30 -577,13,-30 -578,14,-29 -579,14,-29 -580,15,-28 -581,16,-28 -582,17,-27 -583,18,-27 -584,19,-26 -585,19,-26 -586,20,-25 -587,21,-24 -588,22,-24 -589,22,-23 -590,23,-22 -591,24,-22 -592,24,-21 -593,25,-20 -594,25,-19 -595,26,-18 -596,27,-18 -597,27,-17 -598,28,-16 -599,28,-15 -600,28,-14 -601,29,-13 -602,29,-12 -603,30,-11 -604,30,-11 -605,30,-10 -606,30,-9 -607,31,-8 -608,31,-7 -609,31,-6 -610,31,-5 -611,31,-4 -612,31,-3 -613,31,-2 -614,31,-1 -615,31,0 -616,31,1 -617,31,2 -618,31,3 -619,31,4 -620,31,5 -621,31,6 -622,31,7 -623,30,8 -624,30,9 -625,30,10 -626,29,11 -627,29,12 -628,29,12 -629,28,13 -630,28,14 -631,27,15 -632,27,16 -633,26,17 -634,26,18 -635,25,18 -636,25,19 -637,24,20 -638,23,21 -639,23,21 -640,22,22 -641,21,23 -642,21,23 -643,20,24 -644,19,25 -645,18,25 -646,18,26 -647,17,26 -648,16,27 -649,15,27 -650,14,28 -651,13,28 -652,12,29 -653,12,29 -654,11,29 -655,10,30 -656,9,30 -657,8,30 -658,7,31 -659,6,31 -660,5,31 -661,4,31 -662,3,31 -663,2,31 -664,1,31 -665,0,31 -666,-1,32 -667,-2,31 -668,-3,31 -669,-4,31 -670,-5,31 -671,-6,31 -672,-7,31 -673,-8,31 -674,-9,30 -675,-10,30 -676,-11,30 -677,-11,30 -678,-12,29 -679,-13,29 -680,-14,28 -681,-15,28 -682,-16,28 -683,-17,27 -684,-18,27 -685,-18,26 -686,-19,25 -687,-20,25 -688,-21,24 -689,-22,24 -690,-22,23 -691,-23,22 -692,-24,22 -693,-24,21 -694,-25,20 -695,-26,19 -696,-26,19 -697,-27,18 -698,-27,17 -699,-28,16 -700,-28,15 -701,-29,14 -702,-29,14 -703,-30,13 -704,-30,12 -705,-30,11 -706,-31,10 -707,-31,9 -708,-31,8 -709,-32,7 -710,-32,6 -711,-32,5 -712,-32,4 -713,-32,3 -714,-32,2 -715,-32,1 -716,-32,0 -717,-32,-1 -718,-32,-2 -719,-32,-3 -720,-32,-4 -721,-32,-5 -722,-32,-6 -723,-32,-7 -724,-32,-8 -725,-31,-8 -726,-31,-9 -727,-31,-10 -728,-31,-11 -729,-30,-12 -730,-30,-13 -731,-29,-14 -732,-29,-15 -733,-29,-16 -734,-28,-17 -735,-28,-17 -736,-27,-18 -737,-27,-19 -738,-26,-20 -739,-25,-21 -740,-25,-21 -741,-24,-22 -742,-23,-23 -743,-23,-24 -744,-22,-24 -745,-21,-25 -746,-20,-25 -747,-20,-26 -748,-19,-27 -749,-18,-27 -750,-17,-28 -751,-16,-28 -752,-16,-29 -753,-15,-29 -754,-14,-30 -755,-13,-30 -756,-12,-30 -757,-11,-31 -758,-10,-31 -759,-9,-31 -760,-8,-32 -761,-7,-32 -762,-6,-32 -763,-5,-32 -764,-4,-32 -765,-3,-32 -766,-2,-32 -767,-1,-32 -768,0,-32 -769,0,-32 -770,1,-32 -771,2,-32 -772,3,-32 -773,4,-32 -774,5,-32 -775,6,-32 -776,7,-32 -777,8,-31 -778,9,-31 -779,10,-31 -780,11,-30 -781,12,-30 -782,13,-30 -783,14,-29 -784,15,-29 -785,15,-28 -786,16,-28 -787,17,-27 -788,18,-27 -789,19,-26 -790,19,-25 -791,20,-25 -792,21,-24 -793,22,-24 -794,22,-23 -795,23,-22 -796,24,-21 -797,24,-21 -798,25,-20 -799,26,-19 -800,26,-18 -801,27,-17 -802,27,-17 -803,28,-16 -804,28,-15 -805,29,-14 -806,29,-13 -807,29,-12 -808,30,-11 -809,30,-10 -810,30,-9 -811,30,-8 -812,31,-8 -813,31,-7 -814,31,-6 -815,31,-5 -816,31,-4 -817,31,-3 -818,31,-2 -819,31,-1 -820,31,0 -821,31,1 -822,31,2 -823,31,3 -824,31,4 -825,31,5 -826,31,6 -827,31,7 -828,30,8 -829,30,9 -830,30,10 -831,29,11 -832,29,12 -833,29,13 -834,28,14 -835,28,14 -836,27,15 -837,27,16 -838,26,17 -839,26,18 -840,25,19 -841,25,19 -842,24,20 -843,23,21 -844,23,22 -845,22,22 -846,21,23 -847,21,24 -848,20,24 -849,19,25 -850,18,25 -851,17,26 -852,17,27 -853,16,27 -854,15,28 -855,14,28 -856,13,28 -857,12,29 -858,11,29 -859,10,30 -860,10,30 -861,9,30 -862,8,30 -863,7,31 -864,6,31 -865,5,31 -866,4,31 -867,3,31 -868,2,31 -869,1,31 -870,0,31 -871,-1,31 -872,-2,31 -873,-3,31 -874,-4,31 -875,-5,31 -876,-6,31 -877,-7,31 -878,-8,31 -879,-9,30 -880,-10,30 -881,-11,30 -882,-12,29 -883,-13,29 -884,-13,29 -885,-14,28 -886,-15,28 -887,-16,27 -888,-17,27 -889,-18,26 -890,-19,26 -891,-19,25 -892,-20,25 -893,-21,24 -894,-22,23 -895,-22,23 -896,-23,22 -897,-24,21 -898,-24,21 -899,-25,20 -900,-26,19 -901,-26,18 -902,-27,18 -903,-27,17 -904,-28,16 -905,-28,15 -906,-29,14 -907,-29,13 -908,-30,12 -909,-30,12 -910,-30,11 -911,-31,10 -912,-31,9 -913,-31,8 -914,-32,7 -915,-32,6 -916,-32,5 -917,-32,4 -918,-32,3 -919,-32,2 -920,-32,1 -921,-32,0 -922,-32,-1 -923,-32,-2 -924,-32,-3 -925,-32,-4 -926,-32,-5 -927,-32,-6 -928,-32,-7 -929,-32,-8 -930,-31,-9 -931,-31,-10 -932,-31,-11 -933,-31,-11 -934,-30,-12 -935,-30,-13 -936,-29,-14 -937,-29,-15 -938,-29,-16 -939,-28,-17 -940,-28,-18 -941,-27,-18 -942,-26,-19 -943,-26,-20 -944,-25,-21 -945,-25,-22 -946,-24,-22 -947,-23,-23 -948,-23,-24 -949,-22,-24 -950,-21,-25 -951,-20,-26 -952,-20,-26 -953,-19,-27 -954,-18,-27 -955,-17,-28 -956,-16,-28 -957,-15,-29 -958,-15,-29 -959,-14,-30 -960,-13,-30 -961,-12,-30 -962,-11,-31 -963,-10,-31 -964,-9,-31 -965,-8,-32 -966,-7,-32 -967,-6,-32 -968,-5,-32 -969,-4,-32 -970,-3,-32 -971,-2,-32 -972,-1,-32 -973,0,-32 -974,1,-32 -975,2,-32 -976,3,-32 -977,4,-32 -978,5,-32 -979,6,-32 -980,7,-32 -981,7,-31 -982,8,-31 -983,9,-31 -984,10,-31 -985,11,-30 -986,12,-30 -987,13,-30 -988,14,-29 -989,15,-29 -990,16,-28 -991,16,-28 -992,17,-27 -993,18,-27 -994,19,-26 -995,20,-25 -996,20,-25 -997,21,-24 -998,22,-23 -999,23,-23 -1000,23,-22 -1001,24,-21 -1002,24,-20 -1003,25,-20 -1004,26,-19 -1005,26,-18 -1006,27,-17 -1007,27,-16 -1008,28,-16 -1009,28,-15 -1010,29,-14 -1011,29,-13 -1012,29,-12 -1013,30,-11 -1014,30,-10 -1015,30,-9 -1016,31,-8 -1017,31,-7 -1018,31,-6 -1019,31,-5 -1020,31,-4 -1021,31,-3 -1022,31,-2 -1023,32,-1 diff --git a/9_Firmware/9_2_FPGA/tb/tb_radar_receiver_final.v b/9_Firmware/9_2_FPGA/tb/tb_radar_receiver_final.v index adc78e7..ca0601e 100644 --- a/9_Firmware/9_2_FPGA/tb/tb_radar_receiver_final.v +++ b/9_Firmware/9_2_FPGA/tb/tb_radar_receiver_final.v @@ -7,43 +7,21 @@ // -> matched_filter_multi_segment -> range_bin_decimator // -> doppler_processor_optimized -> doppler_output // -// ============================================================================ -// TWO MODES (compile-time define): -// -// 1. GOLDEN_GENERATE mode (-DGOLDEN_GENERATE): -// Dumps all Doppler output samples to golden reference files. -// Run once on known-good RTL: -// iverilog -g2001 -DSIMULATION -DGOLDEN_GENERATE -o tb_golden_gen.vvp \ -// tb/tb_radar_receiver_final.v -// mkdir -p tb/golden -// vvp tb_golden_gen.vvp -// -// 2. Default mode (no GOLDEN_GENERATE): -// Loads golden files, compares each Doppler output against reference, -// and runs physics-based bounds checks. -// iverilog -g2001 -DSIMULATION -o tb_radar_receiver_final.vvp \ -// tb/tb_radar_receiver_final.v -// vvp tb_radar_receiver_final.vvp -// -// PREREQUISITES: -// - The directory tb/golden/ must exist before running either mode. -// Create it with: mkdir -p tb/golden -// // TAP POINTS: // Tap 1 (DDC output) - bounds checking only (CDC jitter -> non-deterministic) // Signals: dut.ddc_out_i [17:0], dut.ddc_out_q [17:0], dut.ddc_valid_i -// Tap 2 (Doppler output) - golden compared (deterministic after MF buffering) +// Tap 2 (Doppler output) - structural + bounds checks (deterministic after MF) // Signals: doppler_output[31:0], doppler_valid, doppler_bin[4:0], // range_bin_out[5:0] // -// Golden file: tb/golden/golden_doppler.mem -// 2048 entries of 32-bit hex, indexed by range_bin*32 + doppler_bin -// // Strategy: // - Uses behavioral stub for ad9484_interface_400m (no Xilinx primitives) // - Overrides radar_mode_controller timing params for fast simulation // - Feeds 120 MHz tone at ADC input (IF frequency -> DDC passband) -// - Verifies structural correctness + golden comparison + bounds checks +// - Verifies structural correctness (S1-S10) + physics bounds checks (B1-B5) +// - Bit-accurate golden comparison is done by the MF co-sim tests +// (tb_mf_cosim.v + compare_mf.py) and full-chain co-sim tests +// (tb_doppler_realdata.v, tb_fullchain_realdata.v), not here. // // Convention: check task, VCD dump, CSV output, pass/fail summary // ============================================================================ @@ -194,46 +172,6 @@ task check; end endtask -// ============================================================================ -// GOLDEN MEMORY DECLARATIONS AND LOAD/STORE LOGIC -// ============================================================================ -localparam GOLDEN_ENTRIES = 2048; // 64 range bins * 32 Doppler bins -localparam GOLDEN_TOLERANCE = 2; // +/- 2 LSB tolerance for comparison - -reg [31:0] golden_doppler [0:2047]; - -// -- Golden comparison tracking -- -integer golden_match_count; -integer golden_mismatch_count; -integer golden_max_err_i; -integer golden_max_err_q; -integer golden_compare_count; - -`ifdef GOLDEN_GENERATE - // In generate mode, we just initialize the array to X/0 - // and fill it as outputs arrive - integer gi; - initial begin - for (gi = 0; gi < GOLDEN_ENTRIES; gi = gi + 1) - golden_doppler[gi] = 32'd0; - golden_match_count = 0; - golden_mismatch_count = 0; - golden_max_err_i = 0; - golden_max_err_q = 0; - golden_compare_count = 0; - end -`else - // In comparison mode, load the golden reference - initial begin - $readmemh("tb/golden/golden_doppler.mem", golden_doppler); - golden_match_count = 0; - golden_mismatch_count = 0; - golden_max_err_i = 0; - golden_max_err_q = 0; - golden_compare_count = 0; - end -`endif - // ============================================================================ // DDC ENERGY ACCUMULATOR (Bounds Check B1) // ============================================================================ @@ -257,7 +195,7 @@ always @(posedge clk_100m) begin end // ============================================================================ -// DOPPLER OUTPUT CAPTURE, GOLDEN COMPARISON, AND DUPLICATE DETECTION +// DOPPLER OUTPUT CAPTURE AND DUPLICATE DETECTION // ============================================================================ integer doppler_output_count; integer doppler_frame_count; @@ -311,13 +249,6 @@ end // Monitor doppler outputs -- only after reset released always @(posedge clk_100m) begin if (reset_n && doppler_valid) begin : doppler_capture_block - // ---- Signed intermediates for golden comparison ---- - reg signed [16:0] actual_i, actual_q; - reg signed [16:0] expected_i, expected_q; - reg signed [16:0] err_i_signed, err_q_signed; - integer abs_err_i, abs_err_q; - integer gidx; - reg [31:0] expected_val; // ---- Magnitude intermediates for B2 ---- reg signed [16:0] mag_i_signed, mag_q_signed; integer mag_i, mag_q, mag_sum; @@ -350,9 +281,6 @@ always @(posedge clk_100m) begin if ((doppler_output_count % 256) == 0) $display("[INFO] %0d doppler outputs so far (t=%0t)", doppler_output_count, $time); - // ---- Golden index computation ---- - gidx = range_bin_out * 32 + doppler_bin; - // ---- Duplicate detection (B5) ---- if (range_bin_out < 64 && doppler_bin < 32) begin if (index_seen[range_bin_out][doppler_bin]) begin @@ -376,44 +304,6 @@ always @(posedge clk_100m) begin if (mag_sum > peak_dbin_mag[range_bin_out]) peak_dbin_mag[range_bin_out] = mag_sum; end - -`ifdef GOLDEN_GENERATE - // ---- GOLDEN GENERATE: store output ---- - if (gidx < GOLDEN_ENTRIES) - golden_doppler[gidx] = doppler_output; -`else - // ---- GOLDEN COMPARE: check against reference ---- - if (gidx < GOLDEN_ENTRIES) begin - expected_val = golden_doppler[gidx]; - - actual_i = $signed(doppler_output[15:0]); - actual_q = $signed(doppler_output[31:16]); - expected_i = $signed(expected_val[15:0]); - expected_q = $signed(expected_val[31:16]); - - err_i_signed = actual_i - expected_i; - err_q_signed = actual_q - expected_q; - - abs_err_i = (err_i_signed < 0) ? -err_i_signed : err_i_signed; - abs_err_q = (err_q_signed < 0) ? -err_q_signed : err_q_signed; - - golden_compare_count = golden_compare_count + 1; - - if (abs_err_i > golden_max_err_i) golden_max_err_i = abs_err_i; - if (abs_err_q > golden_max_err_q) golden_max_err_q = abs_err_q; - - if (abs_err_i <= GOLDEN_TOLERANCE && abs_err_q <= GOLDEN_TOLERANCE) begin - golden_match_count = golden_match_count + 1; - end else begin - golden_mismatch_count = golden_mismatch_count + 1; - if (golden_mismatch_count <= 20) - $display("[MISMATCH] idx=%0d rbin=%0d dbin=%0d actual=%08h expected=%08h err_i=%0d err_q=%0d", - gidx, range_bin_out, doppler_bin, - doppler_output, expected_val, - abs_err_i, abs_err_q); - end - end -`endif end // Track frame completions via doppler_proc -- only after reset @@ -556,13 +446,6 @@ initial begin end end - // ---- DUMP GOLDEN FILE (generate mode only) ---- -`ifdef GOLDEN_GENERATE - $writememh("tb/golden/golden_doppler.mem", golden_doppler); - $display("[GOLDEN_GENERATE] Wrote tb/golden/golden_doppler.mem (%0d entries captured)", - doppler_output_count); -`endif - // ================================================================ // RUN CHECKS // ================================================================ @@ -649,33 +532,7 @@ initial begin "S10: DDC produced substantial output (>100 valid samples)"); // ================================================================ - // GOLDEN COMPARISON REPORT - // ================================================================ -`ifdef GOLDEN_GENERATE - $display(""); - $display("Golden comparison: SKIPPED (GOLDEN_GENERATE mode)"); - $display(" Wrote golden reference with %0d Doppler samples", doppler_output_count); -`else - $display(""); - $display("------------------------------------------------------------"); - $display("GOLDEN COMPARISON (tolerance=%0d LSB)", GOLDEN_TOLERANCE); - $display("------------------------------------------------------------"); - $display("Golden comparison: %0d/%0d match (tolerance=%0d LSB)", - golden_match_count, golden_compare_count, GOLDEN_TOLERANCE); - $display(" Mismatches: %0d (I-ch max_err=%0d, Q-ch max_err=%0d)", - golden_mismatch_count, golden_max_err_i, golden_max_err_q); - - // CHECK G1: All golden comparisons match - if (golden_compare_count > 0) begin - check(golden_mismatch_count == 0, - "G1: All Doppler outputs match golden reference within tolerance"); - end else begin - check(0, "G1: All Doppler outputs match golden reference (NO COMPARISONS)"); - end -`endif - - // ================================================================ - // BOUNDS CHECKS (active in both modes) + // BOUNDS CHECKS // ================================================================ $display(""); $display("------------------------------------------------------------"); @@ -748,16 +605,8 @@ initial begin // ================================================================ $display(""); $display("============================================================"); - $display("INTEGRATION TEST -- GOLDEN COMPARISON + BOUNDS"); + $display("INTEGRATION TEST -- STRUCTURAL + BOUNDS"); $display("============================================================"); -`ifdef GOLDEN_GENERATE - $display("Mode: GOLDEN_GENERATE (reference dump, comparison skipped)"); -`else - $display("Golden comparison: %0d/%0d match (tolerance=%0d LSB)", - golden_match_count, golden_compare_count, GOLDEN_TOLERANCE); - $display(" Mismatches: %0d (I-ch max_err=%0d, Q-ch max_err=%0d)", - golden_mismatch_count, golden_max_err_i, golden_max_err_q); -`endif $display("Bounds checks:"); $display(" B1: DDC RMS energy in range [%0d, %0d]", (ddc_energy_acc > 0) ? 1 : 0, DDC_MAX_ENERGY); diff --git a/9_Firmware/9_3_GUI/test_v7.py b/9_Firmware/9_3_GUI/test_v7.py index b07bd2d..b4b1670 100644 --- a/9_Firmware/9_3_GUI/test_v7.py +++ b/9_Firmware/9_3_GUI/test_v7.py @@ -58,9 +58,9 @@ class TestRadarSettings(unittest.TestCase): def test_has_physical_conversion_fields(self): s = _models().RadarSettings() - self.assertIsInstance(s.range_resolution, float) + self.assertIsInstance(s.range_bin_spacing, float) self.assertIsInstance(s.velocity_resolution, float) - self.assertGreater(s.range_resolution, 0) + self.assertGreater(s.range_bin_spacing, 0) self.assertGreater(s.velocity_resolution, 0) def test_defaults(self): @@ -436,10 +436,19 @@ class TestWaveformConfig(unittest.TestCase): self.assertEqual(wc.decimation_factor, 16) def test_range_resolution(self): - """range_resolution_m should be ~24.0 m/bin with PLFM defaults.""" + """bin_spacing_m should be ~24.0 m/bin with PLFM defaults.""" from v7.models import WaveformConfig wc = WaveformConfig() - self.assertAlmostEqual(wc.range_resolution_m, 23.98, places=1) + self.assertAlmostEqual(wc.bin_spacing_m, 23.98, places=1) + + def test_range_resolution_physical(self): + """range_resolution_m = c/(2*BW), ~7.5 m at 20 MHz BW.""" + from v7.models import WaveformConfig + wc = WaveformConfig() + self.assertAlmostEqual(wc.range_resolution_m, 7.49, places=1) + # 30 MHz BW → 5.0 m resolution + wc30 = WaveformConfig(bandwidth_hz=30e6) + self.assertAlmostEqual(wc30.range_resolution_m, 4.996, places=1) def test_velocity_resolution(self): """velocity_resolution_mps should be ~2.67 m/s/bin.""" @@ -448,10 +457,10 @@ class TestWaveformConfig(unittest.TestCase): self.assertAlmostEqual(wc.velocity_resolution_mps, 2.67, places=1) def test_max_range(self): - """max_range_m = range_resolution * n_range_bins.""" + """max_range_m = bin_spacing * n_range_bins.""" from v7.models import WaveformConfig wc = WaveformConfig() - self.assertAlmostEqual(wc.max_range_m, wc.range_resolution_m * 64, places=1) + self.assertAlmostEqual(wc.max_range_m, wc.bin_spacing_m * 64, places=1) def test_max_velocity(self): """max_velocity_mps = velocity_resolution * n_doppler_bins / 2.""" @@ -467,9 +476,9 @@ class TestWaveformConfig(unittest.TestCase): """Non-default parameters correctly change derived values.""" from v7.models import WaveformConfig wc1 = WaveformConfig() - # Matched-filter: range_per_bin = c/(2*fs)*dec — proportional to 1/fs - wc2 = WaveformConfig(sample_rate_hz=200e6) # double fs → halve range res - self.assertAlmostEqual(wc2.range_resolution_m, wc1.range_resolution_m / 2, places=2) + # Matched-filter: bin_spacing = c/(2*fs)*dec — proportional to 1/fs + wc2 = WaveformConfig(sample_rate_hz=200e6) # double fs → halve bin spacing + self.assertAlmostEqual(wc2.bin_spacing_m, wc1.bin_spacing_m / 2, places=2) def test_zero_center_freq_velocity(self): """Zero center freq should cause ZeroDivisionError in velocity calc.""" @@ -927,7 +936,7 @@ class TestExtractTargetsFromFrame(unittest.TestCase): """Detection at range bin 10 → range = 10 * range_resolution.""" from v7.processing import extract_targets_from_frame frame = self._make_frame(det_cells=[(10, 16)]) # dbin=16 = center → vel=0 - targets = extract_targets_from_frame(frame, range_resolution=23.98) + targets = extract_targets_from_frame(frame, bin_spacing=23.98) self.assertEqual(len(targets), 1) self.assertAlmostEqual(targets[0].range, 10 * 23.98, places=1) self.assertAlmostEqual(targets[0].velocity, 0.0, places=2) @@ -956,7 +965,7 @@ class TestExtractTargetsFromFrame(unittest.TestCase): pitch=0.0, heading=90.0) frame = self._make_frame(det_cells=[(10, 16)]) targets = extract_targets_from_frame( - frame, range_resolution=100.0, gps=gps) + frame, bin_spacing=100.0, gps=gps) # Should be roughly east of radar position self.assertAlmostEqual(targets[0].latitude, 41.9, places=2) self.assertGreater(targets[0].longitude, 12.5) diff --git a/9_Firmware/9_3_GUI/v7/models.py b/9_Firmware/9_3_GUI/v7/models.py index 4dfa22d..05e1419 100644 --- a/9_Firmware/9_3_GUI/v7/models.py +++ b/9_Firmware/9_3_GUI/v7/models.py @@ -105,11 +105,11 @@ class RadarSettings: tab and Opcode enum in radar_protocol.py. This dataclass holds only host-side display/map settings and physical-unit conversion factors. - range_resolution and velocity_resolution should be calibrated to + range_bin_spacing and velocity_resolution should be calibrated to the actual waveform parameters. """ system_frequency: float = 10.5e9 # Hz (PLFM TX LO, verified from ADF4382 config) - range_resolution: float = 24.0 # Meters per decimated range bin (c/(2*100MSPS)*16) + range_bin_spacing: float = 24.0 # Meters per decimated range bin (c/(2*100MSPS)*16) velocity_resolution: float = 2.67 # m/s per Doppler bin (lam/(2*32*167us)) max_distance: float = 1536 # Max detection range (m) -- 64 bins x 24 m (3 km mode) map_size: float = 1536 # Map display size (m) @@ -216,18 +216,30 @@ class WaveformConfig: decimation_factor: int = 16 # 1024 → 64 @property - def range_resolution_m(self) -> float: + def bin_spacing_m(self) -> float: """Meters per decimated range bin (matched-filter receiver). For matched-filter pulse compression: bin spacing = c / (2 * fs). After decimation the bin spacing grows by *decimation_factor*. - This is independent of chirp bandwidth (BW affects resolution, not - bin spacing). + This is independent of chirp bandwidth (BW affects physical + resolution, not bin spacing). """ c = 299_792_458.0 raw_bin = c / (2.0 * self.sample_rate_hz) return raw_bin * self.decimation_factor + @property + def range_resolution_m(self) -> float: + """Physical range resolution in meters, set by chirp bandwidth. + + range_resolution = c / (2 * BW). + At 20 MHz BW → 7.5 m; at 30 MHz BW → 5.0 m. + This is distinct from bin_spacing_m (which depends on sample rate + and decimation factor, not bandwidth). + """ + c = 299_792_458.0 + return c / (2.0 * self.bandwidth_hz) + @property def velocity_resolution_mps(self) -> float: """m/s per Doppler bin. lambda / (2 * n_doppler * PRI).""" @@ -238,7 +250,7 @@ class WaveformConfig: @property def max_range_m(self) -> float: """Maximum unambiguous range in meters.""" - return self.range_resolution_m * self.n_range_bins + return self.bin_spacing_m * self.n_range_bins @property def max_velocity_mps(self) -> float: diff --git a/9_Firmware/9_3_GUI/v7/processing.py b/9_Firmware/9_3_GUI/v7/processing.py index c601097..15bf17d 100644 --- a/9_Firmware/9_3_GUI/v7/processing.py +++ b/9_Firmware/9_3_GUI/v7/processing.py @@ -490,7 +490,7 @@ def polar_to_geographic( def extract_targets_from_frame( frame, - range_resolution: float = 1.0, + bin_spacing: float = 1.0, velocity_resolution: float = 1.0, gps: GPSData | None = None, ) -> list[RadarTarget]: @@ -503,8 +503,8 @@ def extract_targets_from_frame( ---------- frame : RadarFrame Frame with populated ``detections``, ``magnitude``, ``range_doppler_i/q``. - range_resolution : float - Meters per range bin. + bin_spacing : float + Meters per range bin (bin spacing, NOT bandwidth-limited resolution). velocity_resolution : float m/s per Doppler bin. gps : GPSData | None @@ -525,7 +525,7 @@ def extract_targets_from_frame( mag = float(frame.magnitude[rbin, dbin]) snr = 10.0 * math.log10(max(mag, 1.0)) if mag > 0 else 0.0 - range_m = float(rbin) * range_resolution + range_m = float(rbin) * bin_spacing velocity_ms = float(dbin - doppler_center) * velocity_resolution lat, lon, azimuth, elevation = 0.0, 0.0, 0.0, 0.0 diff --git a/9_Firmware/9_3_GUI/v7/workers.py b/9_Firmware/9_3_GUI/v7/workers.py index f846751..79ef108 100644 --- a/9_Firmware/9_3_GUI/v7/workers.py +++ b/9_Firmware/9_3_GUI/v7/workers.py @@ -169,7 +169,7 @@ class RadarDataWorker(QThread): The FPGA already does: FFT, MTI, CFAR, DC notch. Host-side DSP adds: clustering, tracking, geo-coordinate mapping. - Bin-to-physical conversion uses RadarSettings.range_resolution + Bin-to-physical conversion uses RadarSettings.range_bin_spacing and velocity_resolution (should be calibrated to actual waveform). """ targets: list[RadarTarget] = [] @@ -180,7 +180,7 @@ class RadarDataWorker(QThread): # Extract detections from FPGA CFAR flags det_indices = np.argwhere(frame.detections > 0) - r_res = self._settings.range_resolution + r_res = self._settings.range_bin_spacing v_res = self._settings.velocity_resolution for idx in det_indices: @@ -559,7 +559,7 @@ class ReplayWorker(QThread): # Target extraction targets = self._extract_targets( frame, - range_resolution=self._waveform.range_resolution_m, + bin_spacing=self._waveform.bin_spacing_m, velocity_resolution=self._waveform.velocity_resolution_mps, gps=self._gps, ) diff --git a/9_Firmware/tests/cross_layer/contract_parser.py b/9_Firmware/tests/cross_layer/contract_parser.py index a0220ff..a729d49 100644 --- a/9_Firmware/tests/cross_layer/contract_parser.py +++ b/9_Firmware/tests/cross_layer/contract_parser.py @@ -793,3 +793,51 @@ def parse_stm32_gpio_init(filepath: Path | None = None) -> list[GpioPin]: )) return pins + + +# =================================================================== +# FPGA radar_params.vh parser +# =================================================================== + +def parse_radar_params_vh() -> dict[str, int]: + """ + Parse `define values from radar_params.vh. + + Returns dict like {"RP_FFT_SIZE": 1024, "RP_DECIMATION_FACTOR": 16, ...}. + Only parses defines with simple integer or Verilog literal values. + Skips bit-width prefixed literals (e.g. 2'b00) — returns the numeric value. + """ + path = FPGA_DIR / "radar_params.vh" + text = path.read_text() + params: dict[str, int] = {} + + for m in re.finditer( + r'`define\s+(RP_\w+)\s+(\S+)', text + ): + name = m.group(1) + val_str = m.group(2).rstrip() + + # Skip non-numeric defines (like RADAR_PARAMS_VH guard) + if name == "RADAR_PARAMS_VH": + continue + + # Handle Verilog bit-width literals: 2'b00, 8'h30, etc. + verilog_lit = re.match(r"\d+'([bhd])(\w+)", val_str) + if verilog_lit: + base_char = verilog_lit.group(1) + digits = verilog_lit.group(2) + base = {"b": 2, "h": 16, "d": 10}[base_char] + params[name] = int(digits, base) + continue + + # Handle parenthesized expressions like (`RP_X * `RP_Y) + if "(" in val_str or "`" in val_str: + continue # Skip computed defines + + # Plain integer + try: + params[name] = int(val_str) + except ValueError: + continue + + return params diff --git a/9_Firmware/tests/cross_layer/test_cross_layer_contract.py b/9_Firmware/tests/cross_layer/test_cross_layer_contract.py index 8929ee6..99128d1 100644 --- a/9_Firmware/tests/cross_layer/test_cross_layer_contract.py +++ b/9_Firmware/tests/cross_layer/test_cross_layer_contract.py @@ -27,10 +27,12 @@ layers agree (because both could be wrong). from __future__ import annotations import os +import re import struct import subprocess import tempfile from pathlib import Path +from typing import ClassVar import pytest @@ -202,6 +204,58 @@ class TestTier1OpcodeContract: f"but ground truth says '{expected_reg}'" ) + def test_opcode_count_exact_match(self): + """ + Total opcode count must match ground truth exactly. + + This is a CANARY test: if an LLM agent or developer adds/removes + an opcode in one layer without updating ground truth, this fails + immediately. Update GROUND_TRUTH_OPCODES when intentionally + changing the register map. + """ + expected_count = len(GROUND_TRUTH_OPCODES) # 25 + py_count = len(cp.parse_python_opcodes()) + v_count = len(cp.parse_verilog_opcodes()) + + assert py_count == expected_count, ( + f"Python has {py_count} opcodes but ground truth has {expected_count}. " + f"If intentional, update GROUND_TRUTH_OPCODES in this test file." + ) + assert v_count == expected_count, ( + f"Verilog has {v_count} opcodes but ground truth has {expected_count}. " + f"If intentional, update GROUND_TRUTH_OPCODES in this test file." + ) + + def test_no_extra_verilog_opcodes(self): + """ + Verilog must not have opcodes absent from ground truth. + + Catches the case where someone adds a new case entry in + radar_system_top.v but forgets to update the contract. + """ + v_opcodes = cp.parse_verilog_opcodes() + extra = set(v_opcodes.keys()) - set(GROUND_TRUTH_OPCODES.keys()) + assert not extra, ( + f"Verilog has opcodes not in ground truth: " + f"{[f'0x{x:02X} ({v_opcodes[x].register})' for x in extra]}. " + f"Add them to GROUND_TRUTH_OPCODES if intentional." + ) + + def test_no_extra_python_opcodes(self): + """ + Python must not have opcodes absent from ground truth. + + Catches phantom opcodes (like the 0x06 incident) added by + LLM agents that assume without verifying. + """ + py_opcodes = cp.parse_python_opcodes() + extra = set(py_opcodes.keys()) - set(GROUND_TRUTH_OPCODES.keys()) + assert not extra, ( + f"Python has opcodes not in ground truth: " + f"{[f'0x{x:02X} ({py_opcodes[x].name})' for x in extra]}. " + f"Remove phantom opcodes or add to GROUND_TRUTH_OPCODES." + ) + class TestTier1BitWidths: """Verify register widths and opcode bit slices match ground truth.""" @@ -300,6 +354,122 @@ class TestTier1StatusFieldPositions: ) +class TestTier1ArchitecturalParams: + """ + Verify radar_params.vh (FPGA single source of truth) matches Python + WaveformConfig defaults and frozen architectural constants. + + These tests catch: + - LLM agents changing FFT size, bin counts, or sample rates in one + layer without updating the other + - Accidental parameter drift between FPGA and GUI + - Unauthorized changes to critical architectural constants + + When intentionally changing a parameter (e.g. FFT 1024→2048), + update BOTH radar_params.vh AND WaveformConfig, then update the + FROZEN_PARAMS dict below. + """ + + # Frozen architectural constants — update deliberately when changing arch + FROZEN_PARAMS: ClassVar[dict[str, int]] = { + "RP_FFT_SIZE": 1024, + "RP_DECIMATION_FACTOR": 16, + "RP_BINS_PER_SEGMENT": 64, + "RP_OUTPUT_RANGE_BINS_3KM": 64, + "RP_DOPPLER_FFT_SIZE": 16, + "RP_NUM_DOPPLER_BINS": 32, + "RP_CHIRPS_PER_FRAME": 32, + "RP_CHIRPS_PER_SUBFRAME": 16, + "RP_DATA_WIDTH": 16, + "RP_PROCESSING_RATE_MHZ": 100, + "RP_RANGE_PER_BIN_DM": 240, # 24.0 m in decimeters + } + + def test_radar_params_vh_parseable(self): + """radar_params.vh must exist and parse without error.""" + params = cp.parse_radar_params_vh() + assert len(params) > 10, ( + f"Only parsed {len(params)} defines from radar_params.vh — " + f"expected > 10. Parser may be broken." + ) + + def test_frozen_constants_unchanged(self): + """ + Critical architectural constants must match frozen values. + + If this test fails, someone changed a fundamental parameter. + Verify the change is intentional, update FROZEN_PARAMS, AND + update all downstream consumers (GUI, testbenches, docs). + """ + params = cp.parse_radar_params_vh() + for name, expected in self.FROZEN_PARAMS.items(): + assert name in params, ( + f"{name} missing from radar_params.vh! " + f"Was it renamed or removed?" + ) + assert params[name] == expected, ( + f"ARCHITECTURAL CHANGE DETECTED: {name} = {params[name]}, " + f"expected {expected}. If intentional, update FROZEN_PARAMS " + f"in this test AND all downstream consumers." + ) + + def test_fpga_python_fft_size_match(self): + """FPGA FFT size must match Python WaveformConfig.fft_size.""" + params = cp.parse_radar_params_vh() + sys.path.insert(0, str(cp.GUI_DIR)) + from v7.models import WaveformConfig + wc = WaveformConfig() + assert params["RP_FFT_SIZE"] == wc.fft_size, ( + f"FFT size mismatch: radar_params.vh={params['RP_FFT_SIZE']}, " + f"WaveformConfig={wc.fft_size}" + ) + + def test_fpga_python_decimation_match(self): + """FPGA decimation factor must match Python WaveformConfig.""" + params = cp.parse_radar_params_vh() + sys.path.insert(0, str(cp.GUI_DIR)) + from v7.models import WaveformConfig + wc = WaveformConfig() + assert params["RP_DECIMATION_FACTOR"] == wc.decimation_factor, ( + f"Decimation mismatch: radar_params.vh={params['RP_DECIMATION_FACTOR']}, " + f"WaveformConfig={wc.decimation_factor}" + ) + + def test_fpga_python_range_bins_match(self): + """FPGA 3km output bins must match Python WaveformConfig.n_range_bins.""" + params = cp.parse_radar_params_vh() + sys.path.insert(0, str(cp.GUI_DIR)) + from v7.models import WaveformConfig + wc = WaveformConfig() + assert params["RP_OUTPUT_RANGE_BINS_3KM"] == wc.n_range_bins, ( + f"Range bins mismatch: radar_params.vh={params['RP_OUTPUT_RANGE_BINS_3KM']}, " + f"WaveformConfig={wc.n_range_bins}" + ) + + def test_fpga_python_doppler_bins_match(self): + """FPGA Doppler bins must match Python WaveformConfig.n_doppler_bins.""" + params = cp.parse_radar_params_vh() + sys.path.insert(0, str(cp.GUI_DIR)) + from v7.models import WaveformConfig + wc = WaveformConfig() + assert params["RP_NUM_DOPPLER_BINS"] == wc.n_doppler_bins, ( + f"Doppler bins mismatch: radar_params.vh={params['RP_NUM_DOPPLER_BINS']}, " + f"WaveformConfig={wc.n_doppler_bins}" + ) + + def test_fpga_python_sample_rate_match(self): + """FPGA processing rate must match Python WaveformConfig.sample_rate_hz.""" + params = cp.parse_radar_params_vh() + sys.path.insert(0, str(cp.GUI_DIR)) + from v7.models import WaveformConfig + wc = WaveformConfig() + fpga_rate_hz = params["RP_PROCESSING_RATE_MHZ"] * 1e6 + assert fpga_rate_hz == wc.sample_rate_hz, ( + f"Sample rate mismatch: radar_params.vh={fpga_rate_hz/1e6} MHz, " + f"WaveformConfig={wc.sample_rate_hz/1e6} MHz" + ) + + class TestTier1PacketConstants: """Verify packet header/footer/size constants match across layers.""" @@ -826,3 +996,107 @@ class TestTier3CStub: assert result.get("parse_ok") == "true", ( f"Boundary values rejected: {result}" ) + + +# =================================================================== +# TIER 4: Stale Value Detection (LLM Agent Guardrails) +# =================================================================== + +class TestTier4BannedPatterns: + """ + Scan source files for known-wrong values that have been corrected. + + These patterns are stale ADI Phaser defaults, wrong sample rates, + and incorrect range calculations that were cleaned up in commit + d259e5c. If an LLM agent reintroduces them, this test catches it. + + IMPORTANT: Allowlist entries exist for legitimate uses (e.g. comments + explaining what was wrong, test files checking for these values). + """ + + # (regex_pattern, description, file_extensions_to_scan) + BANNED_PATTERNS: ClassVar[list[tuple[str, str, tuple[str, ...]]]] = [ + # Wrong carrier frequency (ADI Phaser default, not PLFM) + (r'10[._]?525\s*e\s*9|10\.525\s*GHz|10525000000', + "Stale ADI Phaser carrier freq — PLFM uses 10.5 GHz", + ("*.py", "*.v", "*.vh", "*.cpp", "*.h")), + + # Wrong post-DDC sample rate (ADI Phaser uses 4 MSPS) + (r'(? 20 else "") + )