System and method for configuring a programmable logic device6438738Abstract System and method for configuring a programmable logic device (PLD) using an automatically generated configuration control file. A control file contains directives for configuring a PLD with a configuration bitstream, wherein the directives are in a selected language. A configuration control file generator is programmed to automatically create the control file with the directives in the selected language. In another embodiment, the particular directives and sequence of the directives that are generated are dependent on a selected configuration mode for the PLD. In performing the directives, configuration control signals are applied to the PLD, and the configuration bitstream is provided to the PLD. Claims What is claimed is: Description FIELD OF THE INVENTION
RESET_PORTS (no args)
-Calls C98ResetPorts ( ).
-No equivalent 8051 assembly command.
WRITE_PORT [port#] [data]
-Calls C98WritePortData ( ).
-Equivalent to the 8051 assembly commands `setb`
or `movx @Ri, A`
READ_PORT [port#] [1-msgBox, 0-no msgBox]
-Calls C98ReadPortData ( ). A messageBox may be
optionally used to display the read data.
-Equivalent to the 8051 assembly command
`movx A, @Ri`
TRISTATE_PINS [port#] [pinMask]
-Calls C98TriStatePortPins ( ).
-No equivalent 8051 assembly command
SELECT_PINS [port#] [pinMask]
-Calls C98SelectPortPins ( ).
-No equivalent 8051 assembly command.
SETUP_AND_HOLD [setupTime] [holdTime]
-Calls C98SetSetupAndHoldTime ( ).
-Equivalent to implementing a 8051 programming loop
or using the 8051 timer circuits.
SET_VOLTAGE_LEVEL [01-3.3v path, 00-2.5v path]
-Calls C98SetVoltageLevel ( ).
-No equivalent 8051 command
CONFIGURE_TARGET_FPGA [mcsfile] [bitCount (decimal)]
[configType] [compressFlag] [compressKey]
-Calls C98ConfigureTargetFPGA ( ).
configTypes:
CONFIG_SLAVE_SERIAL 1
CONFIG_SYNC_PERIPHERAL 2
CQNFIG_ASYNC_PERIPHERAL 3
CONFIG_SELECT_NAP 4
compressFlag = set to 1 to apply compression to
data stream, set to 0 otherwise
compressKey = 00-compress 00 characters
FF-compress FF characters
80-compress both 00 and FF characters
-This command is equivalent to creating an 8051
program that loops on the `movx @Ri, A` command,
which can be stopped by an 8051 hardware interrupt.
READ_TARGET_FPGA [mcsfile] [bitCount (decimal)]
[readType]
-Calls C98ReadTargetFPGA ( ).
readTypes:
READ_SLAVE_SERIAL 1
READ_SELECT_MAP 2
-This command is equivalent to creating an 8051
program that loops on the `movx A, @Ri` command,
which can be stopped by an 8051 hardware interrupt.
DELAY_MS [ms in decimal]
-Delay function in milliseconds.
-Equivalent to programming a loop in 8051 assembly
or using the 8051 timers.
SINGLE_STEP
-Breakpoint function.
-Equivalent to placing a loop in 8051 assembly
that waits for a user signal to continue the program.
READ_VERIFY [data] [mask]
-Verifies specified data with last read data. Mask
will be applied to both the specified data and the
last read data.
-No equivalent 8051 command.
SET_DUT_CLOCK [clock]
-Calls C98SetInternalLogicClock ( ).
-No equivalent 8051 command.
WRITE_FPGA [fpga address] [data]
-Writes directly to the FPGA. CMD_BUSY flag will be
reset prior to writing the specified data.
-No equivalent 8051 command
READ_FPGA [fpga address] [1-msgBox, 0-no msgBox]
-Read directly from the FPGA. CMD_BUSY flag will be
reset prior to reading the specified address. A
messageBox may be optionally used to display the
read data.
-No equivalent 8051 command.
TOGGLE_PIN [pin index (decimal)] [count (decimal)]
-Calls C98TogglePin ( );
-Equivalent to the 8051 assembly command `setb` or
`clr`.
READ_CAPTURE [mcsfile] [bitCount (decimal)]
[options] [clk1Count] [clk2Count]
-Calls C98ReadCapture ( );
-No equivalent 8051 command.
DOWNLOAD_OFFSETS [offset file]
[offset count (decimal)]
-Calls C98BinaryDownload ( ). Offset file should
contain 1 offset per line specified in ASCII hex.
-No equivalent 8051 command.
WRITE_BYTE_SELMAP [data]
-Calls C9BWriteSelectMAP ( ). Only 1 byte is allowed
to be written.
-Equivalent to the 8051 assembly command
`movx @Ri, A`
INITIALIZE_TAP (no args)
-Calls C98JTAGInitializeTAP ( ).
-Equivalent to multiple 8051 assembly commands setb,
clr, and movx used to toggle the 3 JTAG lines of an
FPGA or CPLD.
NAVIGATE_TAP_STATE [state] [delay (decimal)]
-Calls C98JTAGNavigateTAPState ( ). Delay must be
specified in uS.
-Specify state using the following table:
/* JTAG TAP States */
TAP_TEST_LOGIC_RESET 00
TAP_RUN_TEST_IDLE 01
TAP_SELECT_DR_SCAN 02
TAP_CAPTURE_DR 03
TAP_SHIFT_DR 04
TAP_EXIT1_DR 05
TAP_PAUSE_DR 06
TAP_EXIT2_DR 07
TAP_UPDATE_DR 08
TAP_SELECT_IR_SCAN 09
TAP_CAPTURE_IR 0A
TAP_SHIFT_IR 0B
TAP_EXIT1_IR 0C
TAP_PAUSE_IR 0D
TAP_EXIT2_IR 0E
TAP_UPDATE_IR 0F
-Equivalent to the above in INITIALIZE_TAP
JTAG_SHIFT_BITS [data] [bitCount (dec)]
[shiftMode] [exitShiftState]
-Calls C98JTAGShiftBits ( ). The data is limited to 4
system, msb.specified first. (ex. 0 .times. 12345678, 78h
will be shifted out first, beginning from the right
side.
-Specify shiftMode using the following table:
/* JTAG Shift Modes */
JTAG_SHIFT_WRITE 1
JTAG_SHFIT_READ_WRITE 2
JTAG_SHFIT_READ 3
-Specify exitShiftState = 1 if the shift state will
be exited when shifting the last bit.
A specific instance of a configuration control file generator is set forth in Appendix A. The example control file generator is a Perl script that is generally comprised of a series of "print" statements that output specific configuration commands to a file. The collective functions of the commands are for configuring an FPGA in SelectMAP mode, followed by reading back configuration data. While the example control file generator shows a script of commands being generated, it will be appreciated that the generator could be adapted to generate different types of control files. For example, an assembly language or a C language control file could be generated instead of the command script. The example command script that is generated by the program of Appendix A is set forth in Appendix B. Appendix A shows an exemplary configuration control file generator 106 implemented as a Perl script. In other embodiments of the invention, configuration control file generator 106 is implemented as a Java application, a Java applet, a Microsoft Foundation class GUI, or another type of graphical user interface program. Alternatively, the control file generator can be implemented as a command line executable, e.g., as a DOS or Unix executable. FIG. 2 is a functional block diagram of a configuration control file generator in accordance with another embodiment of the invention. Configuration control file generator 106 supports generating different types of control files based on a selected language and configuration mode. For example, different programming languages such as assembly, C, or a specific command language may be used to specify the control directives in the control file. In addition, a particular PLD may have different configuration modes. For example, the Virtex FPGA from Xilinx has as possible configuration modes: slave-serial, master-serial, SelectMAP, and boundary-scan. Generators 122, 124, . . . 126 are programmed to generate respective control files 128, 130, . . . 132 in different languages. For example, generator 122 may be programmed to generate a C language control file, and generator 126 may be programmed to generate an assembly language control file. For generating a control file suitable for a particular configuration mode, each generator may be programmed to generate a control file in the designated language with directives suitable for a selected configuration mode. For example, the user may provide data to control file generator 106 that selects both the language and configuration mode. In response, the appropriate one of generators 122, 124, . . . 126 is invoked with a parameter that specifies the configuration mode. In another embodiment, each of the generators may be programmed to generate a control file in a particular language for a particular configuration mode. FIG. 3 is a flowchart of a process for configuring a PLD in accordance with one embodiment of the invention. The process generally entails automatically generating a configuration control file, performing the directives in the configuration control file, and verifying whether the configuration was successful. Automatically generating a configuration control file saves the user from having to learn the details of the different configuration modes for a PLD and from having to learn the details of the configuration directives. The configuration mode, the language of the configuration control directives, and the configuration bitstream are selected at steps 202, 204, and 206. Depending on the particular PLD and the available configuration interface tools (not shown), the available languages and configuration modes will vary. At step 208, the configuration control file is automatically generated. For example, the control file generator program of Appendix A, or an adaptation thereof, may be used to generate the control file. The particular directives and sequence of directives is determined by the configuration mode as selected at step 202, and the language of the control directives is that selected at step 204. It will be appreciated that in another embodiment there may be only a single configuration mode and/or language available, thereby eliminating the selection steps. At step 210, the directives of the configuration control file are performed either by execution or interpretation, depending on the selected language. If the control file also includes directives for reading back configuration data, then the configuration can be verified at step 212. It will be appreciated that many applications will require verification of a valid configuration. However, there may be instances where verification is not required. Therefore, the readback directives in the control file may be optional. Verification of a configuration is generally accomplished by comparing the input configuration bitstream to the readback configuration data. If the data are equal, then the configuration is valid. If the configuration was not successful, decision step 214 directs control to step 216, where the user can optionally modify the control file. Control is then returned to step 210 for another attempt at configuration. The process is complete once the PLD has been successfully configured. The present invention is believed to be applicable to a variety of systems for configuring PLDs and has been found to be particularly applicable and beneficial in configuring Virtex FPGAs in SelectMAP mode. Other aspects and embodiments of the present invention will be apparent to those skilled in the art from consideration of the specification and practice of the invention disclosed herein. It is intended that the specification and illustrated embodiments be considered as examples only, with a true scope and spirit of the invention being indicated by the following claims.
|
Same subclass Same class Consider this |
||||||||||
