From a6ac728cf12a00a1be65b342321c921808a70023 Mon Sep 17 00:00:00 2001 From: SikongJueluo Date: Mon, 19 May 2025 18:47:15 +0800 Subject: [PATCH] fix: boundary scan could not save --- package-lock.json | 16 + package.json | 1 + server/boundary_registers.json | 682 +++++++++--------- src/components/UploadCard.vue | 1 - src/components/equipments/MotherBoardCaps.vue | 128 +--- src/stores/equipments.ts | 126 +++- src/views/TestView.vue | 1 - 7 files changed, 502 insertions(+), 453 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2dce99e..82e4401 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "dependencies": { "@svgdotjs/svg.js": "^3.2.4", "@types/lodash": "^4.17.16", + "async-mutex": "^0.5.0", "lodash": "^4.17.21", "log-symbols": "^7.0.0", "mathjs": "^14.4.0", @@ -2006,6 +2007,15 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/async-mutex": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.5.0.tgz", + "integrity": "sha512-1A94B18jkJ3DYq284ohPxoXbfTA5HsQ7/Mf4DEhcyLx3Bz27Rh59iScbB6EPiP+B+joue6YCxcMXSbFC1tZKwA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/autoprefixer": { "version": "10.4.21", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", @@ -3700,6 +3710,12 @@ "integrity": "sha512-HjX/7HxQe2bXkbp8pHTjy4Ir9eHIDnDDsLDphhGqy6I9iZ/vD4QXWEIlrVRZsEX+kS2jIiiF/mnl0nKnPTiYFw==", "license": "MIT" }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, "node_modules/typed-function": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/typed-function/-/typed-function-4.2.1.tgz", diff --git a/package.json b/package.json index 79175f7..68ab8ee 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "dependencies": { "@svgdotjs/svg.js": "^3.2.4", "@types/lodash": "^4.17.16", + "async-mutex": "^0.5.0", "lodash": "^4.17.21", "log-symbols": "^7.0.0", "mathjs": "^14.4.0", diff --git a/server/boundary_registers.json b/server/boundary_registers.json index db77fdf..ab48ef3 100644 --- a/server/boundary_registers.json +++ b/server/boundary_registers.json @@ -4,20 +4,20 @@ { "cell_number": "0", "cell_name": "BC_2", - "port_id": "SCBV", + "port_id": "AB15", "function": "input", "safe_bit": "X" }, { "cell_number": "1", - "cell_name": "BC_3", + "cell_name": "BC_2", "function": "control", "safe_bit": "1" }, { "cell_number": "2", "cell_name": "BC_7", - "port_id": "L6_PAD0", + "port_id": "U24", "function": "bidir", "safe_bit": "X", "ccell": "1", @@ -33,7 +33,7 @@ { "cell_number": "4", "cell_name": "BC_7", - "port_id": "L6_PAD1", + "port_id": "U25", "function": "bidir", "safe_bit": "X", "ccell": "3", @@ -49,7 +49,7 @@ { "cell_number": "6", "cell_name": "BC_7", - "port_id": "L6_PAD2", + "port_id": "U26", "function": "bidir", "safe_bit": "X", "ccell": "5", @@ -65,7 +65,7 @@ { "cell_number": "8", "cell_name": "BC_7", - "port_id": "L6_PAD3", + "port_id": "V26", "function": "bidir", "safe_bit": "X", "ccell": "7", @@ -81,7 +81,7 @@ { "cell_number": "10", "cell_name": "BC_7", - "port_id": "L6_PAD4", + "port_id": "W26", "function": "bidir", "safe_bit": "X", "ccell": "9", @@ -97,7 +97,7 @@ { "cell_number": "12", "cell_name": "BC_7", - "port_id": "L6_PAD5", + "port_id": "AB26", "function": "bidir", "safe_bit": "X", "ccell": "11", @@ -113,7 +113,7 @@ { "cell_number": "14", "cell_name": "BC_7", - "port_id": "L6_PAD6", + "port_id": "AC26", "function": "bidir", "safe_bit": "X", "ccell": "13", @@ -129,7 +129,7 @@ { "cell_number": "16", "cell_name": "BC_7", - "port_id": "L6_PAD7", + "port_id": "W25", "function": "bidir", "safe_bit": "X", "ccell": "15", @@ -145,7 +145,7 @@ { "cell_number": "18", "cell_name": "BC_7", - "port_id": "L6_PAD8", + "port_id": "Y26", "function": "bidir", "safe_bit": "X", "ccell": "17", @@ -161,7 +161,7 @@ { "cell_number": "20", "cell_name": "BC_7", - "port_id": "L6_PAD9", + "port_id": "Y25", "function": "bidir", "safe_bit": "X", "ccell": "19", @@ -177,7 +177,7 @@ { "cell_number": "22", "cell_name": "BC_7", - "port_id": "L6_PAD10", + "port_id": "AA25", "function": "bidir", "safe_bit": "X", "ccell": "21", @@ -193,7 +193,7 @@ { "cell_number": "24", "cell_name": "BC_7", - "port_id": "L6_PAD11", + "port_id": "V24", "function": "bidir", "safe_bit": "X", "ccell": "23", @@ -209,7 +209,7 @@ { "cell_number": "26", "cell_name": "BC_7", - "port_id": "L6_PAD12", + "port_id": "W24", "function": "bidir", "safe_bit": "X", "ccell": "25", @@ -225,7 +225,7 @@ { "cell_number": "28", "cell_name": "BC_7", - "port_id": "L6_PAD13", + "port_id": "AA24", "function": "bidir", "safe_bit": "X", "ccell": "27", @@ -241,7 +241,7 @@ { "cell_number": "30", "cell_name": "BC_7", - "port_id": "L6_PAD14", + "port_id": "AB25", "function": "bidir", "safe_bit": "X", "ccell": "29", @@ -257,7 +257,7 @@ { "cell_number": "32", "cell_name": "BC_7", - "port_id": "L6_PAD15", + "port_id": "AA22", "function": "bidir", "safe_bit": "X", "ccell": "31", @@ -273,7 +273,7 @@ { "cell_number": "34", "cell_name": "BC_7", - "port_id": "L6_PAD16", + "port_id": "AA23", "function": "bidir", "safe_bit": "X", "ccell": "33", @@ -289,7 +289,7 @@ { "cell_number": "36", "cell_name": "BC_7", - "port_id": "L6_PAD17", + "port_id": "AB24", "function": "bidir", "safe_bit": "X", "ccell": "35", @@ -305,7 +305,7 @@ { "cell_number": "38", "cell_name": "BC_7", - "port_id": "L6_PAD18", + "port_id": "AC24", "function": "bidir", "safe_bit": "X", "ccell": "37", @@ -321,7 +321,7 @@ { "cell_number": "40", "cell_name": "BC_7", - "port_id": "L6_PAD19", + "port_id": "V23", "function": "bidir", "safe_bit": "X", "ccell": "39", @@ -337,7 +337,7 @@ { "cell_number": "42", "cell_name": "BC_7", - "port_id": "L6_PAD20", + "port_id": "W23", "function": "bidir", "safe_bit": "X", "ccell": "41", @@ -353,7 +353,7 @@ { "cell_number": "44", "cell_name": "BC_7", - "port_id": "L6_PAD21", + "port_id": "Y22", "function": "bidir", "safe_bit": "X", "ccell": "43", @@ -369,7 +369,7 @@ { "cell_number": "46", "cell_name": "BC_7", - "port_id": "L6_PAD22", + "port_id": "Y23", "function": "bidir", "safe_bit": "X", "ccell": "45", @@ -385,7 +385,7 @@ { "cell_number": "48", "cell_name": "BC_7", - "port_id": "L6_PAD23", + "port_id": "U22", "function": "bidir", "safe_bit": "X", "ccell": "47", @@ -401,7 +401,7 @@ { "cell_number": "50", "cell_name": "BC_7", - "port_id": "L6_PAD24", + "port_id": "V22", "function": "bidir", "safe_bit": "X", "ccell": "49", @@ -417,7 +417,7 @@ { "cell_number": "52", "cell_name": "BC_7", - "port_id": "L6_PAD25", + "port_id": "U21", "function": "bidir", "safe_bit": "X", "ccell": "51", @@ -433,7 +433,7 @@ { "cell_number": "54", "cell_name": "BC_7", - "port_id": "L6_PAD26", + "port_id": "V21", "function": "bidir", "safe_bit": "X", "ccell": "53", @@ -449,7 +449,7 @@ { "cell_number": "56", "cell_name": "BC_7", - "port_id": "L6_PAD27", + "port_id": "W21", "function": "bidir", "safe_bit": "X", "ccell": "55", @@ -465,7 +465,7 @@ { "cell_number": "58", "cell_name": "BC_7", - "port_id": "L6_PAD28", + "port_id": "Y21", "function": "bidir", "safe_bit": "X", "ccell": "57", @@ -481,7 +481,7 @@ { "cell_number": "60", "cell_name": "BC_7", - "port_id": "L6_PAD29", + "port_id": "T20", "function": "bidir", "safe_bit": "X", "ccell": "59", @@ -497,7 +497,7 @@ { "cell_number": "62", "cell_name": "BC_7", - "port_id": "L6_PAD30", + "port_id": "U20", "function": "bidir", "safe_bit": "X", "ccell": "61", @@ -513,7 +513,7 @@ { "cell_number": "64", "cell_name": "BC_7", - "port_id": "L6_PAD31", + "port_id": "W20", "function": "bidir", "safe_bit": "X", "ccell": "63", @@ -529,7 +529,7 @@ { "cell_number": "66", "cell_name": "BC_7", - "port_id": "L6_PAD32", + "port_id": "Y20", "function": "bidir", "safe_bit": "X", "ccell": "65", @@ -545,7 +545,7 @@ { "cell_number": "68", "cell_name": "BC_7", - "port_id": "L6_PAD33", + "port_id": "T19", "function": "bidir", "safe_bit": "X", "ccell": "67", @@ -561,7 +561,7 @@ { "cell_number": "70", "cell_name": "BC_7", - "port_id": "L6_PAD34", + "port_id": "U19", "function": "bidir", "safe_bit": "X", "ccell": "69", @@ -577,7 +577,7 @@ { "cell_number": "72", "cell_name": "BC_7", - "port_id": "L6_PAD35", + "port_id": "V19", "function": "bidir", "safe_bit": "X", "ccell": "71", @@ -593,7 +593,7 @@ { "cell_number": "74", "cell_name": "BC_7", - "port_id": "L6_PAD36", + "port_id": "W19", "function": "bidir", "safe_bit": "X", "ccell": "73", @@ -609,7 +609,7 @@ { "cell_number": "76", "cell_name": "BC_7", - "port_id": "L6_PAD37", + "port_id": "V18", "function": "bidir", "safe_bit": "X", "ccell": "75", @@ -625,7 +625,7 @@ { "cell_number": "78", "cell_name": "BC_7", - "port_id": "L6_PAD38", + "port_id": "W18", "function": "bidir", "safe_bit": "X", "ccell": "77", @@ -641,7 +641,7 @@ { "cell_number": "80", "cell_name": "BC_7", - "port_id": "L6_PAD39", + "port_id": "T14", "function": "bidir", "safe_bit": "X", "ccell": "79", @@ -657,7 +657,7 @@ { "cell_number": "82", "cell_name": "BC_7", - "port_id": "L6_PAD40", + "port_id": "T15", "function": "bidir", "safe_bit": "X", "ccell": "81", @@ -673,7 +673,7 @@ { "cell_number": "84", "cell_name": "BC_7", - "port_id": "L6_PAD41", + "port_id": "T17", "function": "bidir", "safe_bit": "X", "ccell": "83", @@ -689,7 +689,7 @@ { "cell_number": "86", "cell_name": "BC_7", - "port_id": "L6_PAD42", + "port_id": "T18", "function": "bidir", "safe_bit": "X", "ccell": "85", @@ -705,7 +705,7 @@ { "cell_number": "88", "cell_name": "BC_7", - "port_id": "L6_PAD43", + "port_id": "U15", "function": "bidir", "safe_bit": "X", "ccell": "87", @@ -721,7 +721,7 @@ { "cell_number": "90", "cell_name": "BC_7", - "port_id": "L6_PAD44", + "port_id": "U16", "function": "bidir", "safe_bit": "X", "ccell": "89", @@ -737,7 +737,7 @@ { "cell_number": "92", "cell_name": "BC_7", - "port_id": "L6_PAD45", + "port_id": "U14", "function": "bidir", "safe_bit": "X", "ccell": "91", @@ -753,7 +753,7 @@ { "cell_number": "94", "cell_name": "BC_7", - "port_id": "L6_PAD46", + "port_id": "V14", "function": "bidir", "safe_bit": "X", "ccell": "93", @@ -769,7 +769,7 @@ { "cell_number": "96", "cell_name": "BC_7", - "port_id": "L6_PAD47", + "port_id": "V16", "function": "bidir", "safe_bit": "X", "ccell": "95", @@ -785,7 +785,7 @@ { "cell_number": "98", "cell_name": "BC_7", - "port_id": "L6_PAD48", + "port_id": "V17", "function": "bidir", "safe_bit": "X", "ccell": "97", @@ -801,7 +801,7 @@ { "cell_number": "100", "cell_name": "BC_7", - "port_id": "L6_PAD49", + "port_id": "U17", "function": "bidir", "safe_bit": "X", "ccell": "99", @@ -811,112 +811,112 @@ { "cell_number": "101", "cell_name": "BC_4", - "port_id": "HSSTREFCLK1N_QR6", + "port_id": "AB13", "function": "OBSERVE_ONLY", "safe_bit": "X" }, { "cell_number": "102", "cell_name": "BC_4", - "port_id": "HSSTREFCLK1P_QR6", + "port_id": "AA13", "function": "OBSERVE_ONLY", "safe_bit": "X" }, { "cell_number": "103", "cell_name": "BC_4", - "port_id": "HSSTRX3N_QR6", + "port_id": "AD12", "function": "OBSERVE_ONLY", "safe_bit": "X" }, { "cell_number": "104", "cell_name": "BC_4", - "port_id": "HSSTRX3P_QR6", + "port_id": "AC12", "function": "OBSERVE_ONLY", "safe_bit": "X" }, { "cell_number": "105", "cell_name": "AC_1", - "port_id": "HSSTTX3P_QR6", + "port_id": "AC10", "function": "output2", "safe_bit": "X" }, { "cell_number": "106", "cell_name": "BC_4", - "port_id": "HSSTRX2N_QR6", + "port_id": "AF13", "function": "OBSERVE_ONLY", "safe_bit": "X" }, { "cell_number": "107", "cell_name": "BC_4", - "port_id": "HSSTRX2P_QR6", + "port_id": "AE13", "function": "OBSERVE_ONLY", "safe_bit": "X" }, { "cell_number": "108", "cell_name": "AC_1", - "port_id": "HSSTTX2P_QR6", + "port_id": "AE9", "function": "output2", "safe_bit": "X" }, { "cell_number": "109", "cell_name": "BC_4", - "port_id": "HSSTREFCLK0N_QR6", + "port_id": "AB11", "function": "OBSERVE_ONLY", "safe_bit": "X" }, { "cell_number": "110", "cell_name": "BC_4", - "port_id": "HSSTREFCLK0P_QR6", + "port_id": "AA11", "function": "OBSERVE_ONLY", "safe_bit": "X" }, { "cell_number": "111", "cell_name": "BC_4", - "port_id": "HSSTRX1N_QR6", + "port_id": "AD14", "function": "OBSERVE_ONLY", "safe_bit": "X" }, { "cell_number": "112", "cell_name": "BC_4", - "port_id": "HSSTRX1P_QR6", + "port_id": "AC14", "function": "OBSERVE_ONLY", "safe_bit": "X" }, { "cell_number": "113", "cell_name": "AC_1", - "port_id": "HSSTTX1P_QR6", + "port_id": "AC8", "function": "output2", "safe_bit": "X" }, { "cell_number": "114", "cell_name": "BC_4", - "port_id": "HSSTRX0N_QR6", + "port_id": "AF11", "function": "OBSERVE_ONLY", "safe_bit": "X" }, { "cell_number": "115", "cell_name": "BC_4", - "port_id": "HSSTRX0P_QR6", + "port_id": "AE11", "function": "OBSERVE_ONLY", "safe_bit": "X" }, { "cell_number": "116", "cell_name": "AC_1", - "port_id": "HSSTTX0P_QR6", + "port_id": "AE7", "function": "output2", "safe_bit": "X" }, @@ -935,7 +935,7 @@ { "cell_number": "119", "cell_name": "BC_7", - "port_id": "R5_PAD49", + "port_id": "U4", "function": "bidir", "safe_bit": "X", "ccell": "118", @@ -951,7 +951,7 @@ { "cell_number": "121", "cell_name": "BC_7", - "port_id": "R5_PAD48", + "port_id": "T7", "function": "bidir", "safe_bit": "X", "ccell": "120", @@ -967,7 +967,7 @@ { "cell_number": "123", "cell_name": "BC_7", - "port_id": "R5_PAD47", + "port_id": "T8", "function": "bidir", "safe_bit": "X", "ccell": "122", @@ -983,7 +983,7 @@ { "cell_number": "125", "cell_name": "BC_7", - "port_id": "R5_PAD46", + "port_id": "R6", "function": "bidir", "safe_bit": "X", "ccell": "124", @@ -999,7 +999,7 @@ { "cell_number": "127", "cell_name": "BC_7", - "port_id": "R5_PAD45", + "port_id": "R7", "function": "bidir", "safe_bit": "X", "ccell": "126", @@ -1015,7 +1015,7 @@ { "cell_number": "129", "cell_name": "BC_7", - "port_id": "R5_PAD44", + "port_id": "P8", "function": "bidir", "safe_bit": "X", "ccell": "128", @@ -1031,7 +1031,7 @@ { "cell_number": "131", "cell_name": "BC_7", - "port_id": "R5_PAD43", + "port_id": "R8", "function": "bidir", "safe_bit": "X", "ccell": "130", @@ -1047,7 +1047,7 @@ { "cell_number": "133", "cell_name": "BC_7", - "port_id": "R5_PAD42", + "port_id": "U5", "function": "bidir", "safe_bit": "X", "ccell": "132", @@ -1063,7 +1063,7 @@ { "cell_number": "135", "cell_name": "BC_7", - "port_id": "R5_PAD41", + "port_id": "U6", "function": "bidir", "safe_bit": "X", "ccell": "134", @@ -1079,7 +1079,7 @@ { "cell_number": "137", "cell_name": "BC_7", - "port_id": "R5_PAD40", + "port_id": "R5", "function": "bidir", "safe_bit": "X", "ccell": "136", @@ -1095,7 +1095,7 @@ { "cell_number": "139", "cell_name": "BC_7", - "port_id": "R5_PAD39", + "port_id": "T5", "function": "bidir", "safe_bit": "X", "ccell": "138", @@ -1111,7 +1111,7 @@ { "cell_number": "141", "cell_name": "BC_7", - "port_id": "R5_PAD38", + "port_id": "P5", "function": "bidir", "safe_bit": "X", "ccell": "140", @@ -1127,7 +1127,7 @@ { "cell_number": "143", "cell_name": "BC_7", - "port_id": "R5_PAD37", + "port_id": "P6", "function": "bidir", "safe_bit": "X", "ccell": "142", @@ -1143,7 +1143,7 @@ { "cell_number": "145", "cell_name": "BC_7", - "port_id": "R5_PAD36", + "port_id": "U1", "function": "bidir", "safe_bit": "X", "ccell": "144", @@ -1159,7 +1159,7 @@ { "cell_number": "147", "cell_name": "BC_7", - "port_id": "R5_PAD35", + "port_id": "U2", "function": "bidir", "safe_bit": "X", "ccell": "146", @@ -1175,7 +1175,7 @@ { "cell_number": "149", "cell_name": "BC_7", - "port_id": "R5_PAD34", + "port_id": "R2", "function": "bidir", "safe_bit": "X", "ccell": "148", @@ -1191,7 +1191,7 @@ { "cell_number": "151", "cell_name": "BC_7", - "port_id": "R5_PAD33", + "port_id": "T2", "function": "bidir", "safe_bit": "X", "ccell": "150", @@ -1207,7 +1207,7 @@ { "cell_number": "153", "cell_name": "BC_7", - "port_id": "R5_PAD32", + "port_id": "T3", "function": "bidir", "safe_bit": "X", "ccell": "152", @@ -1223,7 +1223,7 @@ { "cell_number": "155", "cell_name": "BC_7", - "port_id": "R5_PAD31", + "port_id": "T4", "function": "bidir", "safe_bit": "X", "ccell": "154", @@ -1239,7 +1239,7 @@ { "cell_number": "157", "cell_name": "BC_7", - "port_id": "R5_PAD30", + "port_id": "P1", "function": "bidir", "safe_bit": "X", "ccell": "156", @@ -1255,7 +1255,7 @@ { "cell_number": "159", "cell_name": "BC_7", - "port_id": "R5_PAD29", + "port_id": "R1", "function": "bidir", "safe_bit": "X", "ccell": "158", @@ -1271,7 +1271,7 @@ { "cell_number": "161", "cell_name": "BC_7", - "port_id": "R5_PAD28", + "port_id": "N4", "function": "bidir", "safe_bit": "X", "ccell": "160", @@ -1287,7 +1287,7 @@ { "cell_number": "163", "cell_name": "BC_7", - "port_id": "R5_PAD27", + "port_id": "P4", "function": "bidir", "safe_bit": "X", "ccell": "162", @@ -1303,7 +1303,7 @@ { "cell_number": "165", "cell_name": "BC_7", - "port_id": "R5_PAD26", + "port_id": "P3", "function": "bidir", "safe_bit": "X", "ccell": "164", @@ -1319,7 +1319,7 @@ { "cell_number": "167", "cell_name": "BC_7", - "port_id": "R5_PAD25", + "port_id": "R3", "function": "bidir", "safe_bit": "X", "ccell": "166", @@ -1335,7 +1335,7 @@ { "cell_number": "169", "cell_name": "BC_7", - "port_id": "R5_PAD24", + "port_id": "N2", "function": "bidir", "safe_bit": "X", "ccell": "168", @@ -1351,7 +1351,7 @@ { "cell_number": "171", "cell_name": "BC_7", - "port_id": "R5_PAD23", + "port_id": "N3", "function": "bidir", "safe_bit": "X", "ccell": "170", @@ -1367,7 +1367,7 @@ { "cell_number": "173", "cell_name": "BC_7", - "port_id": "R5_PAD22", + "port_id": "L2", "function": "bidir", "safe_bit": "X", "ccell": "172", @@ -1383,7 +1383,7 @@ { "cell_number": "175", "cell_name": "BC_7", - "port_id": "R5_PAD21", + "port_id": "M2", "function": "bidir", "safe_bit": "X", "ccell": "174", @@ -1399,7 +1399,7 @@ { "cell_number": "177", "cell_name": "BC_7", - "port_id": "R5_PAD20", + "port_id": "H1", "function": "bidir", "safe_bit": "X", "ccell": "176", @@ -1415,7 +1415,7 @@ { "cell_number": "179", "cell_name": "BC_7", - "port_id": "R5_PAD19", + "port_id": "H2", "function": "bidir", "safe_bit": "X", "ccell": "178", @@ -1431,7 +1431,7 @@ { "cell_number": "181", "cell_name": "BC_7", - "port_id": "R5_PAD18", + "port_id": "M1", "function": "bidir", "safe_bit": "X", "ccell": "180", @@ -1447,7 +1447,7 @@ { "cell_number": "183", "cell_name": "BC_7", - "port_id": "R5_PAD17", + "port_id": "N1", "function": "bidir", "safe_bit": "X", "ccell": "182", @@ -1463,7 +1463,7 @@ { "cell_number": "185", "cell_name": "BC_7", - "port_id": "R5_PAD16", + "port_id": "K2", "function": "bidir", "safe_bit": "X", "ccell": "184", @@ -1479,7 +1479,7 @@ { "cell_number": "187", "cell_name": "BC_7", - "port_id": "R5_PAD15", + "port_id": "L3", "function": "bidir", "safe_bit": "X", "ccell": "186", @@ -1495,7 +1495,7 @@ { "cell_number": "189", "cell_name": "BC_7", - "port_id": "R5_PAD14", + "port_id": "J1", "function": "bidir", "safe_bit": "X", "ccell": "188", @@ -1511,7 +1511,7 @@ { "cell_number": "191", "cell_name": "BC_7", - "port_id": "R5_PAD13", + "port_id": "K1", "function": "bidir", "safe_bit": "X", "ccell": "190", @@ -1527,7 +1527,7 @@ { "cell_number": "193", "cell_name": "BC_7", - "port_id": "R5_PAD12", + "port_id": "M5", "function": "bidir", "safe_bit": "X", "ccell": "192", @@ -1543,7 +1543,7 @@ { "cell_number": "195", "cell_name": "BC_7", - "port_id": "R5_PAD11", + "port_id": "M6", "function": "bidir", "safe_bit": "X", "ccell": "194", @@ -1559,7 +1559,7 @@ { "cell_number": "197", "cell_name": "BC_7", - "port_id": "R5_PAD10", + "port_id": "N6", "function": "bidir", "safe_bit": "X", "ccell": "196", @@ -1575,7 +1575,7 @@ { "cell_number": "199", "cell_name": "BC_7", - "port_id": "R5_PAD9", + "port_id": "N7", "function": "bidir", "safe_bit": "X", "ccell": "198", @@ -1591,7 +1591,7 @@ { "cell_number": "201", "cell_name": "BC_7", - "port_id": "R5_PAD8", + "port_id": "K5", "function": "bidir", "safe_bit": "X", "ccell": "200", @@ -1607,7 +1607,7 @@ { "cell_number": "203", "cell_name": "BC_7", - "port_id": "R5_PAD7", + "port_id": "L5", "function": "bidir", "safe_bit": "X", "ccell": "202", @@ -1623,7 +1623,7 @@ { "cell_number": "205", "cell_name": "BC_7", - "port_id": "R5_PAD6", + "port_id": "L4", "function": "bidir", "safe_bit": "X", "ccell": "204", @@ -1639,7 +1639,7 @@ { "cell_number": "207", "cell_name": "BC_7", - "port_id": "R5_PAD5", + "port_id": "M4", "function": "bidir", "safe_bit": "X", "ccell": "206", @@ -1655,7 +1655,7 @@ { "cell_number": "209", "cell_name": "BC_7", - "port_id": "R5_PAD4", + "port_id": "L7", "function": "bidir", "safe_bit": "X", "ccell": "208", @@ -1671,7 +1671,7 @@ { "cell_number": "211", "cell_name": "BC_7", - "port_id": "R5_PAD3", + "port_id": "M7", "function": "bidir", "safe_bit": "X", "ccell": "210", @@ -1687,7 +1687,7 @@ { "cell_number": "213", "cell_name": "BC_7", - "port_id": "R5_PAD2", + "port_id": "J3", "function": "bidir", "safe_bit": "X", "ccell": "212", @@ -1703,7 +1703,7 @@ { "cell_number": "215", "cell_name": "BC_7", - "port_id": "R5_PAD1", + "port_id": "K3", "function": "bidir", "safe_bit": "X", "ccell": "214", @@ -1719,7 +1719,7 @@ { "cell_number": "217", "cell_name": "BC_7", - "port_id": "R5_PAD0", + "port_id": "N8", "function": "bidir", "safe_bit": "X", "ccell": "216", @@ -1735,7 +1735,7 @@ { "cell_number": "219", "cell_name": "BC_7", - "port_id": "R4_PAD49", + "port_id": "H3", "function": "bidir", "safe_bit": "X", "ccell": "218", @@ -1751,7 +1751,7 @@ { "cell_number": "221", "cell_name": "BC_7", - "port_id": "R4_PAD48", + "port_id": "G1", "function": "bidir", "safe_bit": "X", "ccell": "220", @@ -1767,7 +1767,7 @@ { "cell_number": "223", "cell_name": "BC_7", - "port_id": "R4_PAD47", + "port_id": "G2", "function": "bidir", "safe_bit": "X", "ccell": "222", @@ -1783,7 +1783,7 @@ { "cell_number": "225", "cell_name": "BC_7", - "port_id": "R4_PAD46", + "port_id": "D1", "function": "bidir", "safe_bit": "X", "ccell": "224", @@ -1799,7 +1799,7 @@ { "cell_number": "227", "cell_name": "BC_7", - "port_id": "R4_PAD45", + "port_id": "E1", "function": "bidir", "safe_bit": "X", "ccell": "226", @@ -1815,7 +1815,7 @@ { "cell_number": "229", "cell_name": "BC_7", - "port_id": "R4_PAD44", + "port_id": "E2", "function": "bidir", "safe_bit": "X", "ccell": "228", @@ -1831,7 +1831,7 @@ { "cell_number": "231", "cell_name": "BC_7", - "port_id": "R4_PAD43", + "port_id": "F2", "function": "bidir", "safe_bit": "X", "ccell": "230", @@ -1847,7 +1847,7 @@ { "cell_number": "233", "cell_name": "BC_7", - "port_id": "R4_PAD42", + "port_id": "B1", "function": "bidir", "safe_bit": "X", "ccell": "232", @@ -1863,7 +1863,7 @@ { "cell_number": "235", "cell_name": "BC_7", - "port_id": "R4_PAD41", + "port_id": "C1", "function": "bidir", "safe_bit": "X", "ccell": "234", @@ -1879,7 +1879,7 @@ { "cell_number": "237", "cell_name": "BC_7", - "port_id": "R4_PAD40", + "port_id": "A2", "function": "bidir", "safe_bit": "X", "ccell": "236", @@ -1895,7 +1895,7 @@ { "cell_number": "239", "cell_name": "BC_7", - "port_id": "R4_PAD39", + "port_id": "A3", "function": "bidir", "safe_bit": "X", "ccell": "238", @@ -1911,7 +1911,7 @@ { "cell_number": "241", "cell_name": "BC_7", - "port_id": "R4_PAD38", + "port_id": "B2", "function": "bidir", "safe_bit": "X", "ccell": "240", @@ -1927,7 +1927,7 @@ { "cell_number": "243", "cell_name": "BC_7", - "port_id": "R4_PAD37", + "port_id": "C2", "function": "bidir", "safe_bit": "X", "ccell": "242", @@ -1943,7 +1943,7 @@ { "cell_number": "245", "cell_name": "BC_7", - "port_id": "R4_PAD36", + "port_id": "E3", "function": "bidir", "safe_bit": "X", "ccell": "244", @@ -1959,7 +1959,7 @@ { "cell_number": "247", "cell_name": "BC_7", - "port_id": "R4_PAD35", + "port_id": "F3", "function": "bidir", "safe_bit": "X", "ccell": "246", @@ -1975,7 +1975,7 @@ { "cell_number": "249", "cell_name": "BC_7", - "port_id": "R4_PAD34", + "port_id": "C3", "function": "bidir", "safe_bit": "X", "ccell": "248", @@ -1991,7 +1991,7 @@ { "cell_number": "251", "cell_name": "BC_7", - "port_id": "R4_PAD33", + "port_id": "D3", "function": "bidir", "safe_bit": "X", "ccell": "250", @@ -2007,7 +2007,7 @@ { "cell_number": "253", "cell_name": "BC_7", - "port_id": "R4_PAD32", + "port_id": "A4", "function": "bidir", "safe_bit": "X", "ccell": "252", @@ -2023,7 +2023,7 @@ { "cell_number": "255", "cell_name": "BC_7", - "port_id": "R4_PAD31", + "port_id": "B4", "function": "bidir", "safe_bit": "X", "ccell": "254", @@ -2039,7 +2039,7 @@ { "cell_number": "257", "cell_name": "BC_7", - "port_id": "R4_PAD30", + "port_id": "A5", "function": "bidir", "safe_bit": "X", "ccell": "256", @@ -2055,7 +2055,7 @@ { "cell_number": "259", "cell_name": "BC_7", - "port_id": "R4_PAD29", + "port_id": "B5", "function": "bidir", "safe_bit": "X", "ccell": "258", @@ -2071,7 +2071,7 @@ { "cell_number": "261", "cell_name": "BC_7", - "port_id": "R4_PAD28", + "port_id": "C4", "function": "bidir", "safe_bit": "X", "ccell": "260", @@ -2087,7 +2087,7 @@ { "cell_number": "263", "cell_name": "BC_7", - "port_id": "R4_PAD27", + "port_id": "D4", "function": "bidir", "safe_bit": "X", "ccell": "262", @@ -2103,7 +2103,7 @@ { "cell_number": "265", "cell_name": "BC_7", - "port_id": "R4_PAD26", + "port_id": "D5", "function": "bidir", "safe_bit": "X", "ccell": "264", @@ -2119,7 +2119,7 @@ { "cell_number": "267", "cell_name": "BC_7", - "port_id": "R4_PAD25", + "port_id": "E5", "function": "bidir", "safe_bit": "X", "ccell": "266", @@ -2135,7 +2135,7 @@ { "cell_number": "269", "cell_name": "BC_7", - "port_id": "R4_PAD24", + "port_id": "F5", "function": "bidir", "safe_bit": "X", "ccell": "268", @@ -2151,7 +2151,7 @@ { "cell_number": "271", "cell_name": "BC_7", - "port_id": "R4_PAD23", + "port_id": "G5", "function": "bidir", "safe_bit": "X", "ccell": "270", @@ -2167,7 +2167,7 @@ { "cell_number": "273", "cell_name": "BC_7", - "port_id": "R4_PAD22", + "port_id": "F4", "function": "bidir", "safe_bit": "X", "ccell": "272", @@ -2183,7 +2183,7 @@ { "cell_number": "275", "cell_name": "BC_7", - "port_id": "R4_PAD21", + "port_id": "G4", "function": "bidir", "safe_bit": "X", "ccell": "274", @@ -2199,7 +2199,7 @@ { "cell_number": "277", "cell_name": "BC_7", - "port_id": "R4_PAD20", + "port_id": "K6", "function": "bidir", "safe_bit": "X", "ccell": "276", @@ -2215,7 +2215,7 @@ { "cell_number": "279", "cell_name": "BC_7", - "port_id": "R4_PAD19", + "port_id": "K7", "function": "bidir", "safe_bit": "X", "ccell": "278", @@ -2231,7 +2231,7 @@ { "cell_number": "281", "cell_name": "BC_7", - "port_id": "R4_PAD18", + "port_id": "H4", "function": "bidir", "safe_bit": "X", "ccell": "280", @@ -2247,7 +2247,7 @@ { "cell_number": "283", "cell_name": "BC_7", - "port_id": "R4_PAD17", + "port_id": "J4", "function": "bidir", "safe_bit": "X", "ccell": "282", @@ -2263,7 +2263,7 @@ { "cell_number": "285", "cell_name": "BC_7", - "port_id": "R4_PAD16", + "port_id": "K8", "function": "bidir", "safe_bit": "X", "ccell": "284", @@ -2279,7 +2279,7 @@ { "cell_number": "287", "cell_name": "BC_7", - "port_id": "R4_PAD15", + "port_id": "L8", "function": "bidir", "safe_bit": "X", "ccell": "286", @@ -2295,7 +2295,7 @@ { "cell_number": "289", "cell_name": "BC_7", - "port_id": "R4_PAD14", + "port_id": "J5", "function": "bidir", "safe_bit": "X", "ccell": "288", @@ -2311,7 +2311,7 @@ { "cell_number": "291", "cell_name": "BC_7", - "port_id": "R4_PAD13", + "port_id": "J6", "function": "bidir", "safe_bit": "X", "ccell": "290", @@ -2327,7 +2327,7 @@ { "cell_number": "293", "cell_name": "BC_7", - "port_id": "R4_PAD12", + "port_id": "G9", "function": "bidir", "safe_bit": "X", "ccell": "292", @@ -2343,7 +2343,7 @@ { "cell_number": "295", "cell_name": "BC_7", - "port_id": "R4_PAD11", + "port_id": "H9", "function": "bidir", "safe_bit": "X", "ccell": "294", @@ -2359,7 +2359,7 @@ { "cell_number": "297", "cell_name": "BC_7", - "port_id": "R4_PAD10", + "port_id": "G6", "function": "bidir", "safe_bit": "X", "ccell": "296", @@ -2375,7 +2375,7 @@ { "cell_number": "299", "cell_name": "BC_7", - "port_id": "R4_PAD9", + "port_id": "H6", "function": "bidir", "safe_bit": "X", "ccell": "298", @@ -2391,7 +2391,7 @@ { "cell_number": "301", "cell_name": "BC_7", - "port_id": "R4_PAD8", + "port_id": "F7", "function": "bidir", "safe_bit": "X", "ccell": "300", @@ -2407,7 +2407,7 @@ { "cell_number": "303", "cell_name": "BC_7", - "port_id": "R4_PAD7", + "port_id": "F8", "function": "bidir", "safe_bit": "X", "ccell": "302", @@ -2423,7 +2423,7 @@ { "cell_number": "305", "cell_name": "BC_7", - "port_id": "R4_PAD6", + "port_id": "G7", "function": "bidir", "safe_bit": "X", "ccell": "304", @@ -2439,7 +2439,7 @@ { "cell_number": "307", "cell_name": "BC_7", - "port_id": "R4_PAD5", + "port_id": "H7", "function": "bidir", "safe_bit": "X", "ccell": "306", @@ -2455,7 +2455,7 @@ { "cell_number": "309", "cell_name": "BC_7", - "port_id": "R4_PAD4", + "port_id": "G8", "function": "bidir", "safe_bit": "X", "ccell": "308", @@ -2471,7 +2471,7 @@ { "cell_number": "311", "cell_name": "BC_7", - "port_id": "R4_PAD3", + "port_id": "H8", "function": "bidir", "safe_bit": "X", "ccell": "310", @@ -2487,7 +2487,7 @@ { "cell_number": "313", "cell_name": "BC_7", - "port_id": "R4_PAD2", + "port_id": "D6", "function": "bidir", "safe_bit": "X", "ccell": "312", @@ -2503,7 +2503,7 @@ { "cell_number": "315", "cell_name": "BC_7", - "port_id": "R4_PAD1", + "port_id": "E6", "function": "bidir", "safe_bit": "X", "ccell": "314", @@ -2519,7 +2519,7 @@ { "cell_number": "317", "cell_name": "BC_7", - "port_id": "R4_PAD0", + "port_id": "J8", "function": "bidir", "safe_bit": "X", "ccell": "316", @@ -2529,112 +2529,112 @@ { "cell_number": "318", "cell_name": "BC_4", - "port_id": "HSSTREFCLK1N_QR3", + "port_id": "E11", "function": "OBSERVE_ONLY", "safe_bit": "X" }, { "cell_number": "319", "cell_name": "BC_4", - "port_id": "HSSTREFCLK1P_QR3", + "port_id": "F11", "function": "OBSERVE_ONLY", "safe_bit": "X" }, { "cell_number": "320", "cell_name": "BC_4", - "port_id": "HSSTRX3N_QR3", + "port_id": "A11", "function": "OBSERVE_ONLY", "safe_bit": "X" }, { "cell_number": "321", "cell_name": "BC_4", - "port_id": "HSSTRX3P_QR3", + "port_id": "B11", "function": "OBSERVE_ONLY", "safe_bit": "X" }, { "cell_number": "322", "cell_name": "AC_1", - "port_id": "HSSTTX3P_QR3", + "port_id": "B7", "function": "output2", "safe_bit": "X" }, { "cell_number": "323", "cell_name": "BC_4", - "port_id": "HSSTRX2N_QR3", + "port_id": "C14", "function": "OBSERVE_ONLY", "safe_bit": "X" }, { "cell_number": "324", "cell_name": "BC_4", - "port_id": "HSSTRX2P_QR3", + "port_id": "D14", "function": "OBSERVE_ONLY", "safe_bit": "X" }, { "cell_number": "325", "cell_name": "AC_1", - "port_id": "HSSTTX2P_QR3", + "port_id": "D8", "function": "output2", "safe_bit": "X" }, { "cell_number": "326", "cell_name": "BC_4", - "port_id": "HSSTREFCLK0N_QR3", + "port_id": "E13", "function": "OBSERVE_ONLY", "safe_bit": "X" }, { "cell_number": "327", "cell_name": "BC_4", - "port_id": "HSSTREFCLK0P_QR3", + "port_id": "F13", "function": "OBSERVE_ONLY", "safe_bit": "X" }, { "cell_number": "328", "cell_name": "BC_4", - "port_id": "HSSTRX1N_QR3", + "port_id": "A13", "function": "OBSERVE_ONLY", "safe_bit": "X" }, { "cell_number": "329", "cell_name": "BC_4", - "port_id": "HSSTRX1P_QR3", + "port_id": "B13", "function": "OBSERVE_ONLY", "safe_bit": "X" }, { "cell_number": "330", "cell_name": "AC_1", - "port_id": "HSSTTX1P_QR3", + "port_id": "B9", "function": "output2", "safe_bit": "X" }, { "cell_number": "331", "cell_name": "BC_4", - "port_id": "HSSTRX0N_QR3", + "port_id": "C12", "function": "OBSERVE_ONLY", "safe_bit": "X" }, { "cell_number": "332", "cell_name": "BC_4", - "port_id": "HSSTRX0P_QR3", + "port_id": "D12", "function": "OBSERVE_ONLY", "safe_bit": "X" }, { "cell_number": "333", "cell_name": "AC_1", - "port_id": "HSSTTX0P_QR3", + "port_id": "D10", "function": "output2", "safe_bit": "X" }, @@ -2653,7 +2653,7 @@ { "cell_number": "336", "cell_name": "BC_7", - "port_id": "L3_PAD0", + "port_id": "H17", "function": "bidir", "safe_bit": "X", "ccell": "335", @@ -2669,7 +2669,7 @@ { "cell_number": "338", "cell_name": "BC_7", - "port_id": "L3_PAD1", + "port_id": "H14", "function": "bidir", "safe_bit": "X", "ccell": "337", @@ -2685,7 +2685,7 @@ { "cell_number": "340", "cell_name": "BC_7", - "port_id": "L3_PAD2", + "port_id": "H15", "function": "bidir", "safe_bit": "X", "ccell": "339", @@ -2701,7 +2701,7 @@ { "cell_number": "342", "cell_name": "BC_7", - "port_id": "L3_PAD3", + "port_id": "G17", "function": "bidir", "safe_bit": "X", "ccell": "341", @@ -2717,7 +2717,7 @@ { "cell_number": "344", "cell_name": "BC_7", - "port_id": "L3_PAD4", + "port_id": "F17", "function": "bidir", "safe_bit": "X", "ccell": "343", @@ -2733,7 +2733,7 @@ { "cell_number": "346", "cell_name": "BC_7", - "port_id": "L3_PAD5", + "port_id": "F18", "function": "bidir", "safe_bit": "X", "ccell": "345", @@ -2749,7 +2749,7 @@ { "cell_number": "348", "cell_name": "BC_7", - "port_id": "L3_PAD6", + "port_id": "F19", "function": "bidir", "safe_bit": "X", "ccell": "347", @@ -2765,7 +2765,7 @@ { "cell_number": "350", "cell_name": "BC_7", - "port_id": "L3_PAD7", + "port_id": "G15", "function": "bidir", "safe_bit": "X", "ccell": "349", @@ -2781,7 +2781,7 @@ { "cell_number": "352", "cell_name": "BC_7", - "port_id": "L3_PAD8", + "port_id": "F15", "function": "bidir", "safe_bit": "X", "ccell": "351", @@ -2797,7 +2797,7 @@ { "cell_number": "354", "cell_name": "BC_7", - "port_id": "L3_PAD9", + "port_id": "G19", "function": "bidir", "safe_bit": "X", "ccell": "353", @@ -2813,7 +2813,7 @@ { "cell_number": "356", "cell_name": "BC_7", - "port_id": "L3_PAD10", + "port_id": "F20", "function": "bidir", "safe_bit": "X", "ccell": "355", @@ -2829,7 +2829,7 @@ { "cell_number": "358", "cell_name": "BC_7", - "port_id": "L3_PAD11", + "port_id": "H16", "function": "bidir", "safe_bit": "X", "ccell": "357", @@ -2845,7 +2845,7 @@ { "cell_number": "360", "cell_name": "BC_7", - "port_id": "L3_PAD12", + "port_id": "G16", "function": "bidir", "safe_bit": "X", "ccell": "359", @@ -2861,7 +2861,7 @@ { "cell_number": "362", "cell_name": "BC_7", - "port_id": "L3_PAD13", + "port_id": "C17", "function": "bidir", "safe_bit": "X", "ccell": "361", @@ -2877,7 +2877,7 @@ { "cell_number": "364", "cell_name": "BC_7", - "port_id": "L3_PAD14", + "port_id": "B17", "function": "bidir", "safe_bit": "X", "ccell": "363", @@ -2893,7 +2893,7 @@ { "cell_number": "366", "cell_name": "BC_7", - "port_id": "L3_PAD15", + "port_id": "E16", "function": "bidir", "safe_bit": "X", "ccell": "365", @@ -2909,7 +2909,7 @@ { "cell_number": "368", "cell_name": "BC_7", - "port_id": "L3_PAD16", + "port_id": "D16", "function": "bidir", "safe_bit": "X", "ccell": "367", @@ -2925,7 +2925,7 @@ { "cell_number": "370", "cell_name": "BC_7", - "port_id": "L3_PAD17", + "port_id": "A17", "function": "bidir", "safe_bit": "X", "ccell": "369", @@ -2941,7 +2941,7 @@ { "cell_number": "372", "cell_name": "BC_7", - "port_id": "L3_PAD18", + "port_id": "A18", "function": "bidir", "safe_bit": "X", "ccell": "371", @@ -2957,7 +2957,7 @@ { "cell_number": "374", "cell_name": "BC_7", - "port_id": "L3_PAD19", + "port_id": "B19", "function": "bidir", "safe_bit": "X", "ccell": "373", @@ -2973,7 +2973,7 @@ { "cell_number": "376", "cell_name": "BC_7", - "port_id": "L3_PAD20", + "port_id": "A19", "function": "bidir", "safe_bit": "X", "ccell": "375", @@ -2989,7 +2989,7 @@ { "cell_number": "378", "cell_name": "BC_7", - "port_id": "L3_PAD21", + "port_id": "E17", "function": "bidir", "safe_bit": "X", "ccell": "377", @@ -3005,7 +3005,7 @@ { "cell_number": "380", "cell_name": "BC_7", - "port_id": "L3_PAD22", + "port_id": "E18", "function": "bidir", "safe_bit": "X", "ccell": "379", @@ -3021,7 +3021,7 @@ { "cell_number": "382", "cell_name": "BC_7", - "port_id": "L3_PAD23", + "port_id": "D18", "function": "bidir", "safe_bit": "X", "ccell": "381", @@ -3037,7 +3037,7 @@ { "cell_number": "384", "cell_name": "BC_7", - "port_id": "L3_PAD24", + "port_id": "C18", "function": "bidir", "safe_bit": "X", "ccell": "383", @@ -3053,7 +3053,7 @@ { "cell_number": "386", "cell_name": "BC_7", - "port_id": "L3_PAD25", + "port_id": "D19", "function": "bidir", "safe_bit": "X", "ccell": "385", @@ -3069,7 +3069,7 @@ { "cell_number": "388", "cell_name": "BC_7", - "port_id": "L3_PAD26", + "port_id": "C19", "function": "bidir", "safe_bit": "X", "ccell": "387", @@ -3085,7 +3085,7 @@ { "cell_number": "390", "cell_name": "BC_7", - "port_id": "L3_PAD27", + "port_id": "E20", "function": "bidir", "safe_bit": "X", "ccell": "389", @@ -3101,7 +3101,7 @@ { "cell_number": "392", "cell_name": "BC_7", - "port_id": "L3_PAD28", + "port_id": "D20", "function": "bidir", "safe_bit": "X", "ccell": "391", @@ -3117,7 +3117,7 @@ { "cell_number": "394", "cell_name": "BC_7", - "port_id": "L3_PAD29", + "port_id": "B20", "function": "bidir", "safe_bit": "X", "ccell": "393", @@ -3133,7 +3133,7 @@ { "cell_number": "396", "cell_name": "BC_7", - "port_id": "L3_PAD30", + "port_id": "A20", "function": "bidir", "safe_bit": "X", "ccell": "395", @@ -3149,7 +3149,7 @@ { "cell_number": "398", "cell_name": "BC_7", - "port_id": "L3_PAD31", + "port_id": "C21", "function": "bidir", "safe_bit": "X", "ccell": "397", @@ -3165,7 +3165,7 @@ { "cell_number": "400", "cell_name": "BC_7", - "port_id": "L3_PAD32", + "port_id": "B21", "function": "bidir", "safe_bit": "X", "ccell": "399", @@ -3181,7 +3181,7 @@ { "cell_number": "402", "cell_name": "BC_7", - "port_id": "L3_PAD33", + "port_id": "B22", "function": "bidir", "safe_bit": "X", "ccell": "401", @@ -3197,7 +3197,7 @@ { "cell_number": "404", "cell_name": "BC_7", - "port_id": "L3_PAD34", + "port_id": "A22", "function": "bidir", "safe_bit": "X", "ccell": "403", @@ -3213,7 +3213,7 @@ { "cell_number": "406", "cell_name": "BC_7", - "port_id": "L3_PAD35", + "port_id": "E21", "function": "bidir", "safe_bit": "X", "ccell": "405", @@ -3229,7 +3229,7 @@ { "cell_number": "408", "cell_name": "BC_7", - "port_id": "L3_PAD36", + "port_id": "D21", "function": "bidir", "safe_bit": "X", "ccell": "407", @@ -3245,7 +3245,7 @@ { "cell_number": "410", "cell_name": "BC_7", - "port_id": "L3_PAD37", + "port_id": "C22", "function": "bidir", "safe_bit": "X", "ccell": "409", @@ -3261,7 +3261,7 @@ { "cell_number": "412", "cell_name": "BC_7", - "port_id": "L3_PAD38", + "port_id": "C23", "function": "bidir", "safe_bit": "X", "ccell": "411", @@ -3277,7 +3277,7 @@ { "cell_number": "414", "cell_name": "BC_7", - "port_id": "L3_PAD39", + "port_id": "B25", "function": "bidir", "safe_bit": "X", "ccell": "413", @@ -3293,7 +3293,7 @@ { "cell_number": "416", "cell_name": "BC_7", - "port_id": "L3_PAD40", + "port_id": "A25", "function": "bidir", "safe_bit": "X", "ccell": "415", @@ -3309,7 +3309,7 @@ { "cell_number": "418", "cell_name": "BC_7", - "port_id": "L3_PAD41", + "port_id": "A23", "function": "bidir", "safe_bit": "X", "ccell": "417", @@ -3325,7 +3325,7 @@ { "cell_number": "420", "cell_name": "BC_7", - "port_id": "L3_PAD42", + "port_id": "A24", "function": "bidir", "safe_bit": "X", "ccell": "419", @@ -3341,7 +3341,7 @@ { "cell_number": "422", "cell_name": "BC_7", - "port_id": "L3_PAD43", + "port_id": "C26", "function": "bidir", "safe_bit": "X", "ccell": "421", @@ -3357,7 +3357,7 @@ { "cell_number": "424", "cell_name": "BC_7", - "port_id": "L3_PAD44", + "port_id": "B26", "function": "bidir", "safe_bit": "X", "ccell": "423", @@ -3373,7 +3373,7 @@ { "cell_number": "426", "cell_name": "BC_7", - "port_id": "L3_PAD45", + "port_id": "C24", "function": "bidir", "safe_bit": "X", "ccell": "425", @@ -3389,7 +3389,7 @@ { "cell_number": "428", "cell_name": "BC_7", - "port_id": "L3_PAD46", + "port_id": "B24", "function": "bidir", "safe_bit": "X", "ccell": "427", @@ -3405,7 +3405,7 @@ { "cell_number": "430", "cell_name": "BC_7", - "port_id": "L3_PAD47", + "port_id": "D23", "function": "bidir", "safe_bit": "X", "ccell": "429", @@ -3421,7 +3421,7 @@ { "cell_number": "432", "cell_name": "BC_7", - "port_id": "L3_PAD48", + "port_id": "D24", "function": "bidir", "safe_bit": "X", "ccell": "431", @@ -3437,7 +3437,7 @@ { "cell_number": "434", "cell_name": "BC_7", - "port_id": "L3_PAD49", + "port_id": "E22", "function": "bidir", "safe_bit": "X", "ccell": "433", @@ -3453,7 +3453,7 @@ { "cell_number": "436", "cell_name": "BC_7", - "port_id": "L4_PAD0", + "port_id": "K18", "function": "bidir", "safe_bit": "X", "ccell": "435", @@ -3469,7 +3469,7 @@ { "cell_number": "438", "cell_name": "BC_7", - "port_id": "L4_PAD1", + "port_id": "K15", "function": "bidir", "safe_bit": "X", "ccell": "437", @@ -3485,7 +3485,7 @@ { "cell_number": "440", "cell_name": "BC_7", - "port_id": "L4_PAD2", + "port_id": "J16", "function": "bidir", "safe_bit": "X", "ccell": "439", @@ -3501,7 +3501,7 @@ { "cell_number": "442", "cell_name": "BC_7", - "port_id": "L4_PAD3", + "port_id": "J14", "function": "bidir", "safe_bit": "X", "ccell": "441", @@ -3517,7 +3517,7 @@ { "cell_number": "444", "cell_name": "BC_7", - "port_id": "L4_PAD4", + "port_id": "J15", "function": "bidir", "safe_bit": "X", "ccell": "443", @@ -3533,7 +3533,7 @@ { "cell_number": "446", "cell_name": "BC_7", - "port_id": "L4_PAD5", + "port_id": "K16", "function": "bidir", "safe_bit": "X", "ccell": "445", @@ -3549,7 +3549,7 @@ { "cell_number": "448", "cell_name": "BC_7", - "port_id": "L4_PAD6", + "port_id": "K17", "function": "bidir", "safe_bit": "X", "ccell": "447", @@ -3565,7 +3565,7 @@ { "cell_number": "450", "cell_name": "BC_7", - "port_id": "L4_PAD7", + "port_id": "M14", "function": "bidir", "safe_bit": "X", "ccell": "449", @@ -3581,7 +3581,7 @@ { "cell_number": "452", "cell_name": "BC_7", - "port_id": "L4_PAD8", + "port_id": "L14", "function": "bidir", "safe_bit": "X", "ccell": "451", @@ -3597,7 +3597,7 @@ { "cell_number": "454", "cell_name": "BC_7", - "port_id": "L4_PAD9", + "port_id": "M15", "function": "bidir", "safe_bit": "X", "ccell": "453", @@ -3613,7 +3613,7 @@ { "cell_number": "456", "cell_name": "BC_7", - "port_id": "L4_PAD10", + "port_id": "L15", "function": "bidir", "safe_bit": "X", "ccell": "455", @@ -3629,7 +3629,7 @@ { "cell_number": "458", "cell_name": "BC_7", - "port_id": "L4_PAD11", + "port_id": "M16", "function": "bidir", "safe_bit": "X", "ccell": "457", @@ -3645,7 +3645,7 @@ { "cell_number": "460", "cell_name": "BC_7", - "port_id": "L4_PAD12", + "port_id": "M17", "function": "bidir", "safe_bit": "X", "ccell": "459", @@ -3661,7 +3661,7 @@ { "cell_number": "462", "cell_name": "BC_7", - "port_id": "L4_PAD13", + "port_id": "J19", "function": "bidir", "safe_bit": "X", "ccell": "461", @@ -3677,7 +3677,7 @@ { "cell_number": "464", "cell_name": "BC_7", - "port_id": "L4_PAD14", + "port_id": "H19", "function": "bidir", "safe_bit": "X", "ccell": "463", @@ -3693,7 +3693,7 @@ { "cell_number": "466", "cell_name": "BC_7", - "port_id": "L4_PAD15", + "port_id": "L17", "function": "bidir", "safe_bit": "X", "ccell": "465", @@ -3709,7 +3709,7 @@ { "cell_number": "468", "cell_name": "BC_7", - "port_id": "L4_PAD16", + "port_id": "L18", "function": "bidir", "safe_bit": "X", "ccell": "467", @@ -3725,7 +3725,7 @@ { "cell_number": "470", "cell_name": "BC_7", - "port_id": "L4_PAD17", + "port_id": "K20", "function": "bidir", "safe_bit": "X", "ccell": "469", @@ -3741,7 +3741,7 @@ { "cell_number": "472", "cell_name": "BC_7", - "port_id": "L4_PAD18", + "port_id": "J20", "function": "bidir", "safe_bit": "X", "ccell": "471", @@ -3757,7 +3757,7 @@ { "cell_number": "474", "cell_name": "BC_7", - "port_id": "L4_PAD19", + "port_id": "J18", "function": "bidir", "safe_bit": "X", "ccell": "473", @@ -3773,7 +3773,7 @@ { "cell_number": "476", "cell_name": "BC_7", - "port_id": "L4_PAD20", + "port_id": "H18", "function": "bidir", "safe_bit": "X", "ccell": "475", @@ -3789,7 +3789,7 @@ { "cell_number": "478", "cell_name": "BC_7", - "port_id": "L4_PAD21", + "port_id": "G20", "function": "bidir", "safe_bit": "X", "ccell": "477", @@ -3805,7 +3805,7 @@ { "cell_number": "480", "cell_name": "BC_7", - "port_id": "L4_PAD22", + "port_id": "G21", "function": "bidir", "safe_bit": "X", "ccell": "479", @@ -3821,7 +3821,7 @@ { "cell_number": "482", "cell_name": "BC_7", - "port_id": "L4_PAD23", + "port_id": "K21", "function": "bidir", "safe_bit": "X", "ccell": "481", @@ -3837,7 +3837,7 @@ { "cell_number": "484", "cell_name": "BC_7", - "port_id": "L4_PAD24", + "port_id": "J21", "function": "bidir", "safe_bit": "X", "ccell": "483", @@ -3853,7 +3853,7 @@ { "cell_number": "486", "cell_name": "BC_7", - "port_id": "L4_PAD25", + "port_id": "H21", "function": "bidir", "safe_bit": "X", "ccell": "485", @@ -3869,7 +3869,7 @@ { "cell_number": "488", "cell_name": "BC_7", - "port_id": "L4_PAD26", + "port_id": "H22", "function": "bidir", "safe_bit": "X", "ccell": "487", @@ -3885,7 +3885,7 @@ { "cell_number": "490", "cell_name": "BC_7", - "port_id": "L4_PAD27", + "port_id": "J23", "function": "bidir", "safe_bit": "X", "ccell": "489", @@ -3901,7 +3901,7 @@ { "cell_number": "492", "cell_name": "BC_7", - "port_id": "L4_PAD28", + "port_id": "H23", "function": "bidir", "safe_bit": "X", "ccell": "491", @@ -3917,7 +3917,7 @@ { "cell_number": "494", "cell_name": "BC_7", - "port_id": "L4_PAD29", + "port_id": "G22", "function": "bidir", "safe_bit": "X", "ccell": "493", @@ -3933,7 +3933,7 @@ { "cell_number": "496", "cell_name": "BC_7", - "port_id": "L4_PAD30", + "port_id": "F22", "function": "bidir", "safe_bit": "X", "ccell": "495", @@ -3949,7 +3949,7 @@ { "cell_number": "498", "cell_name": "BC_7", - "port_id": "L4_PAD31", + "port_id": "J24", "function": "bidir", "safe_bit": "X", "ccell": "497", @@ -3965,7 +3965,7 @@ { "cell_number": "500", "cell_name": "BC_7", - "port_id": "L4_PAD32", + "port_id": "H24", "function": "bidir", "safe_bit": "X", "ccell": "499", @@ -3981,7 +3981,7 @@ { "cell_number": "502", "cell_name": "BC_7", - "port_id": "L4_PAD33", + "port_id": "F23", "function": "bidir", "safe_bit": "X", "ccell": "501", @@ -3997,7 +3997,7 @@ { "cell_number": "504", "cell_name": "BC_7", - "port_id": "L4_PAD34", + "port_id": "E23", "function": "bidir", "safe_bit": "X", "ccell": "503", @@ -4013,7 +4013,7 @@ { "cell_number": "506", "cell_name": "BC_7", - "port_id": "L4_PAD35", + "port_id": "K22", "function": "bidir", "safe_bit": "X", "ccell": "505", @@ -4029,7 +4029,7 @@ { "cell_number": "508", "cell_name": "BC_7", - "port_id": "L4_PAD36", + "port_id": "K23", "function": "bidir", "safe_bit": "X", "ccell": "507", @@ -4045,7 +4045,7 @@ { "cell_number": "510", "cell_name": "BC_7", - "port_id": "L4_PAD37", + "port_id": "G24", "function": "bidir", "safe_bit": "X", "ccell": "509", @@ -4061,7 +4061,7 @@ { "cell_number": "512", "cell_name": "BC_7", - "port_id": "L4_PAD38", + "port_id": "F24", "function": "bidir", "safe_bit": "X", "ccell": "511", @@ -4077,7 +4077,7 @@ { "cell_number": "514", "cell_name": "BC_7", - "port_id": "L4_PAD39", + "port_id": "E25", "function": "bidir", "safe_bit": "X", "ccell": "513", @@ -4093,7 +4093,7 @@ { "cell_number": "516", "cell_name": "BC_7", - "port_id": "L4_PAD40", + "port_id": "D25", "function": "bidir", "safe_bit": "X", "ccell": "515", @@ -4109,7 +4109,7 @@ { "cell_number": "518", "cell_name": "BC_7", - "port_id": "L4_PAD41", + "port_id": "E26", "function": "bidir", "safe_bit": "X", "ccell": "517", @@ -4125,7 +4125,7 @@ { "cell_number": "520", "cell_name": "BC_7", - "port_id": "L4_PAD42", + "port_id": "D26", "function": "bidir", "safe_bit": "X", "ccell": "519", @@ -4141,7 +4141,7 @@ { "cell_number": "522", "cell_name": "BC_7", - "port_id": "L4_PAD43", + "port_id": "H26", "function": "bidir", "safe_bit": "X", "ccell": "521", @@ -4157,7 +4157,7 @@ { "cell_number": "524", "cell_name": "BC_7", - "port_id": "L4_PAD44", + "port_id": "G26", "function": "bidir", "safe_bit": "X", "ccell": "523", @@ -4173,7 +4173,7 @@ { "cell_number": "526", "cell_name": "BC_7", - "port_id": "L4_PAD45", + "port_id": "G25", "function": "bidir", "safe_bit": "X", "ccell": "525", @@ -4189,7 +4189,7 @@ { "cell_number": "528", "cell_name": "BC_7", - "port_id": "L4_PAD46", + "port_id": "F25", "function": "bidir", "safe_bit": "X", "ccell": "527", @@ -4205,7 +4205,7 @@ { "cell_number": "530", "cell_name": "BC_7", - "port_id": "L4_PAD47", + "port_id": "J25", "function": "bidir", "safe_bit": "X", "ccell": "529", @@ -4221,7 +4221,7 @@ { "cell_number": "532", "cell_name": "BC_7", - "port_id": "L4_PAD48", + "port_id": "J26", "function": "bidir", "safe_bit": "X", "ccell": "531", @@ -4237,7 +4237,7 @@ { "cell_number": "534", "cell_name": "BC_7", - "port_id": "L4_PAD49", + "port_id": "L19", "function": "bidir", "safe_bit": "X", "ccell": "533", @@ -4253,7 +4253,7 @@ { "cell_number": "536", "cell_name": "BC_7", - "port_id": "L5_PAD0", + "port_id": "M19", "function": "bidir", "safe_bit": "X", "ccell": "535", @@ -4269,7 +4269,7 @@ { "cell_number": "538", "cell_name": "BC_7", - "port_id": "L5_PAD1", + "port_id": "R14", "function": "bidir", "safe_bit": "X", "ccell": "537", @@ -4285,7 +4285,7 @@ { "cell_number": "540", "cell_name": "BC_7", - "port_id": "L5_PAD2", + "port_id": "R15", "function": "bidir", "safe_bit": "X", "ccell": "539", @@ -4301,7 +4301,7 @@ { "cell_number": "542", "cell_name": "BC_7", - "port_id": "L5_PAD3", + "port_id": "P14", "function": "bidir", "safe_bit": "X", "ccell": "541", @@ -4317,7 +4317,7 @@ { "cell_number": "544", "cell_name": "BC_7", - "port_id": "L5_PAD4", + "port_id": "N14", "function": "bidir", "safe_bit": "X", "ccell": "543", @@ -4333,7 +4333,7 @@ { "cell_number": "546", "cell_name": "BC_7", - "port_id": "L5_PAD5", + "port_id": "P15", "function": "bidir", "safe_bit": "X", "ccell": "545", @@ -4349,7 +4349,7 @@ { "cell_number": "548", "cell_name": "BC_7", - "port_id": "L5_PAD6", + "port_id": "P16", "function": "bidir", "safe_bit": "X", "ccell": "547", @@ -4365,7 +4365,7 @@ { "cell_number": "550", "cell_name": "BC_7", - "port_id": "L5_PAD7", + "port_id": "N16", "function": "bidir", "safe_bit": "X", "ccell": "549", @@ -4381,7 +4381,7 @@ { "cell_number": "552", "cell_name": "BC_7", - "port_id": "L5_PAD8", + "port_id": "N17", "function": "bidir", "safe_bit": "X", "ccell": "551", @@ -4397,7 +4397,7 @@ { "cell_number": "554", "cell_name": "BC_7", - "port_id": "L5_PAD9", + "port_id": "R16", "function": "bidir", "safe_bit": "X", "ccell": "553", @@ -4413,7 +4413,7 @@ { "cell_number": "556", "cell_name": "BC_7", - "port_id": "L5_PAD10", + "port_id": "R17", "function": "bidir", "safe_bit": "X", "ccell": "555", @@ -4429,7 +4429,7 @@ { "cell_number": "558", "cell_name": "BC_7", - "port_id": "L5_PAD11", + "port_id": "P18", "function": "bidir", "safe_bit": "X", "ccell": "557", @@ -4445,7 +4445,7 @@ { "cell_number": "560", "cell_name": "BC_7", - "port_id": "L5_PAD12", + "port_id": "N18", "function": "bidir", "safe_bit": "X", "ccell": "559", @@ -4461,7 +4461,7 @@ { "cell_number": "562", "cell_name": "BC_7", - "port_id": "L5_PAD13", + "port_id": "K25", "function": "bidir", "safe_bit": "X", "ccell": "561", @@ -4477,7 +4477,7 @@ { "cell_number": "564", "cell_name": "BC_7", - "port_id": "L5_PAD14", + "port_id": "K26", "function": "bidir", "safe_bit": "X", "ccell": "563", @@ -4493,7 +4493,7 @@ { "cell_number": "566", "cell_name": "BC_7", - "port_id": "L5_PAD15", + "port_id": "M20", "function": "bidir", "safe_bit": "X", "ccell": "565", @@ -4509,7 +4509,7 @@ { "cell_number": "568", "cell_name": "BC_7", - "port_id": "L5_PAD16", + "port_id": "L20", "function": "bidir", "safe_bit": "X", "ccell": "567", @@ -4525,7 +4525,7 @@ { "cell_number": "570", "cell_name": "BC_7", - "port_id": "L5_PAD17", + "port_id": "L24", "function": "bidir", "safe_bit": "X", "ccell": "569", @@ -4541,7 +4541,7 @@ { "cell_number": "572", "cell_name": "BC_7", - "port_id": "L5_PAD18", + "port_id": "L25", "function": "bidir", "safe_bit": "X", "ccell": "571", @@ -4557,7 +4557,7 @@ { "cell_number": "574", "cell_name": "BC_7", - "port_id": "L5_PAD19", + "port_id": "M24", "function": "bidir", "safe_bit": "X", "ccell": "573", @@ -4573,7 +4573,7 @@ { "cell_number": "576", "cell_name": "BC_7", - "port_id": "L5_PAD20", + "port_id": "M25", "function": "bidir", "safe_bit": "X", "ccell": "575", @@ -4589,7 +4589,7 @@ { "cell_number": "578", "cell_name": "BC_7", - "port_id": "L5_PAD21", + "port_id": "L22", "function": "bidir", "safe_bit": "X", "ccell": "577", @@ -4605,7 +4605,7 @@ { "cell_number": "580", "cell_name": "BC_7", - "port_id": "L5_PAD22", + "port_id": "L23", "function": "bidir", "safe_bit": "X", "ccell": "579", @@ -4621,7 +4621,7 @@ { "cell_number": "582", "cell_name": "BC_7", - "port_id": "L5_PAD23", + "port_id": "M21", "function": "bidir", "safe_bit": "X", "ccell": "581", @@ -4637,7 +4637,7 @@ { "cell_number": "584", "cell_name": "BC_7", - "port_id": "L5_PAD24", + "port_id": "M22", "function": "bidir", "safe_bit": "X", "ccell": "583", @@ -4653,7 +4653,7 @@ { "cell_number": "586", "cell_name": "BC_7", - "port_id": "L5_PAD25", + "port_id": "N21", "function": "bidir", "safe_bit": "X", "ccell": "585", @@ -4669,7 +4669,7 @@ { "cell_number": "588", "cell_name": "BC_7", - "port_id": "L5_PAD26", + "port_id": "N22", "function": "bidir", "safe_bit": "X", "ccell": "587", @@ -4685,7 +4685,7 @@ { "cell_number": "590", "cell_name": "BC_7", - "port_id": "L5_PAD27", + "port_id": "P20", "function": "bidir", "safe_bit": "X", "ccell": "589", @@ -4701,7 +4701,7 @@ { "cell_number": "592", "cell_name": "BC_7", - "port_id": "L5_PAD28", + "port_id": "P21", "function": "bidir", "safe_bit": "X", "ccell": "591", @@ -4717,7 +4717,7 @@ { "cell_number": "594", "cell_name": "BC_7", - "port_id": "L5_PAD29", + "port_id": "N23", "function": "bidir", "safe_bit": "X", "ccell": "593", @@ -4733,7 +4733,7 @@ { "cell_number": "596", "cell_name": "BC_7", - "port_id": "L5_PAD30", + "port_id": "N24", "function": "bidir", "safe_bit": "X", "ccell": "595", @@ -4749,7 +4749,7 @@ { "cell_number": "598", "cell_name": "BC_7", - "port_id": "L5_PAD31", + "port_id": "P19", "function": "bidir", "safe_bit": "X", "ccell": "597", @@ -4765,7 +4765,7 @@ { "cell_number": "600", "cell_name": "BC_7", - "port_id": "L5_PAD32", + "port_id": "N19", "function": "bidir", "safe_bit": "X", "ccell": "599", @@ -4781,7 +4781,7 @@ { "cell_number": "602", "cell_name": "BC_7", - "port_id": "L5_PAD33", + "port_id": "P23", "function": "bidir", "safe_bit": "X", "ccell": "601", @@ -4797,7 +4797,7 @@ { "cell_number": "604", "cell_name": "BC_7", - "port_id": "L5_PAD34", + "port_id": "P24", "function": "bidir", "safe_bit": "X", "ccell": "603", @@ -4813,7 +4813,7 @@ { "cell_number": "606", "cell_name": "BC_7", - "port_id": "L5_PAD35", + "port_id": "R20", "function": "bidir", "safe_bit": "X", "ccell": "605", @@ -4829,7 +4829,7 @@ { "cell_number": "608", "cell_name": "BC_7", - "port_id": "L5_PAD36", + "port_id": "R21", "function": "bidir", "safe_bit": "X", "ccell": "607", @@ -4845,7 +4845,7 @@ { "cell_number": "610", "cell_name": "BC_7", - "port_id": "L5_PAD37", + "port_id": "R25", "function": "bidir", "safe_bit": "X", "ccell": "609", @@ -4861,7 +4861,7 @@ { "cell_number": "612", "cell_name": "BC_7", - "port_id": "L5_PAD38", + "port_id": "P25", "function": "bidir", "safe_bit": "X", "ccell": "611", @@ -4877,7 +4877,7 @@ { "cell_number": "614", "cell_name": "BC_7", - "port_id": "L5_PAD39", + "port_id": "N26", "function": "bidir", "safe_bit": "X", "ccell": "613", @@ -4893,7 +4893,7 @@ { "cell_number": "616", "cell_name": "BC_7", - "port_id": "L5_PAD40", + "port_id": "M26", "function": "bidir", "safe_bit": "X", "ccell": "615", @@ -4909,7 +4909,7 @@ { "cell_number": "618", "cell_name": "BC_7", - "port_id": "L5_PAD41", + "port_id": "T24", "function": "bidir", "safe_bit": "X", "ccell": "617", @@ -4925,7 +4925,7 @@ { "cell_number": "620", "cell_name": "BC_7", - "port_id": "L5_PAD42", + "port_id": "T25", "function": "bidir", "safe_bit": "X", "ccell": "619", @@ -4941,7 +4941,7 @@ { "cell_number": "622", "cell_name": "BC_7", - "port_id": "L5_PAD43", + "port_id": "R26", "function": "bidir", "safe_bit": "X", "ccell": "621", @@ -4957,7 +4957,7 @@ { "cell_number": "624", "cell_name": "BC_7", - "port_id": "L5_PAD44", + "port_id": "P26", "function": "bidir", "safe_bit": "X", "ccell": "623", @@ -4973,7 +4973,7 @@ { "cell_number": "626", "cell_name": "BC_7", - "port_id": "L5_PAD45", + "port_id": "T22", "function": "bidir", "safe_bit": "X", "ccell": "625", @@ -4989,7 +4989,7 @@ { "cell_number": "628", "cell_name": "BC_7", - "port_id": "L5_PAD46", + "port_id": "R22", "function": "bidir", "safe_bit": "X", "ccell": "627", @@ -5005,7 +5005,7 @@ { "cell_number": "630", "cell_name": "BC_7", - "port_id": "L5_PAD47", + "port_id": "T23", "function": "bidir", "safe_bit": "X", "ccell": "629", @@ -5021,7 +5021,7 @@ { "cell_number": "632", "cell_name": "BC_7", - "port_id": "L5_PAD48", + "port_id": "R23", "function": "bidir", "safe_bit": "X", "ccell": "631", @@ -5037,7 +5037,7 @@ { "cell_number": "634", "cell_name": "BC_7", - "port_id": "L5_PAD49", + "port_id": "R18", "function": "bidir", "safe_bit": "X", "ccell": "633", @@ -5047,28 +5047,28 @@ { "cell_number": "635", "cell_name": "BC_2", - "port_id": "MODE_0", + "port_id": "AB7", "function": "input", "safe_bit": "X" }, { "cell_number": "636", "cell_name": "BC_2", - "port_id": "MODE_1", + "port_id": "Y9", "function": "input", "safe_bit": "X" }, { "cell_number": "637", "cell_name": "BC_2", - "port_id": "MODE_2", + "port_id": "W9", "function": "input", "safe_bit": "X" }, { "cell_number": "638", "cell_name": "BC_2", - "port_id": "RSTN", + "port_id": "AE16", "function": "input", "safe_bit": "X" }, @@ -5081,7 +5081,7 @@ { "cell_number": "640", "cell_name": "BC_7", - "port_id": "CFG_CLK", + "port_id": "H13", "function": "bidir", "safe_bit": "X", "ccell": "639", @@ -5097,7 +5097,7 @@ { "cell_number": "642", "cell_name": "BC_7", - "port_id": "INIT_FLAG_N", + "port_id": "V11", "function": "bidir", "safe_bit": "X", "ccell": "641", @@ -5113,7 +5113,7 @@ { "cell_number": "644", "cell_name": "BC_7", - "port_id": "CFG_DONE", + "port_id": "W10", "function": "bidir", "safe_bit": "X", "ccell": "643", diff --git a/src/components/UploadCard.vue b/src/components/UploadCard.vue index f5899cc..17a21e7 100644 --- a/src/components/UploadCard.vue +++ b/src/components/UploadCard.vue @@ -99,7 +99,6 @@ async function handleClick(event: Event): Promise { isUploading.value = true; try { const ret = await props.uploadEvent(bitstream.value); - console.debug(`After upload bistream: ${bitstream.value}, result: ${ret}`); if (isUndefined(props.downloadEvent)) { if (ret) { dialog.info("上传成功"); diff --git a/src/components/equipments/MotherBoardCaps.vue b/src/components/equipments/MotherBoardCaps.vue index 28bb411..c517d1f 100644 --- a/src/components/equipments/MotherBoardCaps.vue +++ b/src/components/equipments/MotherBoardCaps.vue @@ -2,10 +2,10 @@

Jtag

-

Jtag Addr: {{ props.jtagAddr }}

-

Jtag Port: {{ props.jtagPort?.toString() }}

+

Jtag Addr: {{ eqps.boardAddr }}

+

Jtag Port: {{ eqps.boardPort.toString() }}

-

IDCode: 0x{{ jtagIDCode.toString(16).padStart(8, "0") }}

+

IDCode: 0x{{ jtagIDCode.toString(16).padStart(8, "0").toUpperCase() }}

- +
-
diff --git a/src/stores/equipments.ts b/src/stores/equipments.ts index c2fd347..a727f08 100644 --- a/src/stores/equipments.ts +++ b/src/stores/equipments.ts @@ -1,40 +1,140 @@ -import { ref, computed } from 'vue' +import { ref, watchEffect } from 'vue' import { defineStore } from 'pinia' -import { isString, isUndefined, toNumber } from 'lodash'; +import { isString, toNumber, isUndefined } from 'lodash'; +import { Common } from '@/Common'; import z from "zod" import { isNumber } from 'mathjs'; +import { JtagClient } from "@/APIClient"; +import { Mutex, withTimeout } from 'async-mutex'; +import { useConstraintsStore } from "@/stores/constraints"; +import { useDialogStore } from './dialog'; export const useEquipments = defineStore('equipments', () => { - const boardAddr = ref("127.0.0.1") - const boardPort = ref(1234) - const jtagBitstream = ref() + // Global Stores + const constrainsts = useConstraintsStore(); + const dialog = useDialogStore(); - function setAddr(address: string | undefined) { - if (isUndefined(address)) return; - if (z.string().ip("4").safeParse(address).success) + const boardAddr = ref("127.0.0.1"); + const boardPort = ref(1234); + const jtagBitstream = ref(); + const jtagBoundaryScanFreq = ref(10); + const jtagClientMutex = withTimeout(new Mutex(), 2000, new Error("JtagClient Mutex Timeout!")) + const jtagClient = new JtagClient(); + + const enableJtagBoundaryScan = ref(false); + + function setAddr(address: string | undefined): boolean { + if (isString(address) && z.string().ip("4").safeParse(address).success) { boardAddr.value = address; + return true; + } + + return false; } - function setPort(port: string | number | undefined) { - if (isUndefined(port)) return; - + function setPort(port: string | number | undefined): boolean { if (isString(port) && port.length != 0) { const portNumber = toNumber(port); - if (z.number().nonnegative().max(65535).safeParse(portNumber).success) + if (z.number().nonnegative().max(65535).safeParse(portNumber).success) { boardPort.value = portNumber; + return true; + } } else if (isNumber(port)) { - if (z.number().nonnegative().max(65535).safeParse(port).success) + if (z.number().nonnegative().max(65535).safeParse(port).success) { boardPort.value = port; + return true; + } + } + return false; + } + + watchEffect(() => { + if (enableJtagBoundaryScan.value) jtagBoundaryScan(); + }); + + async function jtagBoundaryScan() { + const release = await jtagClientMutex.acquire(); + try { + const portStates = await jtagClient.boundaryScanLogicalPorts( + boardAddr.value, + boardPort.value, + ); + + constrainsts.batchSetConstraintStates(portStates); + } catch (error) { + dialog.error("边界扫描发生错误"); + console.error(error); + enableJtagBoundaryScan.value = false; + } finally { + release(); + + if (enableJtagBoundaryScan.value) + setTimeout(jtagBoundaryScan, 1000 / jtagBoundaryScanFreq.value); } } + async function jtagUploadBitstream(bitstream: File): Promise { + try { + const resp = await jtagClient.uploadBitstream( + boardAddr.value, + Common.toFileParameterOrNull(bitstream), + ); + return resp; + } catch (e) { + dialog.error("上传错误"); + console.error(e); + return false; + } + } + + async function jtagDownloadBitstream(): Promise { + const release = await jtagClientMutex.acquire(); + try { + const resp = await jtagClient.downloadBitstream( + boardAddr.value, + boardPort.value + ); + return resp; + } catch (e) { + dialog.error("上传错误"); + console.error(e); + return false; + } finally { + release(); + } + } + + async function jtagGetIDCode(isQuiet: boolean = false): Promise { + const release = await jtagClientMutex.acquire(); + try { + const resp = await jtagClient.getDeviceIDCode( + boardAddr.value, + boardPort.value + ); + return resp; + } catch (e) { + if (!isQuiet) dialog.error("获取IDCode错误"); + return 0xffff_ffff; + } finally { + release(); + } + } + + return { boardAddr, boardPort, setAddr, setPort, jtagBitstream, + jtagBoundaryScanFreq, + jtagClientMutex, + jtagClient, + jtagUploadBitstream, + jtagDownloadBitstream, + jtagGetIDCode, + enableJtagBoundaryScan, } }) diff --git a/src/views/TestView.vue b/src/views/TestView.vue index d4b5f9f..6a9112a 100644 --- a/src/views/TestView.vue +++ b/src/views/TestView.vue @@ -62,7 +62,6 @@ async function uploadBitstream(bitstream: File): Promise { } try { - console.debug(`Before upload bistream: ${bitstream}`); const resp = await jtagController.uploadBitstream( boardAddress.value, Common.toFileParameterOrNull(bitstream),