Progress Report Final

advertisement
Progress Report
Title:
Automating HDL processing for the integration of hardware test and remote
FPGA laboratory.
Student:
David Newell (08648476)
Project Supervisor:
Dr. Fearghal Morgan
1
Table of Contents
Progress Report .......................................................................................................................... 1
Title: ........................................................................................................................................... 1
Table of Contents ....................................................................................................................... 2
Table of Figures .......................................................................................................................... 2
1
INTRODUCTION .................................................................................................................. 3
1.1
2
Introduction................................................................................................................. 3
Remote FPGA Laboratory .................................................................................................. 3
2.1 Introduction: .................................................................................................................... 3
2.2 Software Tools: ................................................................................................................ 5
2.3 Extracting signals: ............................................................................................................ 5
2.4 Display signals on GUI: ..................................................................................................... 6
2.5 Database: ......................................................................................................................... 6
2.6 Modifying VHDL files: ....................................................................................................... 7
2.7 Automate bit generation: ................................................................................................ 7
2.8 Tasks Completed ............................................................................................................. 8
3
IEEE Standards ................................................................................................................... 8
3.1 Introduction: .................................................................................................................... 8
3.2 IEEE 1149.1:...................................................................................................................... 8
3.3 IEEE 1450.6:.................................................................................................................... 10
3.4 IEEE 1500:....................................................................................................................... 11
3.5 Task Completed:………………………………………………………………………………………………………12
4
References: ...................................................................................................................... 12
Table of Figures
Figure 1: Remote FPGA .............................................................................................................. 4
Figure 2:Process flow of program. ............................................................................................. 5
Figure 3: Example of Java Regex function. ................................................................................ 6
Figure 4: Code from DataAccess Class. ...................................................................................... 7
Figure 5: Example of multiple chips connected in a scan chain [4]. .......................................... 9
Figure 6: Example of TAP controller [5]. .................................................................................. 10
Figure 7: Example of wrapper core featuring WBR, WBY and WIR [9]. .................................. 12
2
1 INTRODUCTION
1.1 Introduction:
The aim of my Final Year Project is to automate the integration of Hardware Description
Language (HDL) for hardware test of System on Chips (SoCs) and for the remote FPGA
laboratory. The remote FPGA laboratory is a website that allows users to upload VHDL
projects, which have been created and simulated, to Field Programmable Gate Arrays
(FPGA) boards that are located in NUIG. This is a very useful system as it allows user that
don’t have access to these boards, which can be very expense to purchase, to verify that
their VHDL projects operate correctly. Currently to upload the projects to the remote FPGA
laboratory website it can be tedious to do as the assignment of registers must be done
manual. The aim of my project will be to automate the integration of the design on the
website.
Expanding on the concept above another aim of the project will be to automate the
Design for Test (DFT) of SoCs, which is outlined in the IEEE 1500 Standard. Many of the
features used in the section above, will be utilised in this section of the project as well.
Currently to include DFT measure a digital designers must follow the IEEE 1500 Standard to
wrap each core of SoCs and repeat the process for each SoC. This process could be
automated and thus reducing Time to Market (MTT).
2 Remote FPGA Laboratory
2.1 Introduction: ‘The Remote Field Programmable Gate Array (FPGA) Laboratory (RFL)
has been developed by Dr Fearghal Morgan as a resource for teaching of Digital systems and
FPGA applications.
RFL is a scalable and extendable, used to enhance the learning of digital systems and FPGA
applications. The RFL system provides always on, remote access to an array of FPGAs. The
web-based remote console provides a real-time, interactive control and visualisation
interface to/from the remote FPGAs, including user clock control. A Xilinx ISE RFL project
template enables integration of user HDL designs for implementation on the RFL. Instructors
and users can create real-time demonstrators of digital systems components, implemented
and executing on the remote FPGA.’[1]
3
Figure 1: Remote FPGA
But as mentioned above, currently when uploading VHDL projects to the RFL website it can
be tedious as the signals must be assigned to certain register banks. The aim of my project is
to make the process of uploading the VHDL projects easier for the user by automating the
process. The automation of the integration of a user designed VHDL to RFL will follow the
steps below.


Extract design hierarchy signals.
Allow the user to view input, output and internal signals via the GUI.
4



Icons on the GUI to allow the user to select internal signals, which makes
these internal signals observable on the RFL.
Provide database to enable UI building on RFL.
Automate the bit file generation process.
Figure 2:Process flow of program.
2.2 Software Tools: To implement the above steps, the Java programming language will
be used. The reason for choosing Java is that there is a very large community based around
the language, which means the language is support widely. Many users of the end product
will already have Java downloaded which means compatibility shouldn’t be an issue. The
NetBeans platform was chosen ahead of the Eclipse platform as creating GUI using
NetBeans is manageable as it utilises a ‘drag and drop’ method of GUI generation.
The Xilinx ISE program is used to generate example VHDL projects. Xilinx ISE allows users to
test, simulate and generate the bit file, which allows user to download their projects to
FPGA boards.
2.3 Extracting signals: To open the users VHDL files and parse through the files, the
Java scanner method is being used. The scanner function opens the .vhd files, which are
very similar to text files. A try-catch loop is used to loop through the .vhd files until it has
been completed parse through. The program can now parse to each line of the .vhd files to
find the key words that relate to signals, e.g. vector. An original technique that was being
used was to use other scanner methods such as “scanner.findInLine()” but this was an
inefficient method of performing a search as it required parse the file and then parsing
through each line separately.
5
A different, more efficient method, called Regular expression was chosen. Regular
expression is a special search mechanism in which lines of text are compared to predefined
patterns and if there is a match the program can choose certain words from within the line.
The regex method is difficult to understand but is much more efficient.
Figure 3: Example of Java Regex function.
2.4 Display signals on GUI: The display will change as these steps take place:



The end program will prompt the user to enter the location of the .prj file that relate
to the user .vhd files.
The GUI will then display all the internal signals, which the user can choose to view
as outputs.
The user will then press a button to upload the code to the RFL, from which they will
be prompted to enter their log in details.
2.5 Database: The DataAccess.java class defines how the signal data is stored. Each
instance of the DataAccess class relates to one signal within the .vhd files and each
DataAccess instance contains information about the signal, such as its name, size (Vector,
scalar, etc.), direction, the component in which the signal is declared and the name of
the .vhd file in which it is declared. As different bits of information that relate to each signal
are parsed at different stages, each DataAccess element (name, size, etc) must have get and
set functions. The get and set functions allow the program to declare and return values at
any stage in the parsing process.
6
Figure 4: Code from DataAccess Class.
As there will be multiple signals for each .vhd files each instance of the DataAccess class
must be stored. An array would be a good solution to this problem. An array operates by the
programmer declaring the size of the array, e.g. if there were five signals in the .vhd file the
programmer would have to declare an arraylist of size five. Each .vhd file can have different
number of signals so this method wouldn’t work. To expand this method, the program could
prompt the user to enter the number of signals in the .vhd files. This wouldn’t be an ideal
situation as the user may not know the number of signals featured in the .vhd files and the
end program should prompt the user for as little information as possible. A dynamic array is
needed and this is called an arraylist. This continues to create instances of DataAccess as
long as there are signals to be stored.
2.6 Modifying VHDL files: The end program will allow the user to choose internal
signals and change these to outputs. This allows the user to view the values of these internal
signals, which is very useful for testing. To implement this, the internal signals will have to
be declared in the port map section of the .vhd file. In relation to the GUI the user will select
a button beside each internal signal to allow the signal to be viewed on an output pin.
2.7 Automate bit generation: A bit file is bit stream that is used to download VHDL
files to FPGA boards. The Xilinx ISE tool carries this process out. To automate the process,
the developed program will have to access the Windows command line. The Xilinx ISE is
7
installed in a default location of “c:\xilinx\”. By completing this task with will enable to user
to upload VHDL files quicker and easier to the RFL webpage.
2.8 Tasks Completed: To date the sections mark 2.1 to 2.5 have been completed.
Sections 2.6 and 2.7 will be completed in the foreseeable future. As the project is divided
into two sections, much of the next semester will be spent on section two, while section one
is being used in real world testing.
3 IEEE Standards
3.1 Introduction: ‘The Institute of Electrical and Electronic Engineers (IEEE) is the world’s
largest professional association dedicated to advancing technological innovation and
excellence for the benefit of humanity’. [2] The main aim of the IEEE 1500 Standard is to
facilitate the testing of embedded logic by design the SoCs for test. The IEEE 1500 Standard
relates very closely to both the IEEE 1450.6 and the IEEE 1149.1. Incorporating design for
test methods in SoCs is very useful as if the chip fails, entering a certain sequence of bits
into the SoC will help the manufacturer locate the problem.
3.2 IEEE 1149.1: The aim of the IEEE 1149.1 standard [3] was to create methods and
mechanisms for testing populated printed circuit boards (PCB). This standard was originally
released in 1990, after many years of research, and is still widely used to this day.
The IEEE Standard 1149.1 is sometimes referred to as its more common name of Joint Test
Action Group (JTAG). JTAG uses methods, such as debugging, storing data in the volatile/
non-volatile memory and boundary scanning, to test printed circuit boards. The method of
interfacing with the chip requires the chip to have 4/5-pins available for the JTAG. The five
pins are:
1. TDI (Test Data In) this signal supplies the data to the JTAG registers.
2. TDO (Test Data Out) this signal serially outputs the data from the JTAG registers and
sends the data to the next chip’s TDI.
3. TCK (Test Clock) is the clock signal, which controls the timing of the test.
4. TMS (Test Mode Select) controls the state changes of the TAP controller. See figure 2
for example.
5. TRST (Test Reset) resets the test interface, but the signal is optional.
A very useful feature of the standard includes the ability to connect multiple chips in a daisy
chain by connecting the TDO of one chip to the TDI of another chip, while each chip is
directly connected to signals TMS and TCK, as seen in the figure below.
8
Figure 5: Example of multiple chips connected in a scan chain [4].
JTAG uses Test Access Port (TAP) controllers to control the JTAG testing. A TAP controller is
really just a state machine, which is controlled by the TMS signal. Figure 2 is an example of a
TAP controller. By looking at figure 2 it is clear to see that there are two distinctive paths,
one for the Data Register (DR) path and one for the Instruction Register (IR) path. The test
interface is controlled by the IR, which selects between the different data registers to be
used during testing. The IR takes in the test to be carried and the DR to be used during the
test and implements these in the TAP controller. In accordance with the IEEE 1149.1
standard, there must be four mandatory instructions. These are:
1. BYPASS: Connects TDI directly to TDO. This function is used to skip devices so that
the correct device can be tested.
2. EXTEST: External Test - Is used to test off-chip circuitry and board level
interconnections.
3. IDCODE: Also a code to be serially read from a component that shows,

The manufacturer’s identity,

The part number,

The version number for the part.
4. INTEST: Internal Test – Allows for testing of the logic components while the chip is
assembled
9
Figure 6: Example of TAP controller [5].
Boundary scanning gives the user the ability to read data at certain pins, load pins with
specific values or check for faults, such as open/closed circuits. Boundary Scan operates by
having ‘cells’ that are added to certain pins of the device, which can override the value at
the pin. Two ‘cells’ can operate together, one sending data and the other receiving, to
determine if there is a fault on the board by using the interconnections on the board.
Boundary Scan uses the JTAG access methods discussed above.
3.3 IEEE 1450.6: The IEEE 1450.6 standard [6] is a language created for a System-on-Chip
(SoC) flow test which facilitates the reuse of designs. This standard can be viewed as an
addition to the IEEE 1450 standard [7], Standard Test Interface Language (STIL), to enable
STIL to be used in more complex applications.
The IEEE 1450 standard or STIL was created to provide an interface between digital test
generation tools and the test equipment. STIL is not just designed for one particular tester
but with the addition of a translator data can be changed to suit a particular type of tester.
This capability is referred to as Tester Rules Checking. STIL represents information that
defines digital test operations but it does not describe how the tester carries out the task.
The IEEE 1450.6 standard is known as Standard Test Interface Language (STIL) for Digital
Test Vector Data or simply Core Test Language (CTL). The standard is an extension of the
IEEE 1450 standard and is very heavily related to the IEEE 1500 standard. One of the main
additional features of CTL to STIL is the ability to reuse test patterns.
CTL facilitates the reuse of a design, created by one group and reused as a sub-design
created by another group. CTL has the ability to model core wrapper and core test
information and send it to core users without disclosing any RTL or gate-level description of
the core. CTL is also designed to be a transfer mechanism of test information between a
core provider and a system integrator to allow for interoperability between producer and
consumer. Some useful features of CTL include:

Constructs to support many different cores and test methodologies.
10

Support of the IEEE 1500 standard in creating wrapper architecture.
3.4 IEEE 1500: The IEEE 1500 standard [8] presents an efficient method to access
wrapped, circuitry around embedded core to facilitate test reuse and interfacing between
core and Test Access Mechanism (TAM), cores while reducing total test time and silicon
overheads. The standard just focuses on the efficient testing of the digital aspect of SoC’s
and doesn’t address the analogue aspect. The standard is an extension of the IEEE Standard
1149.1.
The IEEE 1500 standard is very closely related to the IEEE 1149.1 standard, as one of the
main goals is to enable test reuse, while also reducing overall production time. The standard
attempts to do this by introducing the reuse of cores, which has a knock-on effect of
enabling test reuse. But as circuits become smaller and more complex, it becomes more
difficult to access these cores and also test them. The standard also promotes good designfor-test techniques.
One method of achieving these demands is to use a multiplexed architecture rather than a
distributed architecture. A multiplexed architecture can operate in a hybrid combination,
both serial and parallel, while distributed architecture can only operate in serial. Distributed
architecture can be very inefficient for bigger systems and leads to very big test times.
Another bonus of the multiplexed architecture is clear when accessing external logic, is that
the test methods are independent of the cores.
Each wrapper must have a Wrapper Instruction Register (WIR), Wrapper BYpass register
(WBY) and a Wrapper Boundary Register (WBR). The WIR enables all IEEE 1500 standard
operations by taking data in from the Wrapper Serial Port (WSP). The WBY connects the
Wrapper Serial Input (WSI) directly to the Wrapper Serial Output (WSO), i.e. by passing the
core. The WBY is setup as the default register, so if the wrapper isn’t selected, the scan
chain length is automatically reduced. The WBY register is very useful if the IEEE 1500
wrappers are connected in series as the scan chain length will be reduced, which will greatly
help reduce test time and increase efficiency. The WBR is used when a core is being tested,
the data is applied and the outputs are captured. The register allows the internal testing of
the core, while also testing the connectivity to other cores and circuitry. Shown in the figure
below is an example of a wrapper core featuring the WIR, WBY and WBR registers.
11
Figure 7: Example of wrapper core featuring WBR, WBY and WIR [9].
3.5 Task Completed: Tasks completed to date on this section are minimal. Some
background research has been done on the standards that relate to the wrapping of SoCs
but a much more thorough analysis will have to be carried out. This section will be
undertaken in semester two of the year.
4 References:
[1] About Remote FPGA Lab, RemoteFPGA, viewed 14 December 2011, <
http://remotefpga.com/w/home/>.
[2] IEEE. About IEEE, IEEE, viewed 15 December 2011, < http://www.ieee.org/index.html>.
[3] Institute of Electrical and Electronics Engineers (1990) IEEE Std 1149.1-1990: IEEE
Standard Test Access Port and Boundary-Scan Architecture: IEEE.
[4] Whitis, Mark. Single Scan Chain, Mark Whitis's Website, viewed 15 December 2011,
<http://www.freelabs.com/~whitis/electronics/jtag/>.
[5] Woodward, Joel. 2010 JTAG TAP Controller, ECN, viewed 15 December 2011,
<http://www.ecnmag.com/Articles/2010/07/Design-Talk/Scopes-Deliver-Advanced-JTAGDebug-Capabilities/>.
[6] Institute of Electrical and Electronics Engineers (2006) IEEE Std 1450.6-2005 IEEE
Standard Test Interface Language (STIL) for Digital Vector Data-Core Test Language (CTL):
IEEE.
[7] Institute of Electrical and Electronics Engineers (1999) IEEE Std 1450-1999 IEEE Standard
Test Interface Language (STIL) for Digital Test Vector Data: IEEE.
12
[8] Institute of Electrical and Electronics Engineers (2005) IEEE Std 1500-2005 Standard
Testability Method for Embedded Core-Based Integrated Circuits: IEEE.
[9] SECT eVC applied to a P1500 Wrapper core, 2009, Globetech, viewed 16 December 2011,
<http://www.globetechsolutions.com/index.php?module=articles&func=display&aid=70&pt
id=12&catid=111>
13
Download