1. Technical Field
The present invention relates to a test apparatus and a debug method.
2. Related Art
A test apparatus for testing a semiconductor device, for example, judges pass/fail of the device under test by inputting a test signal having a prescribed pattern to the device under test and measuring a signal output by the device under test in response to the test signal. A test apparatus that tests a device under test using a prescribed pattern is described in Japanese Patent Application Publication No. 2006-058251, for example.
An increase in the circuit size of the device under test causes the pattern for the test signal to become more complicated. In particular, when testing a device under test that has a function for transmitting and receiving data in packets, the test apparatus must perform a data handshake with the device under test. Furthermore, the test apparatus must transmit a wait packet and prepare the next transmission while waiting for a response from the device under test during the handshake, in order to be able to respond quickly.
Accordingly, when testing a device that has a function for transmitting and receiving data in packets, a complicated test pattern must be input to the test apparatus. Furthermore, the test pattern is a data sequence including values of 0 and 1, and therefore it is difficult to determine whether the test pattern has been correctly transmitted or received during the handshake.
Therefore, it is an object of an aspect of the innovations herein to provide a test apparatus and a debug method, which are capable of overcoming the above drawbacks accompanying the related art. The above and other objects can be achieved by combinations described in the independent claims. According to a first aspect related to the innovations herein, provided is a test apparatus that tests a device under test by communicating with the device under test using packets that each include one or more command sequences, the test apparatus comprising a transmitting/receiving section that transmits and receives the packets to and from the device under test based on packet sequence information designating an order in which the packets are transmitted and received between the device under test and each pin of the test apparatus; and a display section that displays information indicating the packets transmitted and received between the device under test and each pin of the test apparatus, arranged in time sequence.
According to a second aspect related to the innovations herein, provided is a test apparatus in which the display section displays information of each packet transmitted or received in parallel on a time axis set in common for each pin of the test apparatus.
According to a third aspect related to the innovations herein, provided is a test apparatus in which each packet includes identification information identifying a type of the packet, and the display section displays information including the identification information of each packet.
According to a fourth aspect related to the innovations herein, provided is a test apparatus further comprising a detecting section that detects the identification information of each packet transmitted to or received from the device under test, in which the display section displays information including the identification information detected by the detecting section.
According to a fifth aspect related to the innovations herein, provided is a test apparatus in which the display section displays the packets with different appearances, according to the type of the packet.
According to a sixth aspect related to the innovations herein, provided is a test apparatus further comprising a comparing section that compares a data value of a predetermined one of the packets received from the device under test to a predetermined expected value, in which the display section displays the packets with different appearances, according to a result of the comparison by the comparing section.
According to a seventh aspect related to the innovations herein, provided is a test apparatus in which the display section displays source code of the packet sequence information together with information indicating the packets transmitted or received according to the packet sequence information.
According to an eighth aspect related to the innovations herein, provided is a test apparatus in which further comprising an editing section that designates a location in the source code of the packet sequence information displayed by the display section and, when editing information for changing content of the location is received, changes the content of the location in the source code of the packet sequence information.
According to a ninth aspect related to the innovations herein, provided is a test apparatus further comprising a packet designating section that, when designation information is received designating a piece of information from among the pieces of information indicating the packets displayed by the display section, displays in the display section the source code of the packet corresponding to the designation information.
The summary clause does not necessarily describe all necessary features of the embodiments of the present invention. The present invention may also be a sub-combination of the features described above.
Hereinafter, some embodiments of the present invention will be described. The embodiments do not limit the invention according to the claims, and all the combinations of the features described in the embodiments are not necessarily essential to means provided by aspects of the invention.
The transmitting/receiving section 100 transmits and receives packets to and from the device under test 200, based on a procedure in which is recorded packet sequence information (referred to hereinafter as “packet lists”) designating an order in which the packets are to be transmitted between the device under test 200 and each pin of the test apparatus 10. More specifically, the transmitting/receiving section 100 transmits and receives packets to and from the device under test 200 by executing a test program that includes a series of one or more procedures. The transmitting/receiving section 100 may store the test program in a recording medium, such as a non-volatile memory.
The test apparatus 10 may transmit to and receive from the device under test 200 various types of packets including write packets (Write) having a function for writing data to the device under test 200, read packets (Read) having a function for reading data from the device under test 200, and test packets (Test) having a function for inputting test data to the device under test 200. The test apparatus 10 may transmit to the device under test 200 a wait packet that includes information indicating an idle state during which functions are not performed, when not transmitting packets for executing the functions described above.
The test apparatus 10 may include a plurality of pins, and each pin may be connected to a plurality of different pins of the device under test 200. The test apparatus 10 and the device under test 200 may transmit and receive serial communication data in a USB or IEEE 1394 format, for example, via the pins. The transmitting/receiving section 100 may sequentially transmit and receive packets among a plurality of pins of the device under test 200, according to the packet lists recorded in the procedures.
The transmitting/receiving section 100 includes an execution processing section 11, a transmission-side block 12, and a reception-side block 14. The execution processing section 11 executes a test program including one or more procedures in series. The transmission-side block 12 is controlled by the execution processing section 11 to transmit packets to an input pin of the device under test 200. More specifically, the transmission-side block 12 assembles the packets designated by the packet list recorded in the procedure executed by the execution processing section 11 into a prescribed format, and then transmits the packets to the device under test 200.
The reception-side block 14 receives packets output by an output pin of the device under test 200. The reception-side block 14 may input to the execution processing section 11, as a variable value, a data value included in the packet received from the device under test 200.
The main control section 102 controls operation of the test apparatus 10. For example, the main control section 102 may instruct the transmitting/receiving section 100 to begin transmitting and receiving packets. The main memory 104 stores the data included in the packets transmitted by the transmitting/receiving section 100 and the data included in the packets received by the transmitting/receiving section 100.
The display section 106 displays information indicating the packets transmitted between the device under test 200 and each pin of the test apparatus 10, in time sequence. The information indicating the packets may be information identifying the packet type, source code corresponding to the packet, and a data value included in the packet, for example. The display section 106 may display information corresponding to packets that are actually transmitted to or received from the device under test 200 by the transmitting/receiving section 100. As another example, the display section 106 may display information corresponding to hypothetical packets transmitted or received by the transmitting/receiving section 100 acquired via a simulation.
The display section 106 displays information concerning the transmitted and received packets in parallel along a time axis that is set to be common for each pin of the test apparatus 10. For example, if the test apparatus 10 includes reception pins RX0 and RX1 and a transmission pin TX0, the display section 106 may arrange display regions corresponding to RX0, RX1, and TX0 in a horizontal direction on the display screen. The display section 106 may display each piece of information indicating a packet transmitted or received by a pin in a vertical direction within the display region of the corresponding pin, in an order according to the time of the transmission or reception.
The transmitting/receiving section 100 transmits and receives packets that include identification information for identifying the type of packet being transmitted or received. For example, the transmitting/receiving section 100 may attach packet information indicating whether the packet being transmitted or received is a write packet, a read packet, a test packet, or a wait packet.
The detecting section 108 is connected to the transmitting/receiving section 100. The detecting section 108 detects the identification information of packets transmitted between the transmitting/receiving section 100 and the device under test 200. The detecting section 108 detects the identification information of packets transmitted by the transmission-side block 12 to the device under test 200 and the identification information of packets received by the reception-side block 14 from the device under test 200. The detecting section 108 may detect the identification information of the packets by acquiring the packet list from the execution processing section 11. For example, the detecting section 108 may detect the packet function name in the packet list as the identification information of the packet.
The detecting section 108 inputs the detected identification information into the display section 106. The display section 106 displays information that includes the identification information detected by the detecting section 108. The display section 106 may display each packet using a different appearance, according to the type of packet. For example, the display section 106 may display each packet using a color or pattern that corresponds to the packet type.
The comparing section 110 compares a data value of a prescribed packet received from the device under test 200 to an expected value. The comparing section 110 may be supplied with the packet received by the reception-side block 14, and compare the data included in this packet to an expected value acquired from the execution processing section 11. The comparing section 110 inputs the comparison result to the display section 106. The comparing section 110 may be included in the reception-side block 14.
The display section 106 may display the packets using different appearances, according to the comparison results of the comparing section 110. For example, the display section 106 may use different colors or patterns to display a case in which the data included in the packet received by the reception-side block 14 matches the expected value and a case in which the data included in the packet received by the reception-side block 14 does not match the expected value.
Furthermore, the display section 106 may display a source code of the procedure along with information indicating the packets transmitted and received according to the packet list. The source code of the procedure is a code in which are recorded packet functions corresponding to the types of packets being transmitted and received. The display section 106 may include a plurality of windows in the display screen. The display section 106 may simultaneously display information indicating the data included in the packets transmitted or received by the transmitting/receiving section 100 in a first window and the source code of the procedure in a second window.
For example, Procedure 1 in
In the example of
Each packet includes a start code and an end code. Furthermore, each packet includes a command indicating the type of the packet. The start code, end code, and command are set for each type of packet. The data region of each packet stores data that is recorded in the source code of the test program.
More specifically, the test program may include NOP commands, IDXI commands, and an EXIT command, for example. Each NOP command generates the packet associated with the NOP command once, and then causes the next command to be executed. Each IDXI command generates the packet associated with the IDXI command a designated number of times, and then causes the next command to be executed. The EXIT command generates the packet associated with the EXIT command once, and then ends the packet list execution. The commands included in the test program are not limited to the above examples, and the test program may include branching commands that cause the next command to be executed to be determined according to whether designated conditions are fulfilled.
The test program may have recorded therein the type of packet for identifying whether a packet is a write packet, a read packet, or a wait packet that repeatedly generates a prescribed code. The test program may include leading addresses at which are stored command sequences for generating the packets, or leading addresses of common data included in the packets and leading addresses of individual data included in the packets.
The display section 106 displays information relating each packet list transmitted or received by one of the pins RX0, RX1, and TX0. More specifically, the display section 106 displays the packet type and the information included in the packet for each packet, in an order according to the time at which the packet is transmitted or received. For example, for the pin RX0, the display section 106 sequentially displays a test packet, a wait packet, a write packet, and a read packet. The display section 106 may display a different pattern or color for each packet type.
If the data acquired from the device under test 200 after the test packet is transmitted to the device under test 200 differs from the expected value, the display section 106 may display the result with a specified color or pattern. For example, at S601 in
The test apparatus 10 compares the expected value to each response signal received from the device under test 200 after a test packet is transmitted thereto. The display section 106 may display a first appearance when the comparison result indicates a match and display a second appearance when the comparison result indicates a mismatch. In the example of
The display section 106 can display a specified color or pattern for only packets that are actually transmitted to the device under test 200. For example, when the procedure includes a branching command, a packet function cannot be executed if the packet function is not fulfilled. In
The names of the pins displayed in the display section 106 may each indicate a group including a plurality of pins. For example, the display RX0 may represent pins relating to a first communication type, such as USB, and the RX1 display may represent pins relating to a second communication type, such as IEEE 1394.
As described above, the test apparatus 10 of the present embodiment tests the device under test 200 by transmitting a plurality of types of packets to the device under test 200 in the order recorded in the test program. Furthermore, the test apparatus 10 displays information relating to the packets that are sent to the device under test 200 and the source code of the procedure. As a result, a user of the test apparatus 10 can easily recognize the content of the test being performed or an error in the test pattern, for example.
In the edit mode, the test apparatus 10 may be operated by a user to change data values in the packet functions recorded in the source code. The test apparatus 10 may be operated to add a packet function to the source code, or to delete a packet function. When the “END EDITING” button is clicked, the editing section 112 saves the source code that is currently displayed.
When designation information is received that designates one piece of information among the pieces of information indicating the packets displayed by the display section 106, the packet designating section 114 causes the display section 106 to display the source code of a packet function corresponding to this designation information. When the region displaying the information indicating a packet is clicked, the packet designating section 114 may display the source code of this packet and the data value of the source code in the display section 106.
In the manner described above, the test apparatus 10 of the present embodiment can edit the source code of a displayed packet function and procedure. Accordingly, the user can easily change the pattern of the test signal.
Next, upon receiving step execution instructions from the user, the display section 106 moves the arrow to the position indicating the following packet function in
The test apparatus 10 may execute packets designated by the user in series. The test apparatus 10 may execute packets with intervals therebetween designated by the user. In this way, the test apparatus 10 of the present embodiment enables the user to select conditions for executing the packets. Accordingly, the cause of problems occurring during testing of the device under test 200 can be easily identified.
The test program storage section 122 stores the test programs. The test program storage section 122 may acquire the test programs from the main memory 104. The program supplying section 124 extracts a plurality of packet lists from a test program stored in the test program storage section 122, and stores the packet lists in packet list storage sections 20 in the transmission-side block 12 and the reception-side block 14. The program supplying section 124 generates a control program, in which is recorded a control flow for sequentially executing the packet lists extracted from the test program, and supplies the control program to the flow control section 126.
The flow control section 126 designates, for the transmission-side block 12 and the reception-side block 14, the order in which the packet lists are to be executed, according to the execution flow of the test program. More specifically, the flow control section 126 executes the control program received from the program supplying section 124, to identify for the transmission-side block 12 and the reception-side block 14 the next packet list to be executed. For example, the flow control section 126 may transmit to the transmission-side block 12 and the reception-side block 14 an address of the packet list to be executed next.
If the control program includes computations such as conditional branching, unconditional branching, or subroutine acquisition, the flow control section 126 may cause the main control section 102 to execute the control program. The flow control section 126 may identify the packet list to be executed next based on the computation results of the computation by the main control section 102. In this case, the flow control section 126 may wait to identify the next packet list until receiving the computation result from the main control section 102, and select the packet list to identify according to the computation result.
The packet list storage section 20 stores a plurality of packet lists supplied from the program supplying section 124. The packet list processing section 22 executes a packet list based on the address designated by the flow control section 126, from among the packet lists stored in the packet list storage section 20, to sequentially designate the packets to be transmitted to the device under test 200.
The packet list processing section 22 may designate an address, e.g. a leading address, in the packet command sequence storage section 24 of a command sequence for generating the designated packet, fore example, for each packet to be transmitted to the device under test 200. Furthermore, the packet list processing section 22 may designate an address, e.g. a leading address, of a data sequence included in the packet in the packet data sequence storage section 26 to be transmitted to the device under test 200.
In this way, the packet list processing section 22 individually designates an address of a command sequence for generating a packet and an address of a data sequence included in the packet. In this case, if a command sequence or data sequence is designated that is common to two or more packets in the packet list, the packet list processing section 22 may designate the same command sequence address or the same data sequence address for the two or more packets.
The packet command sequence storage section 24 stores, for each type of packet, a command sequence for generating a corresponding type of packets. For example, the packet command sequence storage section 24 may store a command sequence for generating write packets, a command sequence for generating read packets, and a command sequence for generating wait packets.
The packet data sequence storage section 26 stores, for each type of packet, a data sequence included in a corresponding type of packet. For example, the packet data sequence storage section 26 may store a data sequence included in a write packet, a data sequence included in a read packet, and a data sequence included in a wait packet.
The packet data sequence storage section 26 may include a common data storage section 40, a common data pointer 42, a first individual data storage section 44-1, a second individual data storage section 44-2, a first individual data pointer 46-1, and a second individual data pointer 46-2. The common data storage section 40 stores common data that is shared among the packet types, in a data sequence included in each type of packet. The common data storage section 40 may store, for each packet type, a start code indicating the start of the packet, an end code indicating the end of the packet, and a command code for identifying the type of the packet.
The common data pointer 42 acquires, from the packet list processing section 22, a leading address of a block in which is stored the common data included in the packet designated by the packet list processing section 22. Furthermore, the common data pointer 42 acquires from the lower-level sequencer 28 an offset position within the block. The common data pointer 42 provides the common data storage section 40 with the address determined based on the leading address and the offset position, e.g. an address that is the sum of the leading address and the offset position, and supplies the data processing section 32 with the common data stored at this address.
The first and second individual data storage sections 44-1 and 44-2 store individual data that changes for each packet, in the data sequence included in each packet type. The first and second individual data storage sections 44-1 and 44-2 may store actual data transmitted to the device under test 200 or actual data received from the device under test 200, which is included in each packet.
The first individual data storage section 44-1 stores predetermined individual data that is not affected by the test program being executed. The second individual data storage section 44-2 stores individual data that is changed for each test program executed. For example, the second individual data storage section 44-2 receives individual data from the main memory 104, either before testing or during testing as desired.
The first and second individual data pointers 46-1 and 46-2 receive from the packet list processing section 22 the leading address of the block in which is stored the individual data included in the packet designated by the packet list processing section 22. Furthermore, the first and second individual data pointers 46-1 and 46-2 acquire from the lower-level sequencer 28 the offset position in this block. The first and second individual data pointers 46-1 and 46-2 supply the first and second individual data storage sections 44-1 and 44-2 with the address determined based on the leading address and the offset position, e.g. an address that is the sum of the leading address and the offset position, and supply the data processing section 32 with the individual data stored at this address.
The lower-level sequencer 28 reads from the packet command sequence storage section 24 the command sequence of the packet designated by the packet list processing section 22, i.e. the command sequence at the address designated by the packet list processing section 22, and sequentially executes the commands included in the read command sequence. Furthermore, the lower-level sequencer 28 sequentially reads from the packet data sequence storage section 26, according to the command sequence execution, the data sequence of the packet designated by the packet list processing section 22, i.e. the data sequence at the address designated by the packet list processing section 22, and generates the test data pattern used for testing the device under test 200.
The lower-level sequencer 28 may supply the common data pointer 42, the individual data pointer 46-1, and the individual data pointer 46-2 with the offset position indicating the position of the data corresponding to the executed command in the block storing the data sequence included in the packet designated by the packet list processing section 22, for example. In this case, the lower-level sequencer 28 may generate an expected value at the first command and generate the offset position to be a count value that is incremented each time the command being executed changes. The command sequences executed by the lower-level sequencer 28 preferably do not include jump-forward commands or branching commands. As a result, the lower-level sequencer 28 can achieve high-speed processing with a simple configuration.
For each command execution, the lower-level sequencer 28 supplies the data processing section 32 with control data instructing application of a designated process, e.g. a computation or data conversion, to the read individual data or the common data. As a result, the lower-level sequencer 28 can cause a designated data portion in the packet designated by the packet list processing section 22 to be data resulting from a designated process being applied to the read data.
For each command execution, the lower-level sequencer 28 designates which of the common data, the individual data, and the data processed by the data processing section 32 is output by the data processing section 32. Here, the individual data is the predetermined individual data that is not affected by the test program being executed or the individual data that changes for each packet being executed. In other words, for each command execution, the lower-level sequencer 28 designates, for the data processing section 32, that data is to be read and output from one of the common data storage section 40, the first individual data storage section 44-1, the second individual data storage section 44-2, and the register storing the processed data in the data processing section 32.
As a result, the lower-level sequencer 28 can generate the data portion that changes for each packet in the packet designated by the packet list processing section 22, based on the individual data read from the individual data storage section 44. Furthermore, the lower-level sequencer 28 can generate the data portion common to each packet type in the packet designated by the packet list processing section 22, based on the common data read from the common data storage section 40. Yet further, the lower-level sequencer 28 can cause the designated data portion in the packet designated by the packet list processing section 22 to be data resulting from the designated process being applied to the read data.
The transmission-side lower-level sequencer 28 may notify the reception-side lower-level sequencer 28 that a test data sequence of the predesignated packet has been transmitted to the device under test 200, for example. In this way, the transmission-side lower-level sequencer 28 can prevent the judging section 84 from making the pass/fail judgment of the data received by the receiving section 82 until the reception-side lower-level sequencer 28 receives notification from the transmission-side lower-level sequencer 28.
The transmission-side lower-level sequencer 28 may receive notification from the reception-side lower-level sequencer 28 that a data sequence matching the generated test data sequence has been received, and generate the test sequence data of the predesignated packet, for example. In this way, the transmission-side lower-level sequencer 28 can transmit the predesignated packet to the device under test 200 after the prescribed packet is received from the device under test 200.
The data processing section 32 may receive data from the common data storage section 40, the first individual data storage section 44-1, and the second individual data storage section 44-2, perform the process designated by the lower-level sequencer 28 on the received data, and output the result as the data of the test data sequence. Depending on the content of the designation by the lower-level sequencer 28, the data processing section 32 may output the received data as-is, as the test data sequence. The transmitting section 34 transmits the test data sequence output by the data processing section 32 to the device under test 200.
The reception-side block 14 includes a packet list storage section 20, a packet list processing section 22, a packet command sequence storage section 24, a packet data sequence storage section 26, a lower-level sequencer 28, a data processing section 32, a receiving section 82, and a judging section 84. The receiving section 82 receives the data sequences of reception packets from the device under test 200. The data processing section 32 in the reception-side block 14 receives the data sequence received by the receiving section 82, and outputs the received data sequence together with the generated test data sequence.
The lower-level sequencer 28 in the reception-side block 14 outputs the data sequence of the packet expected to be output from the device under test 200, as the test data sequence. The lower-level sequencer 28 in the reception-side block 14 designates, for the receiving section 82, a strobe timing for acquiring the data value of the signal output from the device under test 200.
The judging section 84 receives, from the data processing section 32, the test data sequence and the data sequence received by the receiving section 82. The judging section 84 judges pass/fail of the communication with the device under test 200, based on the result of a comparison between the data sequence received by the receiving section 82 and the test data sequence. For example, the judging section 84 may include a logic comparing section that makes a comparison to determine whether the test data sequence and the data sequence received by the receiving section 82 match, and a fail memory that records the comparison results.
The lower-level sequencer 28 in the reception-side block 14 communicates with the transmission-side lower-level sequencer 28 of the transmission-side block 12 shown in
The reception-side lower-level sequencer 28 may notify the transmission-side lower-level sequencer 28 when a data sequence is received that matches the test data sequence generated by the reception-side lower-level sequencer 28. As a result, the transmission-side lower-level sequencer 28 can receive the notification from the reception-side lower-level sequencer 28 that a data sequence matching the generated test data sequence is received, and generate the test data pattern of the predesignated packet.
The reception-side lower-level sequencer 28 may prohibit the judging section 84 from performing the pass/fail judgment of the data sequence received by the receiving section 82 until notification is received from the transmission-side lower-level sequencer 28 that the test data sequence of the predesignated packet has been transmitted to the device under test 200. As a result, the reception-side lower-level sequencer 28 can judge whether the device under test 200 has output a response to the prescribed packet after the prescribed packet has been transmitted to the device under test 200.
While the embodiments of the present invention have been described, the technical scope of the invention is not limited to the above described embodiments. It is apparent to persons skilled in the art that various alterations and improvements can be added to the above-described embodiments. It is also apparent from the scope of the claims that the embodiments added with such alterations or improvements can be included in the technical scope of the invention.
The operations, procedures, steps, and stages of each process performed by an apparatus, system, program, and method shown in the claims, embodiments, or diagrams can be performed in any order as long as the order is not indicated by “prior to,” “before,” or the like and as long as the output from a previous process is not used in a later process. Even if the process flow is described using phrases such as “first” or “next” in the claims, embodiments, or diagrams, it does not necessarily mean that the process must be performed in this order.
As made clear from the above, the embodiments of the present invention can be used to achieve a debug method and a test apparatus that can identify whether a test pattern is correctly transmitted or received during a handshake.
Number | Date | Country | |
---|---|---|---|
Parent | PCT/JP2009/002404 | May 2009 | US |
Child | 13118586 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 12329635 | Dec 2008 | US |
Child | PCT/JP2009/002404 | US |