FPGA API Types and Constants

Old Content - visit altium.com/documentation

Parent page: Technical Reference - FPGA API

FPGA API: Enumerated Types and Constants Reference

The FPGA API Types and Constants reference includes the following sections and content:

FPGA Enumerated Types FPGA Constants
Nexus enumerated types
Nexus Control Bits
Nexus Instruction Registers
Nexus Memory Access Bits
TBitValue
TCellFunction
TCellKind
TDeviceIOStandardDriveStrength
TDeviceIOStandardSlewType
TDeviceIOStandardType
TDevicePinType
TDeviceState
TDisableResult
TEdgePolarity
TFlowRunResult
TMemoryElement
TMemoryKind
TNexusAction
TNexusActionTarget
TNexusBreakPointKind
TNexusCoreKind
TNexusNotification
TProcessFlowState
TRegisterValue
TScanClockHaltMode
TScanPinKind
TTapState
TTargetBoardKind
Bit Constants
Nexus Notification Codes
Nexus parameter names
Other constants

 

FPGA Enumerated Types

Nexus enumerated types

The enumerated types are used for many of the FPGA interfaces methods which are covered in this section. For example the INexusCore interface has a Function    GetCoreKind  : TNexusCoreKind;. You can use this Enumerated Types section to check what the range is for the TNexusCoreKind type.

Nexus Control Bits

Nexus_Control_StepCounterBreakpointEnable = Bit_D7;
Nexus_Control_ExternalAccess              = Bit_D6;
Nexus_Control_PeripheralClockEnable       = Bit_D6;
Nexus_Control_Reset                       = Bit_D5;
Nexus_Control_DebugEnable                 = Bit_D4;
Nexus_Control_DebugAcknowledge            = Bit_D3;
Nexus_Control_DebugRequest                = Bit_D2;
Nexus_Control_DebugStep                   = Bit_D1;
Nexus_Control_DebuggerProgramSelect       = Bit_D0;

Nexus Instruction Registers

JTAG_ExTest      = $00;
JTAG_IdCode      = $01;
JTAG_Reset       = $02;
JTAG_Memac       = $0A;
JTAG_NexusEnable = $0B;
JTAG_Bypass      = $0F;

Nexus Memory Access Bits

Nexus_MemAccess_MemoryRead  = Bit_D2;
Nexus_MemAccess_MemoryWrite = Bit_D1;
Nexus_MemAccess_Data        = 0;
Nexus_MemAccess_Program     = Bit_D0;
Nexus_MemAccess_ReadData    = Nexus_MemAccess_MemoryRead  Or Nexus_MemAccess_Data;
Nexus_MemAccess_ReadProgram = Nexus_MemAccess_MemoryRead  Or Nexus_MemAccess_Program;
Nexus_MemAccess_WriteData   = Nexus_MemAccess_MemoryWrite Or Nexus_MemAccess_Data;
Nexus_MemAccess_WriteProgram= Nexus_MemAccess_MemoryWrite Or Nexus_MemAccess_Program;
Nexus_MemAccess_Inactive    = 0;

TBitValue

TBitValue = (eBit_Undefined,eBit_0,eBit_1,eBit_X);

TCellFunction

TCellFunction =
(
  eCellFunction_Undefined,
  eCellFunction_Input,
  eCellFunction_Clock,
  eCellFunction_Output2,
  eCellFunction_Output3,
  eCellFunction_Control,
  eCellFunction_ControlR,
  eCellFunction_Internal,
  eCellFunction_BiDir,
  eCellFunction_ObserveOnly
);

TCellKind

TCellKind =
(
  eCellKind_Undefined,
  eCellKind_BC_0,
  eCellKind_BC_1,
  eCellKind_BC_2,
  eCellKind_BC_3,
  eCellKind_BC_4,
  eCellKind_BC_5,
  eCellKind_BC_6,
  eCellKind_BC_7,
  eCellKind_BC_8,
  eCellKind_BC_9,
  eCellKind_BC_10
);

TDeviceIOStandardDriveStrength

TDeviceIOStandardDriveStrength = (e2m, e3m, e4m, e6m, e7m, e8m, e10m, e12m, e14m, e16m, e18m, e20m, e24m);

TDeviceIOStandardSlewType

TDeviceIOStandardSlewType = (eSlow, eFast);

TDeviceIOStandardType

TDeviceIOStandardType =
(eLVTTL15,
 eLVTTL18,
 eLVTTL25,
 eLVTTL33,
 eLVCMOS15,
 eLVCMOS18,
 eLVCMOS25,
 eLVCMOS33,
 eLVCMOS5,
 ePCI33_3,
 ePCI33_5,
 ePCI66,
 ePCIX_3,
 eCOMPACTPCI_3,
 eSSTL3I,
 eSSTL3II,
 eSSTL2I,
 eSSTL2II,
 eSSTL18I,
 eSSTL18II,
 eGTL,
 eGTLP,
 eHSTLI,
 eHSTLII,
 eHSTLIII,
 eHSTLIV,
 eHSTLI_18,
 eHSTLII_18,
 eHSTLIII_18,
 eHSTLIV_18,
 eCTT,
 eAGP1x,
 eAGP2x,
 eTTL,
 eLVCMOS12,
 eGTL_DCI,
 eGTLP_DCI,
 eHSTLI_DCI,
 eHSTLII_DCI,
 eHSTLIII_DCI,
 eHSTLIV_DCI,
 eHSTLI_18_DCI,
 eHSTLII_18_DCI,
 eHSTLIII_18_DCI,
 eHSTLIV_18_DCI,
 eDHSTLI,
 eDHSTLII,
 eDHSTLIII,
 eDHSTL18I,
 eDHSTL18II,
 eDHSTL18III,
 eHTT,
 ePCML,
 ePCML15,
 eSSTL18I_DCI,
 eSSTL18II_DCI,
 eSSTL2I_DCI,
 eSSTL2II_DCI,
 eSSTL3I_DCI,
 eSSTL3II_DCI,
 eLVCMOS15_DCI,
 eLVCMOS18_DCI,
 eLVCMOS25_DCI,
 eLVCMOS33_DCI,
 eLVCMOS15_DCI_DV2,
 eLVCMOS18_DCI_DV2,
 eLVCMOS25_DCI_DV2,
 eLVCMOS33_DCI_DV2,
 eLVDS,
 eLVPECL,
 eDSSTL18I,
 eDSSTL18II,
 eDSSTL2I,
 eDSSTL2II,
 eDSSTL3I,
 eDSSTL3II,
 eBLVDS25,
 eLVPECL25,
 eRSDS25,
 eLVDS33,
 eLVDS25_DCI,
 eLVDS33_DCI,
 eLVDSEXT25,
 eLVDSEXT33,
 eLVDSEXT25_DCI,
 eLVDSEXT33_DCI,
 eLDT,
 eULVDS25,
 eLDT_DT,
 eLVDS_DT,
 eLVDSEXT25_DT,
 eULVDS25_DT,
 eLVCMOS33_1,
 eLVCMOS33_2
 );

TDevicePinType

TDevicePinType = (eIOPin, eVREFPin, eCLKPin, eSpecialPin);

TDeviceState

TDeviceState = (eDeviceState_Unknown,
                eDeviceState_Reset,
                eDeviceState_Programmed,
                eDeviceState_Programmed_ReadProtected,
                eDeviceState_Programmed_WriteProtected,
                eDeviceState_Programmed_ReadWriteProtected);

TDisableResult

TDisableResult =
(
  eDisableResult_Undefined,
  eDisableResult_HiZ,
  eDisableResult_Weak0,
  eDisableResult_Weak1,
  eDisableResult_Pull0,
  eDisableResult_Pull1,
  eDisableResult_Keeper
);

TEdgePolarity

TEdgePolarity = (eEdgeRising,eEdgeFalling);

TFlowRunResult

TFlowRunResult    = (eFlowRun_DidNotRun, eFlowRun_Cancelled, eFlowRun_Failure, eFlowRun_Success);

TMemoryElement

TMemoryElement = LongWord;

TMemoryKind

TMemoryKind = (
eMemoryKind_Program,
eMemoryKind_Data
);

TNexusAction

TNexusAction =
(
    eNexusAction_None,
    eNexusAction_ProcessorPause,
    eNexusAction_ProcessorContinue,
    eNexusAction_ProcessorReset,
    eNexusAction_ProcessorSingleStep,
    eNexusAction_ProgramCompile,
    eNexusAction_ProgramDownload,
    eNexusAction_ProgramDebug,
    eNexusAction_ShowAboutDialog,
    eNexusAction_DeviceReset,
    eNexusAction_DeviceDownload,
    eNexusAction_ShowViewer,
    eNexusAction_ChooseFileAndDownload,
    eNexusAction_ProcessorMenu,
    eNexusAction_ConfigureJTAGIdMapping,
    eNexusAction_Flash_DeviceReset,
    eNexusAction_Flash_ChooseFileAndDownload
);

TNexusActionTarget

TNexusActionTarget =(    eNexusActionTarget_None,
    eNexusActionTarget_SoftDevice,
    eNexusActionTarget_HardDevice,
    eNexusActionTarget_SoftChain,
    eNexusActionTarget_HardChain,
    eNexusActionTarget_BoardDevice,
    eNexusActionTarget_BoardChain
);

TNexusBreakPointKind

TNexusBreakpointKind =
(
    eBreakpointKind_Program_FetchAnyOpcode,
    eBreakpointKind_Program_FetchSpecificOpcode,
    eBreakpointKind_DataAtAddress_AnyValue,
    eBreakpointKind_DataAtAddress_SpecificValue
);

TNexusCoreKind

TNexusCoreKind = (eNexusCoreKind_None,
                  eNexusCoreKind_Processor_OCDS,
                  eNexusCoreKind_Processor_Standard,
                  eNexusCoreKind_Memory_Program,
                  eNexusCoreKind_Memory_Data,
                  eNexusCoreKind_Instrument,
                  eNexusCoreKind_ClockManager);

TNexusNotification

TNexusNotification = Class(TNotificationWithCode, INexusNotification);

TProcessFlowState

TProcessFlowState = (eFlowState_UpToDate, eFlowState_OutOfDate, eFlowState_Missing, eFlowState_None);

TRegisterValue

TRegisterValue = LongWord;

TScanClockHaltMode

TScanClockHaltMode = (eScanClockHaltMode_None,eScanClockHaltMode_Low,eScanClockHaltMode_Both);

TScanPinKind

TScanPinKind = (eScanPinKind_Normal,
                eScanPinKind_TRST,
                eScanPinKind_TCK,
                eScanPinKind_TDO,
                eScanPinKind_TDI,
                eScanPinKind_TMS,
                eScanPinKind_Power,
                eScanPinKind_Ground);

TTapState

TTapState =
(
    TapState_Undefined,
    TEST_LOGIC_RESET,
    RUN_TEST_IDLE,
    SELECT_DR,
    CAPTURE_DR,
    SHIFT_DR,
    EXIT1_DR,
    PAUSE_DR,
    EXIT2_DR,
    UPDATE_DR,
    SELECT_IR,
    CAPTURE_IR,
    SHIFT_IR,
    EXIT1_IR,
    PAUSE_IR,
    EXIT2_IR,
    UPDATE_IR          
);

TTargetBoardKind

TTargetBoardKind= (eTargetBoardKind_Unknown,
                   eTargetBoardKind_Xilinx,
                   eTargetBoardKind_Altera,
                   eTargetBoardKind_NanoBoard_NB1_Rev1,
                   eTargetBoardKind_NanoBoard_NB1_Rev2,
                   eTargetBoardKind_BurchBoard);

 

FPGA Constants

Bit Constants

Bit31 = $80000000;
Bit30 = $40000000;
Bit29 = $20000000;
Bit28 = $10000000;
Bit27 = $08000000;
Bit26 = $04000000;
Bit25 = $02000000;
Bit24 = $01000000;
Bit23 = $00800000;
Bit22 = $00400000;
Bit21 = $00200000;
Bit20 = $00100000;
Bit19 = $00080000;
Bit18 = $00040000;
Bit17 = $00020000;
Bit16 = $00010000;
Bit15 = $00008000;
Bit14 = $00004000;
Bit13 = $00002000;
Bit12 = $00001000;
Bit11 = $00000800;
Bit10 = $00000400;
Bit9  = $00000200;
Bit8  = $00000100;
Bit7  = $00000080;
Bit6  = $00000040;
Bit5  = $00000020;
Bit4  = $00000010;
Bit3  = $00000008;
Bit2  = $00000004;
Bit1  = $00000002;
Bit0  = $00000001;

Nexus Notification Codes

cNexusDeviceStatusesChanged     = 0;
cNexusHardDeviceChainChanged    = 1;
cNexusSoftDeviceChainChanged    = 2;
cNexusCurrentHardDeviceChanged  = 3;
cNexusCurrentSoftDeviceChanged  = 4;
cNexusProjectCoreTreeChanged    = 5;
cNexusProcessFlowStatusChanged  = 6;
cNexusConnectionStatusChanged   = 7;
cNexusCurrentBoardDeviceChanged = 8;
cNexusBoardDeviceChainChanged   = 9;
cNexusProjectListChanged        = 10;
cNexusOnIdle                    = 11;
cNexusBeginUpdate               = 12;
cNexusEndUpdate                 = 13;

Nexus parameter names

Device Names
cNexusParameterName_Device    = 'NEXUS_JTAG_DEVICE';
cNexusParameterName_Connector = 'NEXUS_JTAG_CONNECTOR';
cNexusParameterName_Order     = 'NEXUS_JTAG_ORDER';
cNexusParameterName_Index     = 'NEXUS_JTAG_INDEX';
cNexusParameterName_Core      = 'NEXUS_CORE';
cNexusParameterName_FPGA      = 'NEXUS_FPGA_DEVICE';
Memory Parameter Names
cNexusParameterName_MemoryDepth       = 'Memory_Depth';
cNexusParameterName_MemoryWidth       = 'Memory_Width';
cNexusParameterName_MemoryDepthA      = 'Memory_DepthA';
cNexusParameterName_MemoryWidthA      = 'Memory_WidthA';
cNexusParameterName_MemoryDepthB      = 'Memory_DepthB';
cNexusParameterName_MemoryWidthB      = 'Memory_WidthB';
cNexusParameterName_MemoryType        = 'Memory_Type';
cNexusParameterName_MemoryUse         = 'Memory_Use';
cNexusParameterName_MemoryClockEdge   = 'Memory_ClockEdge';
cNexusParameterName_MemoryEnablePin   = 'Memory_EnablePin';
cNexusParameterName_MemoryContentFile = 'Memory_ContentFile';
cNexusParameterName_MemoryProgramFile = 'Memory_ProgramFile';
cNexusParameterName_MemoryResetPin    = 'Memory_ResetPin';
cNexusParameterName_MemoryByteIndex   = 'Memory_ByteIndex';
cNexusParameterName_MemoryHalfIndex   = 'Memory_HalfIndex';
cNexusParameterName_MemoryByteWrites  = 'Memory_ByteWrites';
 
Clock Names
cNexusParameterName_ClockCount          = 'Clk_Count';
cNexusParameterName_ClockInputFrequency = 'Clk_InputFreq_MHz';
cNexusParameterName_ClockAOperation     = 'ClkA_Operation';
cNexusParameterName_ClockBOperation     = 'ClkB_Operation';
cNexusParameterName_ClockCOperation     = 'ClkC_Operation';
cNexusParameterName_ClockDOperation     = 'ClkD_Operation';

Other constants

cMemoryElementZero = 0;
cMemoryAddressZero = 0;
 
cStandardDriveStrengths : Array[TDeviceIOStandardDriveStrength] Of TDynamicString =
('2mA', '3mA', '4mA', '6mA', '7mA', '8mA', '10mA', '12mA', '14mA', '16mA', '18mA', '20mA', '24mA');
 
cSupportsCPLDDevice = 'CPLD';
cSupportsFPGADevice = 'FPGA';
cSupportsPROMDevice = 'PROM';

You are reporting an issue with the following selected text and/or image within the active document:
ALTIUM DESIGNER FREE TRIAL
Altium Designer Free Trial
Let’s get started. First off, are you or your organization already using Altium Designer?

If would like to speak with a representative, please contact your local Altium office.
Copyright © 2019 Altium Limited

In that case, why do you need an evaluation license?

If would like to speak with a representative, please contact your local Altium office.
Copyright © 2019 Altium Limited

Got it. You actually don’t need an evaluation license for that.

Click the button below to download the latest Altium Designer installer.

Download Altium Designer Installer

If would like to speak with a representative, please contact your local Altium office.
Copyright © 2019 Altium Limited

Please fill out the form below to get a quote for a new seat of Altium Designer.

By clicking “Get Your Free Trial”, you are agreeing to our Privacy Policy.
You may receive communications from Altium and can change your notification preferences at any time.

If you are on Altium Subscription, you don’t need an evaluation license.

If you are not an active Altium Subscription member, please fill out the form below to get your free trial.

By clicking “Get Your Free Trial”, you are agreeing to our Privacy Policy.
You may receive communications from Altium and can change your notification preferences at any time.

Why are you looking to evaluate Altium Designer?

If would like to speak with a representative, please contact your local Altium office.
Copyright © 2019 Altium Limited

You came to the right place! Please fill out the form below to get your free trial started.

By clicking “Get Your Free Trial”, you are agreeing to our Privacy Policy.
You may receive communications from Altium and can change your notification preferences at any time.

Sounds exciting! Did you know we offer special discounted student licenses? For more information, click here.

In the meantime, feel free to request a free trial by filling out the form below.

By clicking “Get Your Free Trial”, you are agreeing to our Privacy Policy.
You may receive communications from Altium and can change your notification preferences at any time.

Got it. You can download a free Altium Designer Viewer license which is valid for a 6 months.

Please fill out the form below to request one.

By clicking “Get Your Free Trial”, you are agreeing to our Privacy Policy.
You may receive communications from Altium and can change your notification preferences at any time.

That’s great! Making things is awesome. We have the perfect program for you.

Upverter is a free community-driven platform designed specifically to meet the needs of makers like you.

Click here to give it a try!

If would like to speak with a representative, please contact your local Altium office.
Copyright © 2019 Altium Limited

Got it. You can download a free Altium Designer Viewer license which is valid for a 6 months.

Please fill out the form below to request one.

By clicking “Get Your Free Trial”, you are agreeing to our Privacy Policy.
You may receive communications from Altium and can change your notification preferences at any time.