From: Martin Prudek Date: Sun, 22 Mar 2015 14:24:56 +0000 (+0100) Subject: odstranen soubor STP X-Git-Url: https://rtime.felk.cvut.cz/gitweb/fpga/rpi-motor-control.git/commitdiff_plain/37436119047941752f4bdc301fa2baa415391fef odstranen soubor STP --- diff --git a/pmsm-control/rpi_mc_simple_dc.stp b/pmsm-control/rpi_mc_simple_dc.stp deleted file mode 100644 index 959b66e..0000000 --- a/pmsm-control/rpi_mc_simple_dc.stp +++ /dev/null @@ -1,1541 +0,0 @@ -NOTE "CREATOR" "Designer Version: 11.3.0.112"; -NOTE "CAPTURE" "11.3.0.112"; -NOTE "DEVICE" "AGL125V5"; -NOTE "PACKAGE" "AGL125V5-vq100"; -NOTE "DATE" "2014/10/07"; -NOTE "TIME" "15:09:52"; -NOTE "STAPL_VERSION" "JESD71"; -NOTE "VENDOR" "Microsemi Corporation"; -NOTE "IDCODE" "03A121CF"; -NOTE "IDMASK" "06FFFFFF"; -NOTE "DESIGN" "rpi_mc_simple_dc"; -NOTE "DESIGN_DIRECTORY" "/home/pi/fpga/rpi-mc-1/simple-dc/"; -NOTE "CHECKSUM" "D5FF"; -NOTE "SECURITY" "Disable"; -NOTE "ALG_VERSION" "20"; -NOTE "MAP_VERSION" "1"; -NOTE "TOOL_VERSION" "1"; -NOTE "MAX_FREQ" "10000000"; -NOTE "SILSIG" "00000000"; -NOTE "SPEED_GRAD" "STD"; -NOTE "TEMP_GRAD" "COM"; -NOTE "PLAYER_VERSION_VARIABLE" "PLAYERVERSIONVARIABLE"; -NOTE "PLAYER_VERSION_SW_VARIABLE" "PLAYERVERSIONSWVARIABLE"; - -ACTION PROGRAM = - VERIFY_IDCODE, - SET_PRG_ARRAY, - W_INITIALIZE, - DO_ERASE, - DO_PROGRAM, - DO_VERIFY_BOL, - DO_PROGRAM_RLOCK, - DO_VERIFY_PGM_RLOCK, - DO_EXIT; -ACTION PROGRAM_ARRAY = - VERIFY_IDCODE, - SET_PRG_ARRAY, - AW_INITIALIZE, - DO_ERASE_ARRAY, - DO_PROGRAM, - DO_VERIFY_BOL, - DO_PROGRAM_RLOCK, - DO_VERIFY_PGM_RLOCK, - DO_EXIT; -ACTION ERASE_ARRAY = - VERIFY_IDCODE, - AW_INITIALIZE, - DO_ERASE_ARRAY_ONLY, - DO_EXIT; -ACTION ERASE = - VERIFY_IDCODE, - W_INITIALIZE, - DO_ERASE_ONLY, - DO_EXIT; -ACTION ERASE_ALL = - VERIFY_IDCODE, - INITIALIZE, - DO_ERASE_ALL, - DO_EXIT; -ACTION VERIFY = - VERIFY_IDCODE, - R_INITIALIZE, - DO_VERIFY_EOL, - DO_VERIFY_RLOCK, - DO_EXIT; -ACTION VERIFY_ARRAY = - VERIFY_IDCODE, - AR_INITIALIZE, - DO_VERIFY_EOL, - DO_VERIFY_RLOCK, - DO_EXIT; -ACTION READ_IDCODE = - DO_READ_IDCODE; -ACTION VERIFY_DEVICE_INFO = - VERIFY_IDCODE, - READ_INITIALIZE, - READ_IDCODE_ONLY, - DO_VERIFY_DEVICE_INFO, - DO_EXIT; -ACTION DEVICE_INFO = - VERIFY_IDCODE, - READ_INITIALIZE, - READ_IDCODE_ONLY, - DO_DEVICE_INFO, - DO_QUERY_SECURITY, - DO_EXIT; - - - -DATA CONSTBLOCK; - INTEGER IEEE1532=0; - INTEGER STAPL=1; - INTEGER DIRECTC=2; - INTEGER PDB=3; - INTEGER SVF=4; - INTEGER FP=0; - INTEGER FPLITE=1; - INTEGER FP3=2; - INTEGER SCULPTW=3; - INTEGER BPW=4; - INTEGER DIRECTCP=5; - INTEGER STP=6; - INTEGER FP4=7; - INTEGER FP33=0; - INTEGER FP34=1; - INTEGER FP40=2; - INTEGER FP41=3; - INTEGER FP42=4; - INTEGER FP50=5; - INTEGER FP51=6; - INTEGER FP60=7; - INTEGER FP61=8; - INTEGER FP62=9; - INTEGER FP84=11; - INTEGER FP85=12; - INTEGER FP86=13; - INTEGER FP90=14; - INTEGER FP91=15; - INTEGER FP100=16; - INTEGER FP_11=19; - INTEGER FP_11_1=20; - INTEGER FP_11_2=21; - INTEGER FP_11_3=22; - INTEGER UNKNOWN=127; - INTEGER UNSPECIFIED=0; - INTEGER QN132=1; - INTEGER VQ100=2; - INTEGER TQ144=3; - INTEGER PQ208=4; - INTEGER FG144=5; - INTEGER FG256=6; - INTEGER FG484=7; - INTEGER FG676=8; - INTEGER FG896=9; - INTEGER QN108=10; - INTEGER QN180=11; - INTEGER TQ100=12; - INTEGER CQ208=13; - INTEGER FG1152=14; - INTEGER BG456=15; - INTEGER UNDEFINED=63; - INTEGER GRADE_UNSPEC=0; - INTEGER GRADE_1=1; - INTEGER GRADE_2=2; - INTEGER GRADE_3=3; - INTEGER GRADE_F=4; - INTEGER GRADE_STD=5; - INTEGER GRADE_4=6; - INTEGER GRADE_UNDEF=7; -ENDDATA; - -DATA PARAMETERS; - INTEGER FREQ =4; -ENDDATA; - -DATA GV; - INTEGER ULOPT1_BITLOCATION =11; - INTEGER ULOPT0_BITLOCATION =10; - INTEGER ULUWE_BITLOCATION =9; - INTEGER ULARE_BITLOCATION =8; - INTEGER ULUPC_BITLOCATION =7; - INTEGER ULUFE_BITLOCATION =6; - INTEGER ULUFP_BITLOCATION =5; - INTEGER ULUFJ_BITLOCATION =4; - INTEGER ULFLR_BITLOCATION =3; - INTEGER ULULR_BITLOCATION =2; - INTEGER ULAWE_BITLOCATION =1; - INTEGER ULARD_BITLOCATION =0; - BOOLEAN BUFF128[128]; - BOOLEAN BUFF32[32]; - INTEGER I; - INTEGER J; - INTEGER TEMP; - INTEGER SDNUMBER; - INTEGER ROWNUMBER; - INTEGER DATAINDEX =0; - INTEGER FROMROWNUMBER =1; - INTEGER AESBLOCK; - BOOLEAN ID[32]; - BOOLEAN PASS = 1; - BOOLEAN FADDR[3]; - INTEGER STATUS =0; - BOOLEAN SILSIG[32] = $00000000; - BOOLEAN ISC_CONFIG_RESULT[18]; - BOOLEAN VERIFYEOL[2]; - BOOLEAN COMBERASESELECT[23]; - BOOLEAN SECKEY_OK = 1; - BOOLEAN SECREG[44]; - BOOLEAN ULUWE = 0; - BOOLEAN ULARE = 0; - BOOLEAN ULUPC = 0; - BOOLEAN ULUFE = 0; - BOOLEAN ULUFP = 0; - BOOLEAN ULUFJ = 0; - BOOLEAN ULFLR = 0; - BOOLEAN ULULR = 0; - BOOLEAN ULAWE = 0; - BOOLEAN ULARD = 0; - BOOLEAN ULOPT[2]; - BOOLEAN SUROWCHECKSUM[16]; - INTEGER SUROWCYCLECOUNT =0; - INTEGER ACT_UROW_CYCLE_COUNT =0; - BOOLEAN ACT_UROW_DESIGN_NAME[70] = $138797f6de3fb9e5db; - BOOLEAN SUROWDESIGNNAME[70]; - BOOLEAN SUROWPROGMETHOD[3]; - BOOLEAN ACT_UROW_ALGO_VERSION[7] = $14; - BOOLEAN SUROWALGOVERSION[7]; - BOOLEAN SUROW_PKG_TYPE[6]; - BOOLEAN ACT_UROW_SW_VERSION[7]; - BOOLEAN SUROW_SW_VERSION[7]; - INTEGER PLAYERVERSIONVARIABLE =0; - INTEGER PLAYERVERSIONSWVARIABLE =0; - INTEGER SCULPTORMAJORBASE =5; - INTEGER SCULPTORMINORBASE =16; - BOOLEAN ACT_UROW_PROGRAM_SW[4]; - BOOLEAN SUROWPROGRAMSW[4]; - BOOLEAN SUROW_SPEED_GRADE[3]; - BOOLEAN SUROW_SRAM_DISTURB[1]; - BOOLEAN ISERASEONLY = 0; - BOOLEAN ISRESTOREDESIGN = 0; - BOOLEAN FLAGDISPLAYCYC = 1; - BOOLEAN ISPRGARRAY = 0; - BOOLEAN BSRPATTERN[564] = $9249249249249249249249249249249249249249249249249 - 249249249249249249249249249249249249249249249249249249249249249249249249 - 24924924924924924924; - BOOLEAN SAMPLEMASK[564] = $0000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000; - BOOLEAN BSR[564]; - BOOLEAN SAMPLE_DEVICE[564]; - BOOLEAN RLOCK[832] = $7fffffcffffffbfffffeffffffbfffffefffffffffffffffffff3f - ffffcffffff3fffffcffffff3fffffcffffff3fffffdffffff3fffffcffffff3fffffcff - ffff3fffffcffffff3fffffdffffffffffffffffffffffffffffffffffffffffffffffff - ffffffffff; - BOOLEAN ARRAYRONLY = 1; - BOOLEAN CHKARRAY = 0; - BOOLEAN FROMRONLY = 1; - BOOLEAN CHKFROM = 0; - BOOLEAN CHKNVM = 0; - BOOLEAN CHKSEC = 1; - BOOLEAN PERMLOCK = 0; - INTEGER HEX[16] = 70,69,68,67,66,65,57,56,55,54,53,52,51,50,49,48; - INTEGER NUMBEROFFROMROWS =8; - BOOLEAN INITIALIZE_DATA[5] = $00; - INTEGER SDTILE; - INTEGER NUMBEROFSDTILES =4; - INTEGER NUMBEROFMAPROWS =1244; - INTEGER IDREV; - INTEGER IDFAB; - INTEGER BM7DEVICE =0; - INTEGER BM1DEVICE =0; - BOOLEAN M1BUFF[128] = $acdd6548ccb488863e291eb18fe95077; - BOOLEAN M7BUFF[128] = $e137623a2eeee91126015f3f73664945; - BOOLEAN IDCODEVALUE[32] = $03a121cf; - BOOLEAN IDMASK[32] = $06ffffff; - INTEGER SECKEYCHK =0; - INTEGER DESIGNPKGTYPE =2; - BOOLEAN ACT_UROW_PROG_METHOD[3] = $1; - INTEGER LABEL_SEPARATOR =0; - INTEGER ROWITERATION =100; - INTEGER PAGEITERATION =100; - INTEGER PERCENT_UPDATE; - INTEGER DIFFERENCE; - INTEGER UNIQUEEXITCODE =0; -ENDDATA; - -DATA BITSTREAM; - BOOLEAN UROW[128]; - BOOLEAN UROW_MASK[128] = $fffffffffffffffffffffffffe01ffc0; - BOOLEAN DATASTREAM[1035008] = @WbV00000110040W0W000020G000400108002200000Wwc - qqcso0000p@zlF999IDfjIo0000_@p@@IYaatcjj50000y_@@7HIIIGRRRR34OV@VGIIIYss - sqDGWt@@Haaa4ssqsUY1rW0fD994000u@@@xJIIYSRJYq4000a@@_VZa89P0000Y49996999 - XFI00004999W8991sW1Yaaa8aaaKZ3GIII2IIIg601WHIYa0IIa400rm3899950000400O08 - 0IIIo4OGISGNS000009999rWFQRRRP9BBnXaa4b000WssMjvoIiDB9HIU000WRpss2BMsM49 - 9910000ijjjXjjjLGIIoXHWsssMqsosrm2osoWg14OZjb8PNIYaS0000RRsscPMIoa899P00 - 00JIIIYRBAREjjjwiDDPtaa89poaaORhssJJsaSIaaaALMIYPRRRKQQI29999aWWaWsssiaa - a8Xaa49H2MDW0DaacrW2iaiGpssMYqaqWaaa4JosMSRRRrHIRpC99HIkaDRpsMjjrazk20IQ - I2418000CqTg0IJIW808144XayWC85G022IYQ01cca800008BB9f6GWca4000GW8B89_M680 - 0200989G0000IIIa480HIWa0080OYP0GI208100Pq2IL40GIIADG0I22I80000899BY4C0Ce - 6S0222Wsr28080g1900W0e6e080992000r04Wa48q9IGDDeDdaaayu1GIHJ4899H8000W000 - 0gb5RBaar04WccsAIIIASUWQJRpQW2OBJRh14i9DGfD99caaaSv1ORIIJ37GRRR3sMtcB999 - Yz@@_tssiTizORJIYa4_l@@PRss6sklj9HII2x@@@XjjjDQPPRYaaa8_@@h15Gssci6eWtsM - 4999n__@Vg14mssg4999k@@@RssscgjjjPIIIYu@@t7QRhsQR@j62i@sogTRRpsTRlsUjDRR - ijORxjPRRjPRRZcjjjabbj5ssssm__sCRRRpORRp6RRhsQxxQW2ijjjK3G0RRRMjjjniijDI - 3CmssscvssMjRRRsCRRrsljb6GWz000040030OK3uKh31x0SC04Jdm52000g1q8qWcs2d60o - CEPjI5U269822b_AUY6Ue93j0D@F0eZ8O6y63XrV7C0Ohv2k4duiOA4411jOBa1Y008D0C02 - W0YWaHq0DYJ8JuaF2efC108WZ1W5naW1080a40OPn2NCFewm1T0GO401r0Muqn51qMQUm21Q - M520GGdWaYCKGD06orIm5c62efCIIIIaaaaG999HGIIYiaa49A9922IIaaba89HIg1K0GIII - 4aaaP080IIIYWaa49999IWaa899912GIg6G2aWaW8P9BL30XE1Da6W0P999r0q8Q08r00XIM - IIW409H3aHWJX6023JCqGd0CCEn1NSOGR1p0m00uFW42So18400TSeK0DD4uaM371IW6M5Xo - 31QGYWa4aOBCX4aa49099GIGIaaaa0898bkH1r0O01180GYIInMW0X4W41999o0I2omm0IWI - Ir0KW4aa4A818H3iWWa0ae1I02I2IlY4GIGI0198P11J81999gZDgEGYC0MG080u_3CK3W1T - f4nQGEqmW6L2Q08999I100HAG06000GaaabPUGkXAimu1j7QGD0Wq9053kuGUQNC00BT2GXa - aa430000IIIa3000G99HI0000ma49920r0KW00000999vAGGD06asv1r0qHd0JKIn1caaae0 - 000KIIg@02KIIIMG01z8OID0Kq9m5X0O0GIIIK000L1G010000999o000w3uWM988HW4ECuW - Q06fJ0AobaWq0A0G99PQ04W899f608w48YQ06fJ0760u@10EgYbCMexegGM8Ti6UhRhe16Ag - m@2DOj0ET680GGS2a4oh19CCIWW_5mv@1s_Vy8s5SoS7taN8lo4qm@nmCLD0waNG41dW6100 - WW7@J999PrR8GGIKAeE6KIII6lu5r0OW2IIoQ0e8uneKGII2aa4i6W82Uisfus8Wc@3Efs_A - O8sYKabaaKU171QuX4a4ie1kG2I2Iq0NCzO1H3C1988fe1Ae6032quWg3E8mH4E4ZYQ0qeXX - LAP4240001FkKd0ACj14G0002USfE1E8un@3Uy@10_V001FN5Y0QmAQWA2GhzW7lydnC2SYh - 61Ge5Y32Uy@W7bS5262UqgJEkCU4e3Du@0qUhs_72Uiu0RnlanC2US4GIGI1FQM4Uh4@hr1d - yVmZX6RXO1QiM0QzKd85T2O12osMjD0002QRrsM0000eLRRx0000IjjjT0000g1e000ijQR3 - 0g1eWR29GRRR3001iQ0AG02RRD0A800Rpss0GQ08q9G4ijjjXaaa8tssaHIIY4QRRo299IIi - jPRda899ij6W24RRRN3W1i5IIg1W0DIIIamsci9IIY4OR3s499GIeDRR9ar0eGQ0B8nssEDW - 3w4W0RRRQE9911jjjOdaa4fsscjHIIqaRRssC9HIYRpssAHII2DRRR19999h3qWjDi1baa4W - sMsaGIQM3W18DsseDHI2a4scjjTYaa4RsssEf1010000daaaG0000IIIgK0000999Q20000b - a89H0_P4Xp3F0IIIIVaAK3W1889Dn20G00aa4f10GD08q9G28500g3W09000WIIIam@@RV89 - HIo@l@@a499n@_@VJaaWmx@@@HIIIY@@@@Q0CmZaaKD04Waaa4y@@l7IIIay@x_6IIg1W0BI - IHau@tzF99H2u@d@DaKQ0Bq9G2f1GWFIIIa0008ess6Uu0t1008WjjPQ1000escjj2000esx - 7K000mcjjD0000GsssM004Wesstc00800RRQ_0000XjjPJ0080Xscjj0GQ0BC911ORRRx4mW - Q088um@dAFfOO8hdL223O402000G002fo0G000B@zGZ9cazAAD3OGg05i9O6nziTw1Q88008 - eYb0401KTm522W02UCae1a8unnw4eZG3AeMgB2Uypu4iANvKYygpwH88un@Z6eceE8uMlE_A - 9iU4OgPW426E601201DWub57qNHe1Fswg2C4y8K@0KHmZc04ba8unC0191r372aeaa8P895y - e14a4a8991HMIIAungaWaWK3G3aXaa81994yOP7DOGGG06pbAHT0H80A4ILANM4KmZ@NH118 - 889ZjmYQDA8UnE40995yO744aa89191IYIAG38WaWWK3G1Z2GGW6E09919uHS8080yaH4xCP - GD0K4SlCbCUHmZSK3W120ORrs60040ej60280Wj5yO5C0002UaX67T8unFqms8H2IYLRQRKm - Z5K3W1ejHII30XE1QWQRRRmZ6Ko81Wsss2UCXd088uHGqM99PIej5RBa499nMDjDIh3G0iDI - IaamsT2KHmZGKou11FQY910020GIr08Hd0M8X@@laHA2U44@399GI_@r@Za899_tt@JID04m - @7IYcayVmZRKou51Fo1e0eMjfj0hGaGD0580WsEunz70uumM0gUSC_kf9W000H3uGGGEE00d - N1PGJ3V4uqGH3iGWJ2suudt5SHmzBlIK1HjNOaASkgW61QWM@bsMGmD1FgOS2e6SIDxqbHm9 - M5W6B1FMKm194ye9nnvGmZEq373r0i09809IIIGaWaa2UigQ0u8unl2WEkWJQFuniZjmgq0M - 8un9g10XW7b8GZP2USZ7rGOd6N2UyaI6F8unDg1Gak8ZeaHD2USZQ0K8uH5g10Yk8V8unQg1 - uWW7De6W7SIII2RRRhJ05g1uWW7pf603O9904yu7I0002UidQ0i8uHdg1eaW7@V0W@ZXPiOZ - 79Q0PgLXZkXezniP2Sgce1o8un@ZlQt8lMBun@33x@0q_V005wRtWU4mi_4q2iDsW7ZIGIMI - zZS4yewXK5wfDN6yu@1FcJW6b5q0Q1FwLd074y8LT2GHmZKr9041FMMd064yu@30m7100W10 - _FW6_3UixUph8unfY6WXW7@F0js11014vLPHuTO8Y@7Qm@1ePu00h5So@1FY7891fW7@Fua@ - 3Uy@W7@FuHlh1eYW7Xg6WA2UqgQ0a8uHcg1GaW7T5G00m00@F0WeHDr1010WOOGAQWD2swyG - JHBmfhYJbYI5_98a72Uy@0qgTJ3h33x@G3_Fun@3Ev@W77I2IMISSPq9G1aWWa2Uy@WJ_Fun - @3Uy@W7142qscjD0002PR1FAbbHIoE1WWDTIImZLHQejjJW3CDIIYWSRpM69PmZLHQ408uno - aWy@t9m1ktaa2U4BGKRRsK00w4u08mss1Fsp0096L8630yV0D@7yu@1FAOaNf4yu@1eP8W80 - WWJ_FCi@3Gx@W7@Fun@3UabQ0_8un@31XszZe8ua@3Uy@W7vj602u0006y8LT241nss6TIII - WORR3UCgE1Kmq899IojjW7ngJ0A2UagE1K8unjw4eXW7JU0W@ZXvpOoKV0050200C00G0200 - ANIae1Q8sle2Uy@0q_VdNjZ7nse1IeCX8gv4w0qU3200m00012008uHq1200KTWC7BmHd09i - 4W31dK6MIIoW7LGGIIImZbO99B9EEC8O9957N5O999HGII6KtBMIII4aaW4yOwXK9Om9o555 - H1F_Vq0rGGIIAunI2QOeu4g0200WijjD32001Fw4ijjDR1000assij30q9G1l9QWSQRxT49G - PRRRmZDn689f602K999HYjjLR7a49XosW7H0QIIImZ4Pcaa4XsscjGIor1EGA00G9ZE8D999 - uHgaoz@7ye3C8993Ua8NIIITHgWFIIoR88eaH5W000WfjjDuHYWORRt5f2mQRRr000C0m@1F - _VmZ@F0mfFJNGWJE5dG5VMZGG3b9400eTAP23BZq0ae3F42UqugnL8gzf3Uy@0qOlY262hyh - 0R@x7Lq2EfiuLC8mMbRSqWuukennCg1mZE1SW4aaLGTJ5yu@1qyVm9A6RXM8A993U4Z8MX8G - 3d2UKeTgU8E1Aa0008RRRpa00GmZAm1000ijjTmZSG00ocjjD0G00uW7peBo8UJq0fqssl9I - 0osssI6D8unIqqs6L301osM83U4Zk8NWqssc1III0PRR1FU0saaad0EennDGRRb889XcbjjG - D07GJIYDun7w4uWr1KeaH8qcaa4yeCqaa02Uy39O@@1Fw01IIoI6DenHEq@@GM3G32IIu3Uy - XE1E8un4E8WWW7LG2000assM5000WRRR3Ua320GjhGm0scssw7d8uH50rssM30130yVCCo79 - 9qz8ytrl4LZs91EX620000100HU9M9z@5y8hHGKNaA@7SIFZSgGpC@7qGZjCOG0DD7yufp28 - HmZU7Kt41FcS8LG7yu@7I7HmZU1I2IAsYK2Uq2P898H3SX4a4a0DkG2IIImZhKf080202g18 - Zy0_eanB2USZQ0QG00GRmZfKo851F6Ysss8IGI2QJRR19895yO8bCQ1paa49kjj1FcHD06mm - sMe602mss8L3031FUI9Z94y8Baaa001005yO7bCQXVIIoW75nx@@OD0Auz@V8unEAPCZW7ve - 6030100M3m51FoRuSBD0m@13NUgzvE0W621002SwdE0O8mfg6vFYW7@FuHA@3uX88w0400Gm - 9@t9WE1FIMaAGNGm1P@S2G02W0Q8gTz72USS20G01d0TD1P4y8MIGII2UCcq0I82FFGG2IM3 - 01IJI22UK7Y000131JylJMGWCb1amTDJ4QGL7vqI11nqnnDHT86oIIIcaaanbo3O91fOB69Q - 0X8B985eX91dWcijjD7000WsssQSy0A000DEAHmZQK3W4T2G1RRRRA999x8QWaQRx67h8uHD - g1OYE1kenn4iIIIMo81IIIIKRRR7yO9r0mHd0D4ye2O0000JIIYS00eaH2q0000899Ho00Gm - ZiK3G2T2OXa_@V@B99Io_@BPa0Iz@@_laa89@@x@NIYaazVmZQK307T2CX7IIIa100bCU0GR - RRs2000mjjpQaWW7Bf60Ew40YW7VBGm@3Gx@W6_leCAANoekk29QW92wUjW7PQZj6s0WXW7@ - FgThMjGiWJ_FWc@3Qu@W7nh60BwoqWWJqDgJB2UKA1991r0OHmZX4KND1FQJCCUL306Zhc12 - 02WQ0q8uaAhnMZWJY7300GW6K4Rn6IGIGwhm2WaWar00IW6d0HIIg9Z5Waaaq9m14a442quc - u4S1404GG3tORRRhan9O7004yODT2SnRY6Koe1DEkID0Tq905bCo0ojjjW7NgJ052UiE@III - a_@@3U4fE1Q8un6USuWW7FgJ082Uy@Wj_FeX@70ur0d6CuH1h1OpW7@Fua@Z6udTwiej0fY6 - WZW6eDE1R2Uy@WJ_FunVg18ZW7PIGI2ImZp611E04002ev@WjWDkKh81195agUn9K644Wa8K - 9W04400000IG2200000881H000e60e81900800YW5400C00Im3200C008e1H004e6WdodC1G - RRRs200Aca06000Wijj3h4dE1WW300Gd04KCv4KRRRr9995MvIT2GWjjjDdaaaWsssiJIIYK - RRx9W32hSdE1c8iI5W0000aaa4f00Gna4Ko81aaa43hKdE1cG2@@V_a7uJIIAVI2OIII2_@@ - tF99PBbUK308T2qWFIIoF28eOo4kVW0ijjjA0002haeE1Q8iot60u@sS2jUBq2hy@mA@Fio@ - 3hy@mm8lj0i2YgW226BQ082Tx@mA@Fio@3hikmzc96cp0100C0W502002f2tWJ_FioQ88995 - RX5IGIIYjGfmAXEun@3Uy@W7@V0W@3Uy@W7@Fun@h10tByQ8un@3sw@mMqE0j@3Uy@W7@Fun - @3Ev@WJ_FuHDYjmiW7@FuHKWjjjPB000WqsMd084yONi1IIw4W0LIII1FYbPIII4QRRs299N - 7u0f0001FMcK_@@W7hobaaKd07G_@@t799vD444y8LGijjx4G1OjjjQ00060u@10W@czE2sw - @W7@Fun@3Gx@W7@FUaQ3Du@0Q_Fua@3EH602001F_VCCl6So@1F_VmZ@7y8BT2OGmZ4m1008 - uno0ssss9011Fg5IjjjW7LeaHD2US9O999Iu@@3UyBm@@@k899@8WWW733KRRRD04C0m@308 - VOo26yu@1F_VmZJ32008EXlYPLXW7@FU4v3k@@W7@Fun@3EvgW7@F66z04004So@1F_VD078 - 1999un@3UKgQ088uHog1u0TIII4ORR3UigE1QWGIIImZb1A999uHiw4m0@QIIr0GWFIIoW7n - gJ082Uyuzp8Odv560u@uHQ1200GeEb5DmM1TJn00ElxN11EvK33Li8821F_VD0e4EH41efyT - 6E7yu@Dr_O0Qu52W21F_VmZ@7yeOr0G0989hW7@F22PW0W04E1FvHEHmZ@7yeZIGIIYjm429 - 191FY6WaaaW7J6WqsMd084yONi1IIa4QRt9G11FUbPIIIaQRRs299N70XW793MIIImZOvIII - gJ05SHII6y8MGijj3Uaw10_FWc@3sgk8iweS0i2S2jW7jzol62GRjuuUBun@3EXqG3_FWc@3 - Uy@W7@FUH72Uy@WJ_Fun@ZjOe0DMBuHUXjjj5yu1S0002UiCYjjjgaaa2USB4QRR1FgWK00W - W753KIIYK_@@W75p799vD444yOOmQRRr000C0m@DE_V9zG6tZj1F_VmZ7M30P0C00YjGkMpT - 8un@Z7H_e1QeoX6A8Oh0RbBun@3Uy@W7@FekS0aaa4y8mH3qmIpDKJ3q1Qe5G00WW7@FQ0RG - GGI6y8nT2eGmZaL3m1T2GGmZNr9G3r0GGmZd9X@@Fungw4e1VaaaV4GGmZKr904r0Gm00@7y - u@1F_VmZ@7yu@1ezVmZ@7yOjrdqTmZ@7y8anow0G00WWJK6B99PmZbXbaa4199P4UY5yOo1d - yVm9e6y8o1QiGmZ6t9m11F6Md074yu@1F_@00@7Gp@1RTUmZ@7yu@1F_@00D18008uaoY6ue - u44CI5e3envhGw8uHI3EPxI690IIYImZX5KtQnmCTm9@t9WDHiM6IIIouIBBunnv0004yOP4 - RRR3Uy@W7@V00r0100C0m@LXaJ2QX5DWI1F68G00W0EBFun@3Uy@W7LEGm@xHuo6LGhYYe26 - _S30001dyVm9pWbaaian5889A5yuLO999Zmhi0evj@5R3ir@AAW8f232Uy@66A12PRRmZG08 - 8RBunawYy0sssqx8MWjCIoW7jgJW3ijjbLoO2CrssU2m0RQca81nj3UCBc2001Fwbqa@@I69 - 04@@V9Z6utVIAuHi08WjPRw0ean304KR7yen30yVan@7QWq1ezNmZ@7yu@1F_VmMs7qGsTIw - H@6T4qGevCRLZ9Er5f6L7Onb2x4Ws51dKM9ZP4yuJ1rT2aaaaW7X2W00GGG_6Gp@1dWPi46K - H12aWWaYju1baaanB6KD04G2IoAD0709H95Dm5WaWaY6uYQ0g8unF8080C0m5r0yImZfKoO1 - 4400QS42I000DEk0G00vQ0A0WqsMmZRm0008un4GGijjZ81IijjBPS1qqssG2II4PRR7y86Q - QRZ8199ejjjf603K8995y85KRRR3UK1ORRRs999pQCXW79GYPPRZZ7Onaai6W34QQRp099H2 - RJRD05mos6GIII0RRRhW7JGARRRmZW0GGIgaH4a0004yu2G0003Uq3200Ir0WWK00WW7xGIo - @l@_aaI6L8uH6S@@FquO20V@@RSi0z@FaDEMW3999IyV@1Fg02_@@W71fan62US1Y0000ejj - RSy0HG00DEM010esq0A0YjjTmZA0fjjL300GmZ@73JyhhZMq0SqM050200020044q@1F_V9Z - oLGGP30u1400WW7pAEE42USBW4001rXLii@NG0W92eGe1MIG008eXFZK9faGI8dl52UaA20G - 01s_VmZlmIIIg7E24aab4yuLH3e0199XW7DA88LxVnsW7tEhe7G0006e15nMiImZK0IIGYaa - 0Ki5Eq5P41Qy299912I2254SHD09q9G44aa4YJOcyCm0404Gd0N0200GRRR23000Ct_@_aaa - 8rscAD3000ujj@@B9IIUQqsK0000mx@@V49991DjjjD0C8GG2asssK3W2scsqg1G1D000400 - 0uV000J200OA00W4000aF000Z000O0000Y4999MTb90aaa4Waa4100W108Gaaa4XaaaQ0E09 - 999899fQ001WH0m@JBW4000a00GI078000e1k3WaaaK4H359eGfX6K3G88000h1GX62EO003 - qsssoIIMc3999A1000jjjQpbiP9MIYay0000tcjj5Mijj8III20000ORRR3PPRP444a6W1ej - ibh1O1RRBGr0OW6000o000S900W1000i500Gk000I2WD0AGIIIYRIBBEjjjwijjPtaa89Z4Y - iPRhssRRssUIaaaALIIYPRRRKRRR39999iiaiWsssiqssgbaa49HoYi4RxQ0IGII6TD06810 - 0m5000t200OM000J000a900Wi100ODGG350qca4800W4G2W1080QRIY0088089039S0WW0WA - 4E0IIIY880Wx4K0G00GG774M9101802QmW65MO8W20100i942808162W0991032G08G0Ws58 - 0P0000WWW_08e6W3GG004oW2W000I3G10W04r0eGZ46a602BPMGd07e2ms4JIIY404Wp0A0a - c68IIIexGCGffjPh4A0DjjLaaaKu47eqss_aX3Qfa0JRQar0aWQIIIC100TSI00000e899Y4 - 0000aa81jjLRujhska499sV_@VRrssHpijDHIIIez@@7RRRRmsssC999Hu@@tFsscjfjjL88 - 0n@@VD0ROJII2MIIYA999Y@99Isaa8Pza89JIYa4VYaaGRssMx_ssiPRRxBPRRdjjjj_@jDl - sssCsssizssgjsscjHRxm35msss6ssscPRRR6RRRsORRh103RIIIQRRRjD99HkjjLxca49ps - MjzRIaaORrsU04XdQ1Ery00W6mvCn9KJq0P4y8iXbOGAah5en@9ocsybOaSNB1f_VD0jysW5 - 1QyV0DdlgH3Vjkmb7aKTm4X0SGW6r2X00u81CAleC2000f1Oo4AEqAd61Qe9408W0Ed9GGPY - 0e0WacanOkIKX25m9gnfTm80RCl36H3O1820W10i0G04GJJBcID41qmLCcH4OBV4aaaYjm29 - 899zLq0898e_AMWWWaKD0808999GZN889Az6G11QK1191e0DcG2IIIW6FLZO21QK30110040 - Gv0G040G0004002080022K3GK; - INTEGER CHECKSUM =54783; -ENDDATA; - - -PROCEDURE DO_EXIT USES GV; - IRSTOP IRPAUSE; - DRSTOP DRPAUSE; - IRSCAN 8, $81; - WAIT IDLE, 250 USEC; - IRSCAN 8, $81, CAPTURE BUFF128[7..0]; - IF ( ! (BUFF128[2]==0) ) THEN GOTO Label_0; - IRSTOP IRPAUSE; - DRSTOP DRPAUSE; - IRSCAN 8, $07; - WAIT IDLE, 1 CYCLES; - WAIT IDLE, 200 USEC; - Label_0: - IRSCAN 8, $ff; - WAIT IDLE, 200 USEC; - WAIT RESET, 3 CYCLES; - EXIT STATUS; -ENDPROC; - -PROCEDURE DO_READ_SECURITY USES GV; - IRSTOP IRPAUSE; - DRSTOP DRPAUSE; - IRSCAN 8, $a4; - WAIT IDLE, 3 CYCLES; - DRSCAN 44, $00000000000, CAPTURE SECREG[]; - ULUWE = SECREG[ULUWE_BITLOCATION]; - ULARE = SECREG[ULARE_BITLOCATION]; - ULUPC = SECREG[ULUPC_BITLOCATION]; - ULUFE = SECREG[ULUFE_BITLOCATION]; - ULUFP = SECREG[ULUFP_BITLOCATION]; - ULUFJ = SECREG[ULUFJ_BITLOCATION]; - ULFLR = SECREG[ULFLR_BITLOCATION]; - ULULR = SECREG[ULULR_BITLOCATION]; - ULAWE = SECREG[ULAWE_BITLOCATION]; - ULARD = SECREG[ULARD_BITLOCATION]; - ULOPT[1] = SECREG[ULOPT1_BITLOCATION]; - ULOPT[0] = SECREG[ULOPT0_BITLOCATION]; -ENDPROC; - -PROCEDURE DO_OUTPUT_SECURITY USES GV; - PRINT "Security Settings :"; - IF ( ! (ULUFP==1) ) THEN GOTO Label_1; - PRINT "FlashROM Write/Erase protected by pass key."; - Label_1: - IF ( ! (ULUFJ==1) ) THEN GOTO Label_2; - PRINT "FlashROM Read protected by pass key."; - Label_2: - IF ( ! (ULAWE==1) ) THEN GOTO Label_3; - PRINT "Array Write/Erase protected by pass key."; - Label_3: - IF ( ! (ULARD==1) ) THEN GOTO Label_4; - PRINT "Array Verify protected by pass key."; - Label_4: - IF ( ! (ULUFE==1) ) THEN GOTO Label_5; - PRINT "Encrypted FlashROM Programming Enabled."; - Label_5: - IF ( ! (ULARE==1) ) THEN GOTO Label_6; - PRINT "Encrypted FPGA Array Programming Enabled."; - Label_6: - PRINT "========================================="; -ENDPROC; - -PROCEDURE DO_QUERY_SECURITY USES DO_READ_SECURITY,DO_OUTPUT_SECURITY; - CALL DO_READ_SECURITY; - CALL DO_OUTPUT_SECURITY; -ENDPROC; - -PROCEDURE READ_UROW USES BITSTREAM,GV; - IRSTOP IRPAUSE; - DRSTOP DRPAUSE; - IRSCAN 8, $c0; - WAIT IDLE, 1 CYCLES; - IRSTOP IRPAUSE; - DRSTOP DRPAUSE; - IRSCAN 8, $a8; - WAIT IDLE, 3 CYCLES; - WAIT IDLE, 165 USEC; - DRSCAN 128, $00000000000000000000000000000000, CAPTURE UROW[]; - SUROWALGOVERSION[6..0] = $00; - IF ( ! ( (UROW[5]==0)&&(UROW[0]==1)) ) THEN GOTO Label_7; - SUROWALGOVERSION[5..4] = UROW[24..23]; - Label_7: - IF ( ! ( (UROW[5]==1)&&(UROW[0]==0)) ) THEN GOTO Label_8; - SUROWALGOVERSION[5..4] = UROW[24..23]; - SUROWALGOVERSION[6] = 1; - Label_8: - SUROWCHECKSUM[15..0] = UROW[127..112]; - SUROWCYCLECOUNT = INT(UROW[111..102]); - SUROWDESIGNNAME[69..0] = UROW[101..32]; - SUROWPROGMETHOD[2..0] = UROW[31..29]; - SUROWALGOVERSION[3..0] = UROW[28..25]; - SUROW_PKG_TYPE[5..0] = UROW[22..17]; - SUROW_SW_VERSION[6..0] = UROW[16..10]; - SUROWPROGRAMSW[3..0] = UROW[9..6]; - SUROW_SRAM_DISTURB[0] = UROW[4]; - SUROW_SPEED_GRADE[2..0] = UROW[3..1]; - ACT_UROW_CYCLE_COUNT = SUROWCYCLECOUNT; -ENDPROC; - -PROCEDURE FIX_INT_ARRAYS USES GV; - IF ( ! (HEX[0]!=48) ) THEN GOTO Label_9; - FOR I = 0 TO 7; - TEMP = HEX[I]; - HEX[I] = HEX[(15-I)]; - HEX[(15-I)] = TEMP; - NEXT I; - Label_9: - LABEL_SEPARATOR = 0; -ENDPROC; - -PROCEDURE DISP_CHKSUM_DESIGN USES GV,FIX_INT_ARRAYS; - CALL FIX_INT_ARRAYS; - IF ( ! (INT(SUROWCHECKSUM[15..0])==65535) ) THEN GOTO Label_10; - PRINT "CHECKSUM: "; - Label_10: - IF ( ! (INT(SUROWCHECKSUM[15..0])!=65535) ) THEN GOTO Label_11; - PRINT "CHECKSUM: ",CHR$(HEX[INT(SUROWCHECKSUM[15..12])]),CHR$(HEX[INT(SUROWCHECKSUM[11..8])]) - ,CHR$(HEX[INT(SUROWCHECKSUM[7..4])]),CHR$(HEX[INT(SUROWCHECKSUM[3..0])]); - Label_11: - IF ( ! ( ( (INT(SUROWDESIGNNAME[0..30])==2147483647)&&(INT(SUROWDESIGNNAME[31..61])==2147483647))&&(INT(SUROWDESIGNNAME[62..69])==255)) ) THEN GOTO Label_12; - PRINT "Design Name: "; - Label_12: - IF ( ! ( ( (INT(SUROWDESIGNNAME[0..30])!=2147483647)||(INT(SUROWDESIGNNAME[31..61])!=2147483647))||(INT(SUROWDESIGNNAME[62..69])!=255)) ) THEN GOTO Label_13; - PRINT "Design Name: ",CHR$(INT(SUROWDESIGNNAME[63..69])),CHR$(INT(SUROWDESIGNNAME[56..62])) - ,CHR$(INT(SUROWDESIGNNAME[49..55])),CHR$(INT(SUROWDESIGNNAME[42..48])),CHR$(INT(SUROWDESIGNNAME[35..41])) - ,CHR$(INT(SUROWDESIGNNAME[28..34])),CHR$(INT(SUROWDESIGNNAME[21..27])),CHR$(INT(SUROWDESIGNNAME[14..20])) - ,CHR$(INT(SUROWDESIGNNAME[7..13])),CHR$(INT(SUROWDESIGNNAME[0..6])); - Label_13: - LABEL_SEPARATOR = 0; -ENDPROC; - -PROCEDURE DISPLAY_UROW USES BITSTREAM,CONSTBLOCK,GV,DISP_CHKSUM_DESIGN; - EXPORT "USER_ROW", UROW[127..0]; - PRINT "User information: "; - CALL DISP_CHKSUM_DESIGN; - IF ( ! (FLAGDISPLAYCYC==1) ) THEN GOTO Label_14; - PRINT "CYCLE COUNT: ",SUROWCYCLECOUNT; - Label_14: - INTEGER TMPINT =INT(SUROWPROGMETHOD[]); - INTEGER TMPINT2 =0; - INTEGER TMPINT3 =0; - INTEGER TMPINT4 =0; - INTEGER TMPINT5 =0; - IF ( ! (TMPINT==IEEE1532) ) THEN GOTO Label_15; - PRINT "Programming Method: IEEE1532"; - Label_15: - IF ( ! (TMPINT==STAPL) ) THEN GOTO Label_16; - PRINT "Programming Method: STAPL"; - Label_16: - IF ( ! (TMPINT==DIRECTC) ) THEN GOTO Label_17; - PRINT "Programming Method: DirectC"; - Label_17: - IF ( ! (TMPINT==PDB) ) THEN GOTO Label_18; - PRINT "Programming Method: PDB"; - Label_18: - IF ( ! (TMPINT==SVF) ) THEN GOTO Label_19; - PRINT "Programming Method: SVF"; - Label_19: - PRINT "Algorithm Version: ",INT(SUROWALGOVERSION[6..0]); - TMPINT = INT(SUROW_SPEED_GRADE[]); - IF ( ! (TMPINT==GRADE_UNSPEC) ) THEN GOTO Label_20; - PRINT "Device Speed Grade: speed grade information not available from device"; - Label_20: - IF ( ! (TMPINT==GRADE_1) ) THEN GOTO Label_21; - PRINT "Device Speed Grade: -1"; - Label_21: - IF ( ! (TMPINT==GRADE_2) ) THEN GOTO Label_22; - PRINT "Device Speed Grade: -2"; - Label_22: - IF ( ! (TMPINT==GRADE_3) ) THEN GOTO Label_23; - PRINT "Device Speed Grade: -3"; - Label_23: - IF ( ! (TMPINT==GRADE_F) ) THEN GOTO Label_24; - PRINT "Device Speed Grade: -F"; - Label_24: - IF ( ! (TMPINT==GRADE_STD) ) THEN GOTO Label_25; - PRINT "Device Speed Grade: STD"; - Label_25: - IF ( ! (TMPINT==GRADE_4) ) THEN GOTO Label_26; - PRINT "Device Speed Grade: -4"; - Label_26: - IF ( ! (TMPINT==GRADE_UNDEF) ) THEN GOTO Label_27; - PRINT "Device Speed Grade: speed grade information not available from device"; - Label_27: - TMPINT = INT(SUROWPROGRAMSW[]); - IF ( ! (TMPINT==FP) ) THEN GOTO Label_28; - PRINT "Programmer: FlashPro"; - Label_28: - IF ( ! (TMPINT==FPLITE) ) THEN GOTO Label_29; - PRINT "Programmer: FlashPro Lite"; - Label_29: - IF ( ! (TMPINT==FP3) ) THEN GOTO Label_30; - PRINT "Programmer: FlashPro3"; - Label_30: - IF ( ! (TMPINT==FP4) ) THEN GOTO Label_31; - PRINT "Programmer: FlashPro4"; - Label_31: - IF ( ! (TMPINT==SCULPTW) ) THEN GOTO Label_32; - PRINT "Programmer: Sculptor WIN"; - Label_32: - IF ( ! (TMPINT==BPW) ) THEN GOTO Label_33; - PRINT "Programmer: BP Programmer"; - Label_33: - IF ( ! (TMPINT==DIRECTCP) ) THEN GOTO Label_34; - PRINT "Programmer: DirectC"; - Label_34: - IF ( ! (TMPINT==STP) ) THEN GOTO Label_35; - PRINT "Programmer: Actel JAM Player"; - Label_35: - IF ( ! ( ( ( (TMPINT==FP)||(TMPINT==FPLITE))||(TMPINT==FP3))||(TMPINT==FP4)) ) THEN GOTO Label_51; - TMPINT2 = INT(SUROW_SW_VERSION[]); - IF ( ! (TMPINT2==FP33) ) THEN GOTO Label_36; - PRINT "Software: FlashPro v3.3"; - Label_36: - IF ( ! (TMPINT2==FP34) ) THEN GOTO Label_37; - PRINT "Software: FlashPro v3.4"; - Label_37: - IF ( ! (TMPINT2==FP40) ) THEN GOTO Label_38; - PRINT "Software: FlashPro v4.0"; - Label_38: - IF ( ! (TMPINT2==FP41) ) THEN GOTO Label_39; - PRINT "Software: FlashPro v4.1"; - Label_39: - IF ( ! (TMPINT2==FP42) ) THEN GOTO Label_40; - PRINT "Software: FlashPro v4.2"; - Label_40: - IF ( ! (TMPINT2==FP50) ) THEN GOTO Label_41; - PRINT "Software: FlashPro v5.0"; - Label_41: - IF ( ! (TMPINT2==FP51) ) THEN GOTO Label_42; - PRINT "Software: FlashPro v5.1"; - Label_42: - IF ( ! (TMPINT2==FP60) ) THEN GOTO Label_43; - PRINT "Software: FlashPro v6.0"; - Label_43: - IF ( ! (TMPINT2==FP61) ) THEN GOTO Label_44; - PRINT "Software: FlashPro v6.1"; - Label_44: - IF ( ! (TMPINT2==FP62) ) THEN GOTO Label_45; - PRINT "Software: FlashPro v6.2"; - Label_45: - IF ( ! (TMPINT2==FP84) ) THEN GOTO Label_46; - PRINT "Software: FlashPro v8.4"; - Label_46: - IF ( ! (TMPINT2==FP85) ) THEN GOTO Label_47; - PRINT "Software: FlashPro v8.5"; - Label_47: - IF ( ! (TMPINT2==FP86) ) THEN GOTO Label_48; - PRINT "Software: FlashPro v8.6"; - Label_48: - IF ( ! (TMPINT2==FP90) ) THEN GOTO Label_49; - PRINT "Software: FlashPro v9.0"; - Label_49: - IF ( ! (TMPINT2==FP91) ) THEN GOTO NOT_FP91; - PRINT "Software: FlashPro v9.1"; - NOT_FP91: - IF ( ! (TMPINT2==FP100) ) THEN GOTO NOT_FP100; - PRINT "Software: FlashPro v10.0"; - NOT_FP100: - IF ( ! (TMPINT2==FP_11) ) THEN GOTO NOT_FP_11; - PRINT "Software: FlashPro v11.0"; - NOT_FP_11: - IF ( ! (TMPINT2==FP_11_1) ) THEN GOTO NOT_FP_11_1; - PRINT "Software: FlashPro v11.1"; - NOT_FP_11_1: - IF ( ! (TMPINT2==FP_11_2) ) THEN GOTO NOT_FP_11_2; - PRINT "Software: FlashPro v11.2"; - NOT_FP_11_2: - IF ( ! (TMPINT2==FP_11_3) ) THEN GOTO NOT_FP_11_3; - PRINT "Software: FlashPro v11.3"; - NOT_FP_11_3: - IF ( ! (TMPINT2==UNKNOWN) ) THEN GOTO Label_50; - PRINT "Software: FlashPro vX.X"; - Label_50: - LABEL_SEPARATOR = 0; - Label_51: - IF ( ! ( (TMPINT==SCULPTW)||(TMPINT==BPW)) ) THEN GOTO Label_55; - TMPINT3 = (INT(SUROW_SW_VERSION[6..5])+SCULPTORMAJORBASE); - TMPINT4 = (INT(SUROW_SW_VERSION[4..1])+SCULPTORMINORBASE); - TMPINT5 = 0; - IF ( ! (SUROW_SW_VERSION[0]==1) ) THEN GOTO Label_52; - TMPINT5 = 1; - Label_52: - INTEGER CURRPGM =INT(ACT_UROW_PROGRAM_SW[3..0]); - IF ( ! (TMPINT==SCULPTW) ) THEN GOTO Label_53; - IF ( ! ( (CURRPGM==FP3)||(CURRPGM==FP4)) ) THEN GOTO NOT_FP3_FP4; - PRINT "NOTE: The Sculptor Windows version number below should be converted to HEX."; - NOT_FP3_FP4: - PRINT "Software: Sculptor Win v",TMPINT3,".",TMPINT4,".",TMPINT5; - Label_53: - IF ( ! (TMPINT==BPW) ) THEN GOTO Label_54; - IF ( ! ( (CURRPGM==FP3)||(CURRPGM==FP4)) ) THEN GOTO NOT_FP3_FP4_BPW; - PRINT "NOTE: The BP Windows version number below should be converted to HEX."; - NOT_FP3_FP4_BPW: - PRINT "Software: BP Win v",TMPINT3,".",TMPINT4,".",TMPINT5; - Label_54: - LABEL_SEPARATOR = 0; - Label_55: - PRINT "========================================="; -ENDPROC; - -PROCEDURE READ_F_ROW USES GV; - IRSTOP IRPAUSE; - DRSTOP DRPAUSE; - IRSCAN 8, $c0; - WAIT IDLE, 1 CYCLES; - IRSTOP IRPAUSE; - DRSTOP DRPAUSE; - IRSCAN 8, $f9; - DRSCAN 3, FADDR[]; - WAIT IDLE, 1 CYCLES; - IRSTOP IRPAUSE; - DRSTOP DRPAUSE; - IRSCAN 8, $bf; - WAIT IDLE, 3 CYCLES; - WAIT IDLE, 165 USEC; - DRSCAN 128, $00000000000000000000000000000000, CAPTURE BUFF128[]; -ENDPROC; - -PROCEDURE DO_DEVICE_INFO USES GV,READ_UROW,DISPLAY_UROW,READ_F_ROW; - IRSTOP IRPAUSE; - DRSTOP DRPAUSE; - IRSCAN 8, $0e; - WAIT IDLE, 1 CYCLES; - DRSCAN 32, $00000000, CAPTURE BUFF32[]; - EXPORT "SILSIG", BUFF32[]; - IRSCAN 8, $84, CAPTURE BUFF128[7..0]; - IF ( ! (BUFF128[2]==1) ) THEN GOTO CORE_NOT_ENABLED; - PRINT "FPGA Array is programmed and enabled."; - CORE_NOT_ENABLED: - IF ( ! (BUFF128[2]==0) ) THEN GOTO CORE_ENABLED; - PRINT "FPGA Array is not enabled."; - CORE_ENABLED: - CALL READ_UROW; - CALL DISPLAY_UROW; - FADDR[] = $0; - CALL READ_F_ROW; - EXPORT "FSN", BUFF128[55..8]; - PRINT "========================================="; -ENDPROC; - -PROCEDURE INIT_AES; - IRSTOP IRPAUSE; - DRSTOP DRPAUSE; - IRSCAN 8, $dd; - DRSCAN 128, $00000000000000000000000000000000; - WAIT IDLE, 3 CYCLES; - WAIT IDLE, 165 USEC; -ENDPROC; - -PROCEDURE DO_VERIFY_DEVICE_INFO USES GV,BITSTREAM,DO_EXIT,DO_READ_SECURITY,READ_UROW - ,DISP_CHKSUM_DESIGN; - CALL READ_UROW; - CALL DISP_CHKSUM_DESIGN; - CALL DO_READ_SECURITY; - BUFF32[31..0] = BOOL(CHECKSUM); - UROW[127..112] = BUFF32[15..0]; - UROW[101..32] = ACT_UROW_DESIGN_NAME[69..0]; - IRSTOP IRPAUSE; - DRSTOP DRPAUSE; - IRSCAN 8, $c0; - WAIT IDLE, 1 CYCLES; - IRSTOP IRPAUSE; - DRSTOP DRPAUSE; - IRSCAN 8, $a8; - WAIT IDLE, 3 CYCLES; - WAIT IDLE, 165 USEC; - DRSCAN 128, $00000000000000000000000000000000,COMPARE UROW[],$ffff003fffffffffffffffff00000000 - ,PASS; - IF ( ! (PASS==0) ) THEN GOTO UROW_CMP_OK; - STATUS = -43; - PRINT "Failed to verify design information."; - UNIQUEEXITCODE = 32772; - BUFF128[15..0] = BOOL(UNIQUEEXITCODE); - EXPORT "ERROR_CODE", BUFF128[15..0]; - CALL DO_EXIT; - UROW_CMP_OK: - LABEL_SEPARATOR = 0; -ENDPROC; - -PROCEDURE READ_IDCODE_ONLY USES GV; - IRSTOP IRPAUSE; - DRSTOP DRPAUSE; - IRSCAN 8, $0f; - WAIT IDLE, 1 CYCLES; - DRSCAN 32, $00000000, CAPTURE ID[]; - EXPORT "IDCODE", ID[]; -ENDPROC; - -PROCEDURE VERIFY_RLOCK USES GV; - IRSCAN 8, $84,COMPARE $04,$04,PASS; -ENDPROC; - -PROCEDURE DO_VERIFY_PGM_RLOCK USES GV,DO_EXIT,VERIFY_RLOCK; - CALL VERIFY_RLOCK; - IF ( ! (PASS==0) ) THEN GOTO RLOCK_PGM_PASS; - STATUS = 10; - PRINT "Failed to enable FPGA Array."; - UNIQUEEXITCODE = 32891; - BUFF128[15..0] = BOOL(UNIQUEEXITCODE); - EXPORT "ERROR_CODE", BUFF128[15..0]; - CALL DO_EXIT; - RLOCK_PGM_PASS: - LABEL_SEPARATOR = 0; -ENDPROC; - -PROCEDURE DO_VERIFY_RLOCK USES GV,DO_EXIT,VERIFY_RLOCK; - CALL VERIFY_RLOCK; - IF ( ! (PASS==0) ) THEN GOTO RLOCK_VERIFY_PASS; - STATUS = 11; - PRINT "FPGA Array is not enabled."; - UNIQUEEXITCODE = 32892; - BUFF128[15..0] = BOOL(UNIQUEEXITCODE); - EXPORT "ERROR_CODE", BUFF128[15..0]; - CALL DO_EXIT; - RLOCK_VERIFY_PASS: - LABEL_SEPARATOR = 0; -ENDPROC; - -PROCEDURE VERIFY_ID_DMK USES GV,DO_EXIT,INIT_AES; - CALL INIT_AES; - IRSTOP IRPAUSE; - DRSTOP DRPAUSE; - IRSCAN 8, $0a; - DRSCAN 128, M7BUFF[]; - WAIT IDLE, 3 CYCLES; - WAIT IDLE, 90 USEC; - DRSCAN 128, $00000000000000000000000000000000, CAPTURE BUFF128[],COMPARE $c0000000000000000000000000000000 - ,$c0000000000000000000000000000000,PASS; - IF ( ! (BUFF128[127]==0) ) THEN GOTO M7VERDONE; - STATUS = -31; - PRINT "Failed to verify AES Sec."; - UNIQUEEXITCODE = 32775; - BUFF128[15..0] = BOOL(UNIQUEEXITCODE); - EXPORT "ERROR_CODE", BUFF128[15..0]; - CALL DO_EXIT; - M7VERDONE: - IF ( ! ( (BUFF128[126]==0)||(BM7DEVICE==0)) ) THEN GOTO MXIDOK; - IF ( ! ( (BUFF128[126]==1)&&(BM7DEVICE==0)) ) THEN GOTO LDETECTM1; - STATUS = 6; - PRINT "Failed to verify IDCODE."; - PRINT "Target is an M7 device."; - UNIQUEEXITCODE = 32776; - BUFF128[15..0] = BOOL(UNIQUEEXITCODE); - EXPORT "ERROR_CODE", BUFF128[15..0]; - CALL DO_EXIT; - LDETECTM1: - IF ( ! (BUFF128[126]==0) ) THEN GOTO Label_58; - IRSTOP IRPAUSE; - DRSTOP DRPAUSE; - IRSCAN 8, $0a; - DRSCAN 128, M1BUFF[]; - WAIT IDLE, 3 CYCLES; - WAIT IDLE, 90 USEC; - DRSCAN 128, $00000000000000000000000000000000, CAPTURE BUFF128[],COMPARE $c0000000000000000000000000000000 - ,$c0000000000000000000000000000000,PASS; - IF ( ! (BUFF128[127]==0) ) THEN GOTO M1VERDONE; - STATUS = -31; - PRINT "Failed to verify AES Sec."; - UNIQUEEXITCODE = 32777; - BUFF128[15..0] = BOOL(UNIQUEEXITCODE); - EXPORT "ERROR_CODE", BUFF128[15..0]; - CALL DO_EXIT; - M1VERDONE: - BOOLEAN BTMPBUFFBIT126 = BUFF128[126]; - IF ( ! ( (BTMPBUFFBIT126==1)&&(BM1DEVICE==0)) ) THEN GOTO REGDEV; - STATUS = 6; - PRINT "Failed to verify IDCODE."; - PRINT "Target is an M1 device."; - UNIQUEEXITCODE = 32778; - BUFF128[15..0] = BOOL(UNIQUEEXITCODE); - EXPORT "ERROR_CODE", BUFF128[15..0]; - CALL DO_EXIT; - REGDEV: - IF ( ! ( (BTMPBUFFBIT126==0)&&(BM7DEVICE==1)) ) THEN GOTO Label_56; - STATUS = 6; - PRINT "Failed to verify IDCODE."; - PRINT "The Target is not an M7 Device."; - UNIQUEEXITCODE = 32781; - BUFF128[15..0] = BOOL(UNIQUEEXITCODE); - EXPORT "ERROR_CODE", BUFF128[15..0]; - CALL DO_EXIT; - Label_56: - IF ( ! ( (BTMPBUFFBIT126==0)&&(BM1DEVICE==1)) ) THEN GOTO Label_57; - STATUS = 6; - PRINT "Failed to verify IDCODE."; - PRINT "The Target is not an M1 Device."; - UNIQUEEXITCODE = 32782; - BUFF128[15..0] = BOOL(UNIQUEEXITCODE); - EXPORT "ERROR_CODE", BUFF128[15..0]; - CALL DO_EXIT; - Label_57: - LABEL_SEPARATOR = 0; - Label_58: - LABEL_SEPARATOR = 0; - MXIDOK: - LABEL_SEPARATOR = 0; -ENDPROC; - -PROCEDURE VERIFY_IDCODE USES GV,PARAMETERS,DO_EXIT; - FREQUENCY (FREQ*1000000); - WAIT RESET, 5 CYCLES; - IRSTOP IRPAUSE; - DRSTOP DRPAUSE; - IRSCAN 8, $0f; - DRSCAN 32, $00000000; - WAIT IDLE, 1 CYCLES; - DRSCAN 32, $00000000, CAPTURE ID[],COMPARE IDCODEVALUE[],IDMASK[],PASS; - IF ( ! (PASS==0) ) THEN GOTO IDOK; - STATUS = 6; - PRINT "Failed to verify IDCODE"; - UNIQUEEXITCODE = 32797; - BUFF128[15..0] = BOOL(UNIQUEEXITCODE); - EXPORT "ERROR_CODE", BUFF128[15..0]; - CALL DO_EXIT; - IDOK: - IDREV = INT(ID[31..28]); - IDFAB = INT(ID[24..24]); -ENDPROC; - -PROCEDURE IS_SECOK USES GV,DO_EXIT; - IF ( ! (SECKEY_OK==0) ) THEN GOTO SECOK; - STATUS = -35; - PRINT "Failed to match pass key."; - UNIQUEEXITCODE = 32799; - BUFF128[15..0] = BOOL(UNIQUEEXITCODE); - EXPORT "ERROR_CODE", BUFF128[15..0]; - CALL DO_EXIT; - SECOK: - LABEL_SEPARATOR = 0; -ENDPROC; - -PROCEDURE DO_CHECK_R USES GV,DO_EXIT,DO_READ_SECURITY; - CALL DO_READ_SECURITY; - IF ( ! (ULARE==1) ) THEN GOTO ARRAYEPR; - STATUS = -33; - PRINT "FPGA Array Encryption is enforced. Plain text verification is prohibited."; - UNIQUEEXITCODE = 32800; - BUFF128[15..0] = BOOL(UNIQUEEXITCODE); - EXPORT "ERROR_CODE", BUFF128[15..0]; - CALL DO_EXIT; - ARRAYEPR: - IF ( ! (ULARD==1) ) THEN GOTO SKIPRCHK1; - STATUS = -30; - PRINT "FPGA Array Verification is protected by pass key."; - PRINT "A valid pass key needs to be provided."; - UNIQUEEXITCODE = 32804; - BUFF128[15..0] = BOOL(UNIQUEEXITCODE); - EXPORT "ERROR_CODE", BUFF128[15..0]; - CALL DO_EXIT; - SKIPRCHK1: - IF ( ! (ULARD==0) ) THEN GOTO Label_59; - CHKSEC = 0; - Label_59: - LABEL_SEPARATOR = 0; -ENDPROC; - -PROCEDURE DO_CHECK_W USES GV,DO_EXIT,DO_READ_SECURITY; - CALL DO_READ_SECURITY; - IF ( ! (ULAWE==1) ) THEN GOTO ARRAYWP; - STATUS = -28; - PRINT "FPGA Array Write/Erase is protected by pass key."; - PRINT "A valid pass key needs to be provided."; - UNIQUEEXITCODE = 32805; - BUFF128[15..0] = BOOL(UNIQUEEXITCODE); - EXPORT "ERROR_CODE", BUFF128[15..0]; - CALL DO_EXIT; - ARRAYWP: - IF ( ! (ULARD==1) ) THEN GOTO ARRAYRPW; - STATUS = -30; - PRINT "FPGA Array Verification is protected by pass key."; - PRINT "A valid pass key needs to be provided."; - UNIQUEEXITCODE = 32806; - BUFF128[15..0] = BOOL(UNIQUEEXITCODE); - EXPORT "ERROR_CODE", BUFF128[15..0]; - CALL DO_EXIT; - ARRAYRPW: - IF ( ! (ULARE==1) ) THEN GOTO ARRAYEPW; - STATUS = -33; - PRINT "FPGA Array Encryption is enforced. Plain text programming is prohibited."; - CALL DO_EXIT; - ARRAYEPW: - LABEL_SEPARATOR = 0; -ENDPROC; - -PROCEDURE BP_VER USES GV; - BOOLEAN PLAYER_VERSION_BOOLEAN[32]; - PLAYER_VERSION_BOOLEAN[31..0] = BOOL(PLAYERVERSIONVARIABLE); - INTEGER PLAYER_MAJOR_VERSION =(INT(PLAYER_VERSION_BOOLEAN[23..16])-SCULPTORMAJORBASE); - INTEGER PLAYER_MINOR_VERSION =(INT(PLAYER_VERSION_BOOLEAN[15..8])-SCULPTORMINORBASE); - ACT_UROW_SW_VERSION[6..5] = BOOL(PLAYER_MAJOR_VERSION); - ACT_UROW_SW_VERSION[4..1] = BOOL(PLAYER_MINOR_VERSION); - ACT_UROW_SW_VERSION[0] = PLAYER_VERSION_BOOLEAN[0]; - ACT_UROW_PROGRAM_SW[3..0] = BOOL(PLAYERVERSIONSWVARIABLE); -ENDPROC; - -PROCEDURE POLL_PROGRAM USES GV; - INTEGER ILOOP_0; - FOR ILOOP_0 = 16381 - 1 TO 0 STEP -1; - IRSTOP IRPAUSE; - DRSTOP DRPAUSE; - IRSCAN 8, $84; - WAIT IDLE, 1 CYCLES; - WAIT IDLE, 100 USEC; - DRSCAN 5, $00,COMPARE $00,$0b,PASS; - IF PASS THEN ILOOP_0 = 0; - NEXT ILOOP_0; -ENDPROC; - -PROCEDURE SET_PRG_ARRAY USES GV; - ISPRGARRAY = 1; -ENDPROC; - -PROCEDURE DO_INITIALIZE USES GV,DO_EXIT,READ_F_ROW,VERIFY_ID_DMK,DO_CHECK_R,DO_CHECK_W - ,BP_VER; - IRSTOP IRPAUSE; - DRSTOP DRPAUSE; - IRSCAN 8, $7f; - WAIT IDLE, 3 CYCLES; - WAIT IDLE, 50 USEC; - BSR[563..0] = BSRPATTERN[563..0]; - BOOLEAN SHIFT_DATA[564]; - IRSCAN 8, $01; - DRSCAN 564, BSR[]; - WAIT IDLE, 1 CYCLES; - DRSCAN 564, SHIFT_DATA[], CAPTURE SAMPLE_DEVICE[]; - FOR I = 0 TO 563; - IF ( ! (SAMPLEMASK[I]==1) ) THEN GOTO Label_60; - BSR[I] = SAMPLE_DEVICE[I]; - Label_60: - LABEL_SEPARATOR = 0; - NEXT I; - IRSTOP IRPAUSE; - DRSTOP DRPAUSE; - IRSCAN 8, $01; - DRSCAN 564, BSR[]; - WAIT IDLE, 1 CYCLES; - IRSTOP IRPAUSE; - DRSTOP DRPAUSE; - IRSCAN 8, $c0; - WAIT IDLE, 1 CYCLES; - IRSTOP IRPAUSE; - DRSTOP DRPAUSE; - IRSCAN 8, $80; - DRSCAN 18, $00000; - WAIT IDLE, 3 CYCLES; - WAIT IDLE, 1875 USEC; - DRSCAN 18, $00000, CAPTURE ISC_CONFIG_RESULT[],COMPARE $30000,$30000,PASS; - IF ( ! (PASS==0) ) THEN GOTO CRCOK; - STATUS = 5; - PRINT "Failed to enter programming mode."; - EXPORT "ISC_Config_Result", ISC_CONFIG_RESULT[]; - UNIQUEEXITCODE = 32850; - BUFF128[15..0] = BOOL(UNIQUEEXITCODE); - EXPORT "ERROR_CODE", BUFF128[15..0]; - CALL DO_EXIT; - CRCOK: - FADDR[] = $0; - CALL READ_F_ROW; - EXPORT "FSN", BUFF128[55..8]; - CALL VERIFY_ID_DMK; - IF ( ! (CHKARRAY==1) ) THEN GOTO SKIPCHKARRAY; - IF ( ! (ARRAYRONLY==0) ) THEN GOTO Label_61; - CALL DO_CHECK_W; - Label_61: - IF ( ! (ARRAYRONLY==1) ) THEN GOTO Label_62; - CALL DO_CHECK_R; - Label_62: - LABEL_SEPARATOR = 0; - SKIPCHKARRAY: - IF ( ! (PLAYERVERSIONVARIABLE!=0) ) THEN GOTO Label_63; - CALL BP_VER; - Label_63: - LABEL_SEPARATOR = 0; -ENDPROC; - -PROCEDURE READ_INITIALIZE USES GV,DO_INITIALIZE; - CHKFROM = 0; - CHKARRAY = 0; - CHKNVM = 0; - CHKSEC = 0; - CALL DO_INITIALIZE; -ENDPROC; - -PROCEDURE NW_INITIALIZE_COMMON USES GV; - CHKFROM = 0; - CHKARRAY = 0; -ENDPROC; - -PROCEDURE NW_INITIALIZE USES DO_INITIALIZE,NW_INITIALIZE_COMMON; - CALL NW_INITIALIZE_COMMON; - CALL DO_INITIALIZE; -ENDPROC; - -PROCEDURE NR_INITIALIZE_COMMON USES GV; - CHKFROM = 0; - CHKARRAY = 0; -ENDPROC; - -PROCEDURE NR_INITIALIZE USES DO_INITIALIZE,NR_INITIALIZE_COMMON; - CALL NR_INITIALIZE_COMMON; - CALL DO_INITIALIZE; -ENDPROC; - -PROCEDURE AW_INITIALIZE USES GV,DO_INITIALIZE; - ARRAYRONLY = 0; - CHKFROM = 0; - CHKARRAY = 1; - CHKNVM = 0; - CALL DO_INITIALIZE; -ENDPROC; - -PROCEDURE AR_INITIALIZE USES GV,DO_INITIALIZE; - ARRAYRONLY = 1; - CHKFROM = 0; - CHKARRAY = 1; - CHKNVM = 0; - CALL DO_INITIALIZE; -ENDPROC; - -PROCEDURE W_INITIALIZE USES GV,DO_INITIALIZE; - ARRAYRONLY = 0; - CHKARRAY = 1; - CALL DO_INITIALIZE; -ENDPROC; - -PROCEDURE R_INITIALIZE USES GV,DO_INITIALIZE; - ARRAYRONLY = 1; - CHKARRAY = 1; - CALL DO_INITIALIZE; -ENDPROC; - -PROCEDURE INITIALIZE USES GV,DO_INITIALIZE; - ARRAYRONLY = 0; - FROMRONLY = 0; - CHKFROM = 1; - CHKARRAY = 1; - CALL DO_INITIALIZE; -ENDPROC; - -PROCEDURE POLL_ERASE USES GV; - PASS = 0; - INTEGER ILOOP_1; - FOR ILOOP_1 = 262141 - 1 TO 0 STEP -1; - IRSTOP IRPAUSE; - DRSTOP DRPAUSE; - IRSCAN 8, $84; - WAIT IDLE, 1 CYCLES; - WAIT IDLE, 1000 USEC; - DRSCAN 5, $00,COMPARE $00,$03,PASS; - IF PASS THEN ILOOP_1 = 0; - NEXT ILOOP_1; -ENDPROC; - -PROCEDURE UFROM_DISTURB USES GV; - FOR FROMROWNUMBER = NUMBEROFFROMROWS TO 1 STEP -1; - IRSTOP IRPAUSE; - DRSTOP DRPAUSE; - IRSCAN 8, $9f; - DRSCAN 3, BOOL((FROMROWNUMBER-1)); - WAIT IDLE, 1 CYCLES; - IRSTOP IRPAUSE; - DRSTOP DRPAUSE; - IRSCAN 8, $9b; - DRSCAN 128, $ffffffffffffffffffffffffffffffff; - WAIT IDLE, 5 CYCLES; - WAIT IDLE, 10000 USEC; - NEXT FROMROWNUMBER; -ENDPROC; - -PROCEDURE PROGRAM_UROW USES GV,BITSTREAM,DO_EXIT,POLL_PROGRAM; - IF ( ! (ISERASEONLY==0) ) THEN GOTO SKIP_CYC_INCREMENT; - IF ( ! (ISPRGARRAY==1) ) THEN GOTO NOT_PGM_ARRAY; - IF ( ! ( ( ( (INT(UROW[31..0])==-1)&&(INT(UROW[63..32])==-1))&&(INT(UROW[95..64])==-1))&&(INT(UROW[127..96])==-1)) ) THEN GOTO NOT_CORRUPTED_CYCLE_COUNT; - ACT_UROW_CYCLE_COUNT = 0; - NOT_CORRUPTED_CYCLE_COUNT: - IF ( ! (ACT_UROW_CYCLE_COUNT<1000) ) THEN GOTO MAX_CYCLE_COUNT; - ACT_UROW_CYCLE_COUNT = (ACT_UROW_CYCLE_COUNT+1); - MAX_CYCLE_COUNT: - LABEL_SEPARATOR = 0; - NOT_PGM_ARRAY: - LABEL_SEPARATOR = 0; - SKIP_CYC_INCREMENT: - IF ( ! (ISERASEONLY==1) ) THEN GOTO Label_64; - UROW[] = $ffffffffffffffffffffffffffffffff; - Label_64: - IF ( ! ( (ISERASEONLY==0)||(ISRESTOREDESIGN==1)) ) THEN GOTO SKIP_DESIGN_INFO; - BUFF32[31..0] = BOOL(CHECKSUM); - IF ( ! ( !ISRESTOREDESIGN) ) THEN GOTO Label_65; - UROW[127..112] = BUFF32[15..0]; - Label_65: - IF ( ! ISRESTOREDESIGN ) THEN GOTO Label_66; - UROW[127..112] = SUROWCHECKSUM[15..0]; - Label_66: - IF ( ! ( !ISRESTOREDESIGN) ) THEN GOTO Label_67; - UROW[101..32] = ACT_UROW_DESIGN_NAME[69..0]; - Label_67: - IF ( ! ISRESTOREDESIGN ) THEN GOTO Label_68; - UROW[101..32] = SUROWDESIGNNAME[69..0]; - Label_68: - LABEL_SEPARATOR = 0; - SKIP_DESIGN_INFO: - BUFF32[31..0] = BOOL(ACT_UROW_CYCLE_COUNT); - UROW[111..102] = BUFF32[9..0]; - UROW[31..29] = ACT_UROW_PROG_METHOD[2..0]; - UROW[28..25] = ACT_UROW_ALGO_VERSION[3..0]; - UROW[16..10] = ACT_UROW_SW_VERSION[6..0]; - UROW[9..6] = ACT_UROW_PROGRAM_SW[3..0]; - UROW[4] = SUROW_SRAM_DISTURB[0]; - IF ( ! (ACT_UROW_ALGO_VERSION[6]==1) ) THEN GOTO Label_69; - UROW[5] = 1; - UROW[0] = 0; - UROW[24..23] = ACT_UROW_ALGO_VERSION[5..4]; - Label_69: - IF ( ! (ACT_UROW_ALGO_VERSION[6]==0) ) THEN GOTO Label_70; - UROW[5] = 0; - UROW[0] = 1; - UROW[24..23] = ACT_UROW_ALGO_VERSION[5..4]; - Label_70: - IRSTOP IRPAUSE; - DRSTOP DRPAUSE; - IRSCAN 8, $a7; - DRSCAN 128, UROW[]; - WAIT IDLE, 15 CYCLES; - CALL POLL_PROGRAM; - IF ( ! (PASS==0) ) THEN GOTO PROGRAM_OK3; - STATUS = -24; - PRINT "Failed to program UROW"; - UNIQUEEXITCODE = 32853; - BUFF128[15..0] = BOOL(UNIQUEEXITCODE); - EXPORT "ERROR_CODE", BUFF128[15..0]; - CALL DO_EXIT; - PROGRAM_OK3: - IRSTOP IRPAUSE; - DRSTOP DRPAUSE; - IRSCAN 8, $c0; - WAIT IDLE, 1 CYCLES; - IRSTOP IRPAUSE; - DRSTOP DRPAUSE; - IRSCAN 8, $a8; - WAIT IDLE, 3 CYCLES; - WAIT IDLE, 165 USEC; - DRSCAN 128, $00000000000000000000000000000000,COMPARE UROW[],UROW_MASK[],PASS; - IF ( ! (PASS==0) ) THEN GOTO UROW_OK; - STATUS = -24; - PRINT "Failed to program UROW"; - UNIQUEEXITCODE = 32854; - BUFF128[15..0] = BOOL(UNIQUEEXITCODE); - EXPORT "ERROR_CODE", BUFF128[15..0]; - CALL DO_EXIT; - UROW_OK: - LABEL_SEPARATOR = 0; -ENDPROC; - -PROCEDURE FAIL_ERASE USES GV,DO_EXIT; - STATUS = 8; - PRINT "Failed Erase Operation"; - UNIQUEEXITCODE = 32855; - BUFF128[15..0] = BOOL(UNIQUEEXITCODE); - EXPORT "ERROR_CODE", BUFF128[15..0]; - CALL DO_EXIT; -ENDPROC; - -PROCEDURE EXE_ERASE USES BITSTREAM,GV,READ_UROW,POLL_ERASE,PROGRAM_UROW,FAIL_ERASE; - IF ( ! (COMBERASESELECT[14]==1) ) THEN GOTO SKIPRUROW; - CALL READ_UROW; - EXPORT "ACTEL_SLOG_UROW", UROW[]; - SKIPRUROW: - IRSTOP IRPAUSE; - DRSTOP DRPAUSE; - IRSCAN 8, $85; - DRSCAN 23, COMBERASESELECT[]; - WAIT IDLE, 3 CYCLES; - CALL POLL_ERASE; - IF ( ! (PASS==0) ) THEN GOTO ERASEOK; - CALL FAIL_ERASE; - ERASEOK: - IF ( ! (COMBERASESELECT[14]==1) ) THEN GOTO Label_71; - CALL PROGRAM_UROW; - Label_71: - LABEL_SEPARATOR = 0; -ENDPROC; - -PROCEDURE DO_ERASE USES BITSTREAM,GV,EXE_ERASE; - PRINT "Erase ..."; - COMBERASESELECT[22..0] = $004000; - COMBERASESELECT[0] = 1; - CALL EXE_ERASE; - PRINT "Completed erase"; - IF ( ! (ISPRGARRAY==1) ) THEN GOTO NOT_PGM_ARRAY_ERASE; - BUFF32[31..0] = BOOL(CHECKSUM); - EXPORT "CHECKSUM: ", BUFF32[15..0]; - NOT_PGM_ARRAY_ERASE: - LABEL_SEPARATOR = 0; -ENDPROC; - -PROCEDURE DO_ERASE_ARRAY USES GV,EXE_ERASE; - PRINT "Erase FPGA Array ..."; - COMBERASESELECT[22..0] = $004001; - CALL EXE_ERASE; -ENDPROC; - -PROCEDURE DO_ERASE_ONLY USES GV,DO_ERASE; - ISERASEONLY = 1; - CALL DO_ERASE; -ENDPROC; - -PROCEDURE DO_ERASE_ARRAY_ONLY USES GV,DO_ERASE_ARRAY; - ISERASEONLY = 1; - CALL DO_ERASE_ARRAY; -ENDPROC; - -PROCEDURE DO_ERASE_ALL USES GV,UFROM_DISTURB,EXE_ERASE; - IF ( ! ( (BM7DEVICE==1)||(BM1DEVICE==1)) ) THEN GOTO Label_72; - PRINT "Erase FPGA Array and FlashROM ..."; - Label_72: - IF ( ! ( (BM7DEVICE!=1)&&(BM1DEVICE!=1)) ) THEN GOTO Label_73; - PRINT "Erase FPGA Array, FlashROM and Security Settings ..."; - Label_73: - COMBERASESELECT[22..0] = $7fc00f; - ISERASEONLY = 1; - CALL EXE_ERASE; - CALL UFROM_DISTURB; -ENDPROC; - -PROCEDURE LOAD_ROW_DATA USES BITSTREAM,GV; - FOR SDTILE = 1 TO NUMBEROFSDTILES; - FOR I = 1 TO 8; - IRSTOP IRPAUSE; - DRSTOP DRPAUSE; - IRSCAN 8, $89; - DRSCAN 26, DATASTREAM[(DATAINDEX+25)..DATAINDEX]; - WAIT IDLE, 3 CYCLES; - DATAINDEX = (DATAINDEX+26); - NEXT I; - NEXT SDTILE; -ENDPROC; - -PROCEDURE EXE_PROGRAM USES GV,DO_EXIT,POLL_PROGRAM; - IRSTOP IRPAUSE; - DRSTOP DRPAUSE; - IRSCAN 8, $83; - WAIT IDLE, 3 CYCLES; - CALL POLL_PROGRAM; - IF ( ! (PASS==0) ) THEN GOTO Label_74; - STATUS = 10; - PRINT "Failed to program FPGA array at row ",ROWNUMBER,"."; - UNIQUEEXITCODE = 32856; - BUFF128[15..0] = BOOL(UNIQUEEXITCODE); - EXPORT "ERROR_CODE", BUFF128[15..0]; - CALL DO_EXIT; - Label_74: - LABEL_SEPARATOR = 0; -ENDPROC; - -PROCEDURE EXE_VERIFY USES GV,DO_EXIT,POLL_PROGRAM; - IRSTOP IRPAUSE; - DRSTOP DRPAUSE; - IRSCAN 8, $8d; - DRSCAN 2, VERIFYEOL[]; - WAIT IDLE, 3 CYCLES; - WAIT IDLE, 132 USEC; - CALL POLL_PROGRAM; - IF ( ! (PASS==0) ) THEN GOTO Label_75; - STATUS = 11; - PRINT "Verify 0 failed at row ",ROWNUMBER,"."; - UNIQUEEXITCODE = 32857; - BUFF128[15..0] = BOOL(UNIQUEEXITCODE); - EXPORT "ERROR_CODE", BUFF128[15..0]; - CALL DO_EXIT; - Label_75: - IRSCAN 8, $8d; - DRSCAN 2, VERIFYEOL[],COMPARE $0,$3,PASS; - IF ( ! (PASS==0) ) THEN GOTO Label_76; - STATUS = 11; - PRINT "Verify 0 failed at row ",ROWNUMBER,"."; - UNIQUEEXITCODE = 32858; - BUFF128[15..0] = BOOL(UNIQUEEXITCODE); - EXPORT "ERROR_CODE", BUFF128[15..0]; - CALL DO_EXIT; - Label_76: - IRSTOP IRPAUSE; - DRSTOP DRPAUSE; - IRSCAN 8, $8e; - DRSCAN 2, VERIFYEOL[]; - WAIT IDLE, 3 CYCLES; - WAIT IDLE, 132 USEC; - CALL POLL_PROGRAM; - IF ( ! (PASS==0) ) THEN GOTO Label_77; - STATUS = 11; - PRINT "Verify 1 failed at row ",ROWNUMBER,"."; - UNIQUEEXITCODE = 32859; - BUFF128[15..0] = BOOL(UNIQUEEXITCODE); - EXPORT "ERROR_CODE", BUFF128[15..0]; - CALL DO_EXIT; - Label_77: - IRSCAN 8, $8e; - DRSCAN 2, VERIFYEOL[],COMPARE $0,$3,PASS; - IF ( ! (PASS==0) ) THEN GOTO Label_78; - STATUS = 11; - PRINT "Verify 1 failed at row ",ROWNUMBER,"."; - UNIQUEEXITCODE = 32860; - BUFF128[15..0] = BOOL(UNIQUEEXITCODE); - EXPORT "ERROR_CODE", BUFF128[15..0]; - CALL DO_EXIT; - Label_78: - LABEL_SEPARATOR = 0; -ENDPROC; - -PROCEDURE DO_PROGRAM USES GV,LOAD_ROW_DATA,EXE_PROGRAM; - IRSTOP IRPAUSE; - DRSTOP DRPAUSE; - IRSCAN 8, $87; - DRSCAN 2, $2; - WAIT IDLE, 3 CYCLES; - PRINT "Programming FPGA Array"; - DATAINDEX = 0; - ROWNUMBER = (NUMBEROFMAPROWS-1); - INTEGER IREPEAT_0; - FOR IREPEAT_0 = NUMBEROFMAPROWS - 1 TO 0 STEP -1; - CALL LOAD_ROW_DATA; - CALL EXE_PROGRAM; - IRSTOP IRPAUSE; - DRSTOP DRPAUSE; - IRSCAN 8, $87; - DRSCAN 2, $3; - WAIT IDLE, 3 CYCLES; - IF ( ! ((ROWNUMBER%ROWITERATION)==0) ) THEN GOTO Label_79; - PERCENT_UPDATE = ((100*((NUMBEROFMAPROWS-ROWNUMBER)+1))/NUMBEROFMAPROWS); - DIFFERENCE = (PERCENT_UPDATE%10); - IF ( ! (DIFFERENCE>=5) ) THEN GOTO ROUND_DOWN_PGM_A; - PERCENT_UPDATE = (PERCENT_UPDATE+(10-DIFFERENCE)); - ROUND_DOWN_PGM_A: - IF ( ! (DIFFERENCE<5) ) THEN GOTO ROUND_UP_PGM_A; - PERCENT_UPDATE = (PERCENT_UPDATE-DIFFERENCE); - ROUND_UP_PGM_A: - EXPORT "PERCENT_DONE", PERCENT_UPDATE; - Label_79: - ROWNUMBER = (ROWNUMBER-1); - NEXT IREPEAT_0; -ENDPROC; - -PROCEDURE DO_VERIFY USES GV,LOAD_ROW_DATA,EXE_VERIFY; - IRSTOP IRPAUSE; - DRSTOP DRPAUSE; - IRSCAN 8, $87; - DRSCAN 2, $2; - WAIT IDLE, 3 CYCLES; - PRINT "Verifying FPGA Array"; - DATAINDEX = 0; - ROWNUMBER = (NUMBEROFMAPROWS-1); - INTEGER IREPEAT_1; - FOR IREPEAT_1 = NUMBEROFMAPROWS - 1 TO 0 STEP -1; - CALL LOAD_ROW_DATA; - CALL EXE_VERIFY; - IRSTOP IRPAUSE; - DRSTOP DRPAUSE; - IRSCAN 8, $87; - DRSCAN 2, $3; - WAIT IDLE, 3 CYCLES; - IF ( ! ((ROWNUMBER%ROWITERATION)==0) ) THEN GOTO Label_80; - PERCENT_UPDATE = ((100*((NUMBEROFMAPROWS-ROWNUMBER)+1))/NUMBEROFMAPROWS); - DIFFERENCE = (PERCENT_UPDATE%10); - IF ( ! (DIFFERENCE>=5) ) THEN GOTO ROUND_DOWN_VER_ARRAY; - PERCENT_UPDATE = (PERCENT_UPDATE+(10-DIFFERENCE)); - ROUND_DOWN_VER_ARRAY: - IF ( ! (DIFFERENCE<5) ) THEN GOTO ROUND_UP_VER_ARRAY; - PERCENT_UPDATE = (PERCENT_UPDATE-DIFFERENCE); - ROUND_UP_VER_ARRAY: - EXPORT "PERCENT_DONE", PERCENT_UPDATE; - Label_80: - ROWNUMBER = (ROWNUMBER-1); - NEXT IREPEAT_1; - PRINT " Verifying FPGA Array -- pass"; -ENDPROC; - -PROCEDURE DO_VERIFY_BOL USES GV,DO_VERIFY; - VERIFYEOL[0] = 0; - CALL DO_VERIFY; -ENDPROC; - -PROCEDURE DO_VERIFY_EOL USES GV,DO_VERIFY; - VERIFYEOL[0] = 1; - CALL DO_VERIFY; -ENDPROC; - -PROCEDURE DO_PROGRAM_RLOCK USES GV,DO_EXIT,POLL_PROGRAM; - DATAINDEX = 0; - INTEGER IREPEAT_2; - FOR IREPEAT_2 = NUMBEROFSDTILES - 1 TO 0 STEP -1; - FOR I = 1 TO 8; - IRSTOP IRPAUSE; - DRSTOP DRPAUSE; - IRSCAN 8, $89; - DRSCAN 26, RLOCK[(DATAINDEX+25)..DATAINDEX]; - WAIT IDLE, 3 CYCLES; - DATAINDEX = (DATAINDEX+26); - NEXT I; - NEXT IREPEAT_2; - IRSTOP IRPAUSE; - DRSTOP DRPAUSE; - IRSCAN 8, $8c; - WAIT IDLE, 3 CYCLES; - CALL POLL_PROGRAM; - IF ( ! (PASS==0) ) THEN GOTO Label_81; - STATUS = 10; - PRINT "Failed to enable FPGA Array."; - UNIQUEEXITCODE = 32862; - BUFF128[15..0] = BOOL(UNIQUEEXITCODE); - EXPORT "ERROR_CODE", BUFF128[15..0]; - CALL DO_EXIT; - Label_81: - LABEL_SEPARATOR = 0; -ENDPROC; - -PROCEDURE DO_READ_IDCODE USES READ_IDCODE_ONLY; - WAIT RESET, 5 CYCLES; - CALL READ_IDCODE_ONLY; - EXIT 0; -ENDPROC; - - -CRC A5F1;