?? top_a3p250.stp
字號:
EXIT -25;
jtagOK:
'Verify Device ID
CALL PROC_VERIFY_IDCODE;
' Execute ISC_ENABLE
IRSCAN 8, $80;
DRSTOP IDLE;
DRSCAN 18, #000000000000000000;
DRSTOP DRPAUSE;
WAIT 3 CYCLES;
WAIT 556 USEC;
IRSCAN 8, $80, CAPTURE Buff32[7..0];
if Buff32[5] == 0 THEN GOTO EnableOK;
DRSCAN 18, #000000000000000000, CAPTURE ISC_Config_Result[];
STATUS = 5;
PRINT "Failed to enter programming mode.";
EXPORT "ISC_Config_Result", ISC_Config_Result[];
CALL DO_EXIT;
EnableOK:
DRSCAN 18, #000000000000000000, CAPTURE ISC_Config_Result[];
IF ISC_Config_Result[16] THEN GOTO CRCOK;
STATUS = -26;
PRINT "Failed to enter programming mode.";
EXPORT "ISC_Config_Result", ISC_Config_Result[];
CALL DO_EXIT;
CRCOK:
IF !ChkArray THEN GOTO SkipChkArray;
IF !ArrayROnly THEN CALL DO_CHECK_W;
IF ArrayROnly THEN CALL DO_CHECK_R;
SkipChkArray:
IF (PLAYER_VERSION_VARIABLE != 0) THEN
CALL PROC_BP_VER;
CALL PROC_READ_FSN;
ENDPROC;
PROCEDURE READ_INITIALIZE USES GV, DO_INITIALIZE;
ChkFrom = 0;
ChkArray = 0;
ChkSec = 0;
CALL DO_INITIALIZE;
ENDPROC;
PROCEDURE FW_INITIALIZE USES GV, DO_INITIALIZE;
FromROnly = 0;
ChkFrom = 1;
ChkArray = 0;
CALL DO_INITIALIZE;
ENDPROC;
PROCEDURE FR_INITIALIZE USES GV, DO_INITIALIZE;
ChkArray = 0;
CALL DO_INITIALIZE;
ENDPROC;
PROCEDURE AW_INITIALIZE USES GV, DO_INITIALIZE;
ArrayROnly = 0;
ChkFrom = 0;
ChkArray = 1;
CALL DO_INITIALIZE;
ENDPROC;
PROCEDURE AR_INITIALIZE USES GV, DO_INITIALIZE;
ArrayROnly = 1;
ChkFrom = 0;
ChkArray = 1;
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 SW_INITIALIZE USES GV, DO_INITIALIZE;
ChkFrom = 0;
ChkArray = 0;
CALL DO_INITIALIZE;
ENDPROC;
PROCEDURE DO_OUTPUT_SECURITY USES GV;
PRINT "Security Setting :";
IF ULUFP THEN
PRINT "FlashROM Write/Erase protected by pass key.";
IF ULUFJ THEN
PRINT "FlashROM Read protected by pass key.";
IF ULAWE THEN
PRINT "Array Write/Erase protected by pass key.";
IF ULARD THEN
PRINT "Array Verify protected by pass key.";
IF ULUFE THEN
PRINT "Encrypted FlashROM Programming Enabled.";
IF ULARE THEN
PRINT "Encrypted FPGA Array Programming Enabled.";
PRINT "=========================================";
ENDPROC;
PROCEDURE PROC_PROGRAM_UROW USES GV, BITSTREAM, DO_EXIT, POLL_PROGRAM;
if IsEraseOnly THEN GOTO SKIP_CYC_INCREMENT;
if ACT_UROW_CYCLE_COUNT == 0 THEN GOTO SKIP_CYC_INCREMENT;
ACT_UROW_CYCLE_COUNT = ACT_UROW_CYCLE_COUNT + 1;
if ACT_UROW_CYCLE_COUNT == 1024 THEN ACT_UROW_CYCLE_COUNT = 1;
if ACT_UROW_CYCLE_COUNT == 1023 THEN ACT_UROW_CYCLE_COUNT = 0;
SKIP_CYC_INCREMENT:
if IsEraseOnly THEN
UROW[] = $FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
if IsEraseOnly && !IsRestoreDesign THEN
GOTO SKIP_DESIGN_INFO;
' Compose UROW data
IF !IsRestoreDesign THEN
UROW[127..112] = BOOL(CHECKSUM);
IF IsRestoreDesign THEN
UROW[127..112] = sUROW_CHECKSUM[15..0];
IF !IsRestoreDesign THEN
UROW[101..32] = ACT_UROW_DESIGN_NAME[69..0];
IF IsRestoreDesign THEN
UROW[101..32] = sUROW_DESIGN_NAME[69..0];
SKIP_DESIGN_INFO:
UROW[111..102] = BOOL(ACT_UROW_CYCLE_COUNT);
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];
IRSCAN 8, $A7;
DRSTOP IDLE;
DRSCAN 128, UROW[];
DRSTOP DRPAUSE;
WAIT 15 CYCLES;
CALL POLL_PROGRAM;
if PASS == 1 THEN GOTO Program_OK3;
STATUS = -24;
PRINT "Failed to program UROW";
CALL DO_EXIT;
Program_OK3:
' readback and verify UROW
IRSTOP IDLE;
IRSCAN 8, $A8;
IRSTOP IRPAUSE;
WAIT 3 CYCLES;
WAIT 264 USEC;
DRSCAN 128, $00000000000000000000000000000000, COMPARE UROW[], UROW_MASK[], PASS;
if PASS then GOTO UROW_OK;
STATUS = -24;
PRINT "Failed to program UROW";
CALL DO_EXIT;
UROW_OK:
ENDPROC;
PROCEDURE PROC_READ_UROW USES GV, BITSTREAM;
' read UROW
IRSTOP IDLE;
IRSCAN 8, $A8;
IRSTOP IRPAUSE;
WAIT 3 CYCLES;
WAIT 264 USEC;
DRSCAN 128, $00000000000000000000000000000000, CAPTURE UROW[];
sUROW_CHECKSUM[15..0] = UROW[127..112];
sUROW_CYCLE_COUNT = INT (UROW[111..102]);
sUROW_DESIGN_NAME[69..0] = UROW[101..32];
sUROW_PROG_METHOD[2..0] = UROW[31..29];
sUROW_ALGO_VERSION[3..0] = UROW[28..25];
sUROW_SW_VERSION[6..0] = UROW[16..10];
sUROW_PROGRAM_SW[3..0] = UROW[9..6];
ACT_UROW_CYCLE_COUNT = sUROW_CYCLE_COUNT;
SkipStorPrevUrow:
ENDPROC;
PROCEDURE PROC_DISPLAY_UROW USES GV, BITSTREAM;
INTEGER hex[16]= 70,69,68,67,66,65,57,56,55,54,53,52,51,50,49,48;
PRINT "User information : ";
PRINT "CHECKSUM: ", CHR$(hex[INT(sUROW_CHECKSUM[15..12])]),
CHR$(hex[INT(sUROW_CHECKSUM[11..8])]),
CHR$(hex[INT(sUROW_CHECKSUM[7..4])]),
CHR$(hex[INT(sUROW_CHECKSUM[3..0])]);
IF FLAG_DISPLAY_CYC == 1 THEN PRINT "CYCLE COUNT: ", sUROW_CYCLE_COUNT;
PRINT "Design Name: ",
CHR$(INT(sUROW_DESIGN_NAME[63..69])),
CHR$(INT(sUROW_DESIGN_NAME[56..62])),
CHR$(INT(sUROW_DESIGN_NAME[49..55])),
CHR$(INT(sUROW_DESIGN_NAME[42..48])),
CHR$(INT(sUROW_DESIGN_NAME[35..41])),
CHR$(INT(sUROW_DESIGN_NAME[28..34])),
CHR$(INT(sUROW_DESIGN_NAME[21..27])),
CHR$(INT(sUROW_DESIGN_NAME[14..20])),
CHR$(INT(sUROW_DESIGN_NAME[7..13])),
CHR$(INT(sUROW_DESIGN_NAME[0..6]));
INTEGER tmpInt = INT(sUROW_PROG_METHOD[]);
INTEGER tmpInt3 = 0;
INTEGER tmpInt4 = 0;
INTEGER tmpInt5 = 0;
IF tmpInt == 0 THEN GOTO PRINT1532;
IF tmpInt == 1 THEN GOTO PRINT_STAPL;
IF tmpInt == 2 THEN GOTO PRINT_DIRECT_C;
PRINT "Programming Method: UNKNOWN";
GOTO PRINT_PROG_METHOD_DONE;
PRINT1532:
PRINT "Programming Method: IEEE1532";
GOTO PRINT_PROG_METHOD_DONE;
PRINT_STAPL:
PRINT "Programming Method: STAPL";
GOTO PRINT_PROG_METHOD_DONE;
PRINT_DIRECT_C:
PRINT "Programming Method: DirectC";
PRINT_PROG_METHOD_DONE:
PRINT "Algorithm Version: ", CHR$(hex[INT(sUROW_ALGO_VERSION[3..0])]);
tmpInt = INT(sUROW_PROGRAM_SW[]);
IF tmpInt == 0 THEN GOTO PRINT_G3_PROG_1;
IF tmpInt == 1 THEN GOTO PRINT_G3_PROG_2;
IF tmpInt == 2 THEN GOTO PRINT_G3_PROG_3;
IF tmpInt == 3 THEN GOTO PRINT_BP_SCULPTOR_1;
IF tmpInt == 4 THEN GOTO PRINT_BP_SCULPTOR_2;
IF tmpInt == 5 THEN GOTO PRINT_DIRECT_C_PROG;
IF tmpInt == 6 THEN GOTO PRINT_ACTEL_JAM;
PRINT "Programmer: UNKNOWN";
GOTO PRINT_PROGRAMMER_DONE;
PRINT_G3_PROG_1:
PRINT "Programmer: FlashPro";
GOTO PRINT_FLASHPRO_VER;
PRINT_G3_PROG_2:
PRINT "Programmer: FlashPro Lite";
GOTO PRINT_FLASHPRO_VER;
PRINT_G3_PROG_3:
PRINT "Programmer: FlashPro3";
GOTO PRINT_FLASHPRO_VER;
PRINT_FLASHPRO_VER:
tmpInt = INT(sUROW_SW_VERSION[]);
IF tmpInt == 127 THEN GOTO PRINT_UNKNOWN_SW_VERSION;
IF tmpInt == 0 THEN GOTO PRINT_FLASHPRO_33;
IF tmpInt == 1 THEN GOTO PRINT_FLASHPRO_34;
IF tmpInt == 2 THEN GOTO PRINT_FLASHPRO_40;
IF tmpInt == 3 THEN GOTO PRINT_FLASHPRO_41;
IF tmpInt == 4 THEN GOTO PRINT_FLASHPRO_42;
IF tmpInt == 5 THEN GOTO PRINT_FLASHPRO_50;
IF tmpInt == 6 THEN GOTO PRINT_FLASHPRO_51;
IF tmpInt == 7 THEN GOTO PRINT_FLASHPRO_60;
PRINT "Software: FlashPro version greater than v6.0.";
GOTO PRINT_PROGRAMMER_DONE;
PRINT_UNKNOWN_SW_VERSION:
PRINT "Software: FlashPro vX.X";
GOTO PRINT_PROGRAMMER_DONE;
PRINT_FLASHPRO_60:
PRINT "Software: FlashPro v6.0";
GOTO PRINT_PROGRAMMER_DONE;
PRINT_FLASHPRO_51:
PRINT "Software: FlashPro v5.1";
GOTO PRINT_PROGRAMMER_DONE;
PRINT_FLASHPRO_50:
PRINT "Software: FlashPro v5.0";
GOTO PRINT_PROGRAMMER_DONE;
PRINT_FLASHPRO_42:
PRINT "Software: FlashPro v4.2";
GOTO PRINT_PROGRAMMER_DONE;
PRINT_FLASHPRO_41:
PRINT "Software: FlashPro v4.1";
GOTO PRINT_PROGRAMMER_DONE;
PRINT_FLASHPRO_40:
PRINT "Software: FlashPro v4.0";
GOTO PRINT_PROGRAMMER_DONE;
PRINT_FLASHPRO_34:
PRINT "Software: FlashPro v3.4";
GOTO PRINT_PROGRAMMER_DONE;
PRINT_FLASHPRO_33:
PRINT "Software: FlashPro v3.3";
GOTO PRINT_PROGRAMMER_DONE;
PRINT_BP_SCULPTOR_1:
PRINT "Programmer: SiliconSculptor II";
tmpInt = INT(sUROW_SW_VERSION[]);
IF tmpInt == 127 THEN GOTO PRINT_UNKNOWN_SW_VERSION;
tmpInt3 = INT(sUROW_SW_VERSION[6..5]) + SCULPTOR_MAJOR_BASE;
tmpInt4 = INT(sUROW_SW_VERSION[4..1]) + SCULPTOR_MINOR_BASE;
tmpInt5 = 0;
IF sUROW_SW_VERSION[0] THEN
tmpInt5 = 1;
PRINT "Software: Sculptor Win v", tmpInt3, ".", tmpInt4, ".", tmpInt5;
GOTO PRINT_PROGRAMMER_DONE;
PRINT_BP_SCULPTOR_2:
PRINT "Programmer: BP Programmer";
tmpInt = INT(sUROW_SW_VERSION[]);
IF tmpInt == 127 THEN GOTO PRINT_UNKNOWN_SW_VERSION;
tmpInt3 = INT(sUROW_SW_VERSION[6..5]) + SCULPTOR_MAJOR_BASE;
tmpInt4 = INT(sUROW_SW_VERSION[4..1]) + SCULPTOR_MINOR_BASE;
tmpInt5 = 0;
IF sUROW_SW_VERSION[0] THEN
tmpInt5 = 1;
PRINT "Software: BP Win v", tmpInt3, ".", tmpInt4, ".", tmpInt5;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -