U.S. patent application number 14/617522 was filed with the patent office on 2016-05-19 for testbench builder, system, device and method including a generic driver and transporter.
The applicant listed for this patent is XPLIANT, INC.. Invention is credited to Keqin Kenneth Han, Saurin Patel, Nimalan Siva, Polasanapalli Sri Devi.
Application Number | 20160139204 14/617522 |
Document ID | / |
Family ID | 55807525 |
Filed Date | 2016-05-19 |
United States Patent
Application |
20160139204 |
Kind Code |
A1 |
Han; Keqin Kenneth ; et
al. |
May 19, 2016 |
TESTBENCH BUILDER, SYSTEM, DEVICE AND METHOD INCLUDING A GENERIC
DRIVER AND TRANSPORTER
Abstract
A testbench for testing a device under test (DUT), wherein the
testbench has a verification environment including a reference
model, a scoreboard and a customized agent for each interface that
the DUT needs to receive input from and/or transmit output on. The
testbench system is able to be generated by a testbench builder
that automatically creates a scoreboard, a reference model, a
dispatcher and generic agents including generic drivers, loopback
ports, sequencers and/or generic monitors for each interface and
then automatically customize the generic agents based on their
corresponding interface such that the agents meet the requirements
of the interface for the DUT.
Inventors: |
Han; Keqin Kenneth;
(Fremont, CA) ; Siva; Nimalan; (San Ramon, CA)
; Patel; Saurin; (San Jose, CA) ; Sri Devi;
Polasanapalli; (San Jose, CA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
XPLIANT, INC. |
San Jose |
CA |
US |
|
|
Family ID: |
55807525 |
Appl. No.: |
14/617522 |
Filed: |
February 9, 2015 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
62080174 |
Nov 14, 2014 |
|
|
|
62080158 |
Nov 14, 2014 |
|
|
|
62080214 |
Nov 14, 2014 |
|
|
|
62080194 |
Nov 14, 2014 |
|
|
|
62080235 |
Nov 14, 2014 |
|
|
|
Current U.S.
Class: |
702/120 |
Current CPC
Class: |
G06F 11/2273 20130101;
G06F 30/20 20200101; G06F 11/364 20130101; G06F 11/263 20130101;
G01R 31/3177 20130101; H04L 43/14 20130101; G06F 11/261 20130101;
G01R 31/31727 20130101; H04L 43/50 20130101; G01R 31/318314
20130101; G06F 30/398 20200101 |
International
Class: |
G01R 31/3183 20060101
G01R031/3183 |
Claims
1. A testbench system stored on a non-transitory computer readable
medium for testing operation of a device under test, the testbench
system comprising: a verification environment; and a plurality of
agents operating within the verification environment, wherein each
of the agents comprise: a sequencer configured to produce a
transaction for testing the device under test; a generic driver
coupled with the sequencer, wherein the driver is configured to
receive the transaction from the sequencer; and a transporter
coupled with the device under test via a interface, wherein the
transporter and the driver are together configured to perform a
handshake protocol with the device under test over the interface
associated with the agent based on a class of the interface and the
driver determines an outcome of the handshake protocol indicating
if the device under test is ready to receive the transaction;
wherein the each of the plurality of agents is configured to
forward the transaction to the device under test via the interface
associated with the agent based on the outcome.
2. The system of claim 1, wherein the driver of each of the agents
is configured to communicate with the transporter of the each of
the agents to forward the transaction to the device under test via
the interface if the outcome of the handshake protocol was
successful.
3. The system of claim 2, further comprising one or more additional
agents coupled with one or more of the plurality of agents, wherein
the one or more of the plurality of agents are configured to send
data received from the device under test to the one or more
additional agents.
4. The system of claim 3, wherein the handshake protocol comprises
one of the group consisting of a one-way handshake protocol without
destination flow control, a two-way handshake protocol and a
one-way handshake protocol with destination flow control.
5. The system of claim 4, wherein the handshake protocol of the
transporter of at least one of the plurality of agents is different
than the handshake protocol of the transporter of a different one
of the plurality of agents.
6. The system of claim 5, further comprising a scoreboard and a
reference model coupled to one or more of the plurality of agents,
wherein the plurality of agents each comprise a monitor.
7. The system of claim 6, wherein the device under test is a
virtual emulation of an electronic device.
8. The system of claim 7, wherein the handshake protocol of each of
the plurality of agents is based on the interface with which the
transporter is coupled to the device under test.
9. A testbench agent stored on a non-transitory computer readable
medium as a part of a verification environment for testing
operation of a device under test, the testbench agent comprising: a
sequencer configured to produce a transaction for testing the
device under test; a generic driver coupled with the sequencer,
wherein the driver is configured to receive the transaction from
the sequencer; and a transporter coupled with the device under test
via an interface, wherein the transporter and the driver are
together configured to perform a handshake protocol with the device
under test over the interface based on a class of the interface and
the driver determines an outcome of the handshake protocol
indicating if the device under test is ready to receive the
transaction, wherein the agent is configured to forward the
transaction to the device under test via the interface based on the
outcome.
10. The agent of claim 9, wherein the driver is configured to
communicate with the transporter to forward the transaction to the
device under test via the interface if the outcome of the handshake
protocol was successful.
11. The agent of claim 10, wherein the agent is coupled with one or
more additional agents within the verification environment and
configured to send data received from the device under test to the
one or more additional agents.
12. The agent of claim 11, wherein the handshake protocol comprises
one of the group consisting of a one-way handshake protocol without
destination flow control, a two-way handshake protocol and a
one-way handshake protocol with destination flow control.
13. The agent of claim 12, wherein the handshake protocol of the
transporter is different than a handshake protocol of a transporter
of the one or more additional agents.
14. The agent of claim 13, further comprising a monitor that is
coupled with a reference model or a scoreboard within the
verification environment.
15. The agent of claim 14, wherein the device under test is a
virtual emulation of an electronic device.
16. The agent of claim 15, wherein the handshake protocol is based
on the interface with which the transporter is coupled to the
device under test.
17. A testbench builder for generating a testbench for verification
of a device under test, wherein the testbench builder is stored on
a non-transitory computer readable medium and configured to perform
a method comprising: reading an interface configuration file
associated with the device under test and identifying one or more
interfaces associated with the device under test defined in the
interface configuration file; and generating a verification
environment including an agent for each of the interfaces in the
interface configuration file, wherein each of the agents comprise:
a sequencer configured to produce a transaction for testing the
device under test; a generic driver coupled with the sequencer,
wherein the driver is configured to receive the transaction from
the sequencer; and a transporter coupled with the device under test
via the interface associated with the agent, wherein the
transporter and the driver are together configured to perform a
handshake protocol with the device under test over the interface
associated with the agent based on a class of the interface and the
driver determines an outcome of the handshake protocol indicating
if the device under test is ready to receive the transaction;
wherein the each of the plurality of agents is configured to
forward the transaction to the device under test via the interface
associated with the agent based on the outcome.
18. The testbench builder of claim 17, wherein the driver of each
of the agents is configured to communicate with the transporter of
the each of the agents to forward the transaction to the device
under test via the interface if the outcome of the handshake
protocol was successful.
19. The testbench builder of claim 18, wherein at least one of the
agents is coupled with one or more additional agents within the
verification environment and configured to send data received from
the device under test to the one or more additional agents.
20. The testbench builder of claim 19, wherein the handshake
protocol comprises one of the group consisting of a one-way
handshake protocol without destination flow control, a two-way
handshake protocol and a one-way handshake protocol with
destination flow control.
21. The testbench builder of claim 20, wherein the handshake
protocol of the transporter of at least one of the agents is
different than the handshake protocol of the transporter of a
different one of the agents.
22. The testbench builder of claim 21, wherein the verification
environment further comprises a scoreboard and a reference model
coupled to one or more of the agents, wherein the agents each
comprise a monitor.
23. The testbench builder of claim 22, wherein the device under
test is a virtual emulation of an electronic device.
24. The testbench builder of claim 23, wherein the handshake
protocol of each of the agents is based on interface parameters of
the interface associated with the agent as defined in the interface
configuration file.
25. A method of testing a device under test within a verification
environment of a testbench, the method comprising: with an agent
within the verification environment: producing a transaction for
testing the device under test with a sequencer of the agent;
receiving the transaction from the sequencer with a generic driver
of the agent; performing a handshake protocol with the device under
test over an interface based on a class of the interface with the
driver and a transporter of the agent coupled with the device under
test via the interface; determining an outcome of the handshake
protocol indicating if the device under test is ready to receive
the transaction with the driver; and forwarding the transaction to
the device under test via the interface based on the outcome.
26. The method of claim 25, wherein forwarding the transaction to
the device under test comprises the driver communicating to the
transporter to forwards the transaction to the device under test
via the interface if the outcome of the handshake protocol was
successful.
27. The method of claim 26, wherein the agent is coupled with one
or more additional agents within the verification environment and
configured to send data received from the device under test to the
one or more additional agents.
28. The method of claim 27, wherein the handshake protocol
comprises one of the group consisting of a one-way handshake
protocol without destination flow control, a two-way handshake
protocol and a one-way handshake protocol with destination flow
control.
29. The method of claim 28, wherein the handshake protocol of the
transporter is different than a handshake protocol of a transporter
of the one or more additional agents.
30. The method of claim 29, wherein the verification environment
further comprises a monitor that is coupled with a reference model
or a scoreboard within the verification environment.
31. The method of claim 30, wherein the device under test is a
virtual emulation of an electronic device.
32. The method of claim 31, wherein the handshake protocol is based
on the interface with which the transporter is coupled to the
device under test.
Description
RELATED APPLICATIONS
[0001] This application claims priority under 35 U.S.C.
.sctn.119(e) of the co-pending U.S. provisional patent application
Ser. No. 62/080,174, filed Nov. 14, 2014, and titled "TESTBENCH
BUILDER, SYSTEM, DEVICE AND METHOD INCLUDING A GENERIC DRIVER AND
TRANSPORTER," the co-pending U.S. provisional patent application
Ser. No. 62/080,158, filed Nov. 14, 2014, and titled "TESTBENCH
BUILDER, SYSTEM, DEVICE AND METHOD," the co-pending U.S.
provisional patent application Ser. No. 62/080,214, filed Nov. 14,
2014, and titled "TESTBENCH BUILDER, SYSTEM, DEVICE AND METHOD
INCLUDING A DISPATCHER," the co-pending U.S. provisional patent
application Ser. No. 62/080,194, filed Nov. 14, 2014, and titled
"TESTBENCH BUILDER, SYSTEM, DEVICE AND METHOD INCLUDING A GENERIC
MONITOR AND TRANSPORTER," and the co-pending U.S. provisional
patent application Ser. No. 62/080,235, filed Nov. 14, 2014, and
titled "TESTBENCH BUILDER, SYSTEM, DEVICE AND METHOD HAVING AGENT
LOOPBACK FUNCTIONALITY," all of which are hereby incorporated by
reference.
FIELD OF INVENTION
[0002] The present invention relates to testbenches. More
particularly, the present invention relates to an automatic
testbench builder.
BACKGROUND OF THE INVENTION
[0003] When developing components for integration into a system, a
number of test procedures are typically performed to ensure that
the component will operate in the desired manner when integrated
into the system. The development of a hardware component (also
referred to herein as a device) typically takes place in a number
of stages. Firstly, the functional operation/behavior of the
component is defined, for example using a Register Transfer
Language (RTL). Two popular RTLs used are VHDL and Verilog. In
addition, prior to performing such RTL coding, a behavioral model
may be built using a UML.TM. (Universal Modeling Language) to
validate at a transactional level that the design intent is
correct. Once an RTL representation of the hardware component has
been developed, this is then synthesised into a sequence of
hardware elements using any of a number of known synthesising
tools. The result of the synthesis is a hardware design that can
then be used to produce the actual hardware component, for example
using appropriate fabrication of the component on silicon. It is
costly to perform test procedures on the component once it has been
reduced to hardware. Thus, testing of the RTL representation of the
component is typically performed to ensure that the actual hardware
generated from that RTL representation will operate correctly.
[0004] Such testing of the RTL representation typically involves
the use of a testbench model providing a test environment for the
RTL representation of the component, which is then run on a
simulation tool to produce test results which can be analyzed to
determine whether the RTL representation of the component is
operating as required. The testbench can be formed in a variety of
ways. For example, the testbench could be formed to provide a test
environment for testing the RTL representation of the component in
isolation, which enables direct control of the input stimuli to the
RTL representation of the component. However, this requires a
particular testbench to be produced for that component
representation. Another approach is to combine that RTL
representation of the component to be tested with RTL
representations of other components that have already been tested,
and with which the component to be tested will interact. Hence, in
this approach, a portion of the overall system into which the
component is intended to be placed is represented in RTL, and a
testbench is then constructed based on that RTL representation of
the system portion. This avoids the need to produce a particular
testbench specifically for the component to be tested, but results
in loss of direct control over the input stimuli to the RTL
representation of the particular component to be tested.
BRIEF SUMMARY OF THE INVENTION
[0005] Embodiments described herein are directed to a testbench for
testing a device under test (DUT), wherein the testbench has a
verification environment including a reference model, a scoreboard,
a dispatcher and a customized agent for each interface that the DUT
needs to receive input from and/or transmit output on. The
testbench system is able to be generated by a testbench builder
that automatically creates generic agents including generic
drivers, loopback ports, sequencers and/or generic monitors for
each interface and then automatically customize the generic agents
based on their corresponding interface such that the agents meet
the requirements of the interface for the DUT.
[0006] A first aspect is directed to a testbench system stored on a
non-transitory computer readable medium for testing operation of a
device under test. The testbench system comprises a verification
environment and a plurality of agents operating within the
verification environment, wherein each of the agents comprise a
sequencer configured to produce a transaction for testing the
device under test, a generic driver coupled with the sequencer,
wherein the driver is configured to receive the transaction from
the sequencer and a transporter coupled with the device under test
via a interface, wherein the transporter and the driver are
together configured to perform a handshake protocol with the device
under test over the interface associated with the agent based on a
class of the interface and the driver determines an outcome of the
handshake protocol indicating if the device under test is ready to
receive the transaction, wherein the each of the plurality of
agents is configured to forward the transaction to the device under
test via the interface associated with the agent based on the
outcome. In some embodiments, the driver of each of the agents is
configured to communicate with the transporter of the each of the
agents to forward the transaction to the device under test via the
interface if the outcome of the handshake protocol was successful.
In some embodiments, the system further comprises one or more
additional agents coupled with one or more of the plurality of
agents, wherein the one or more of the plurality of agents are
configured to send data received from the device under test to the
one or more additional agents. In some embodiments, the handshake
protocol comprises one of the group consisting of a one-way
handshake protocol without destination flow control, a two-way
handshake protocol and a one-way handshake protocol with
destination flow control. In some embodiments, the handshake
protocol of the transporter of at least one of the plurality of
agents is different than the handshake protocol of the transporter
of a different one of the plurality of agents. In some embodiments,
the system further comprises a scoreboard and a reference model
coupled to one or more of the plurality of agents, wherein the
plurality of agents each comprise a monitor. In some embodiments,
the device under test is a virtual emulation of an electronic
device. In some embodiments, the handshake protocol of each of the
plurality of agents is based on the interface with which the
transporter is coupled to the device under test.
[0007] A second aspect is directed to a testbench agent stored on a
non-transitory computer readable medium as a part of a verification
environment for testing operation of a device under test. The
testbench agent comprises a sequencer configured to produce a
transaction for testing the device under test, a generic driver
coupled with the sequencer, wherein the driver is configured to
receive the transaction from the sequencer and a transporter
coupled with the device under test via an interface, wherein the
transporter and the driver are together configured to perform a
handshake protocol with the device under test over the interface
based on a class of the interface and the driver determines an
outcome of the handshake protocol indicating if the device under
test is ready to receive the transaction, wherein the agent is
configured to forward the transaction to the device under test via
the interface based on the outcome. In some embodiments, the driver
is configured to communicate with the transporter to forward the
transaction to the device under test via the interface if the
outcome of the handshake protocol was successful. In some
embodiments, the agent is coupled with one or more additional
agents within the verification environment and configured to send
data received from the device under test to the one or more
additional agents. In some embodiments, the handshake protocol
comprises one of the group consisting of a one-way handshake
protocol without destination flow control, a two-way handshake
protocol and a one-way handshake protocol with destination flow
control. In some embodiments, the handshake protocol of the
transporter is different than a handshake protocol of a transporter
of the one or more additional agents. In some embodiments, the
agent further comprises a monitor that is coupled with a reference
model or a scoreboard within the verification environment. In some
embodiments, the device under test is a virtual emulation of an
electronic device. In some embodiments, the handshake protocol is
based on the interface with which the transporter is coupled to the
device under test.
[0008] A third aspect is directed to a testbench builder for
generating a testbench for verification of a device under test,
wherein the testbench builder is stored on a non-transitory
computer readable medium and configured to perform a method. The
method comprises reading an interface configuration file associated
with the device under test and identifying one or more interfaces
associated with the device under test defined in the interface
configuration file and generating a verification environment
including an agent for each of the interfaces in the interface
configuration file, wherein each of the agents comprise a sequencer
configured to produce a transaction for testing the device under
test, a generic driver coupled with the sequencer, wherein the
driver is configured to receive the transaction from the sequencer
and a transporter coupled with the device under test via the
interface associated with the agent, wherein the transporter and
the driver are together configured to perform a handshake protocol
with the device under test over the interface associated with the
agent based on a class of the interface and the driver determines
an outcome of the handshake protocol indicating if the device under
test is ready to receive the transaction, wherein the each of the
plurality of agents is configured to forward the transaction to the
device under test via the interface associated with the agent based
on the outcome. In some embodiments, the driver of each of the
agents is configured to communicate with the transporter of the
each of the agents to forward the transaction to the device under
test via the interface if the outcome of the handshake protocol was
successful. In some embodiments, at least one of the agents is
coupled with one or more additional agents within the verification
environment and configured to send data received from the device
under test to the one or more additional agents. In some
embodiments, the handshake protocol comprises one of the group
consisting of a one-way handshake protocol without destination flow
control, a two-way handshake protocol and a one-way handshake
protocol with destination flow control. In some embodiments, the
handshake protocol of the transporter of at least one of the agents
is different than the handshake protocol of the transporter of a
different one of the agents. In some embodiments, the verification
environment further comprises a scoreboard and a reference model
coupled to one or more of the agents, wherein the agents each
comprise a monitor. In some embodiments, the device under test is a
virtual emulation of an electronic device. In some embodiments, the
handshake protocol of each of the agents is based on interface
parameters of the interface associated with the agent as defined in
the interface configuration file.
[0009] A fourth aspect is directed to a method of testing a device
under test within a verification environment of a testbench. The
method comprises, with an agent within the verification
environment, producing a transaction for testing the device under
test with a sequencer of the agent, receiving the transaction from
the sequencer with a generic driver of the agent, performing a
handshake protocol with the device under test over an interface
based on a class of the interface with the driver and a transporter
of the agent coupled with the device under test via the interface,
determining an outcome of the handshake protocol indicating if the
device under test is ready to receive the transaction with the
driver and forwarding the transaction to the device under test via
the interface based on the outcome. In some embodiments, forwarding
the transaction to the device under test comprises the driver
communicating to the transporter to forwards the transaction to the
device under test via the interface if the outcome of the handshake
protocol was successful. In some embodiments, the agent is coupled
with one or more additional agents within the verification
environment and configured to send data received from the device
under test to the one or more additional agents. In some
embodiments, the handshake protocol comprises one of the group
consisting of a one-way handshake protocol without destination flow
control, a two-way handshake protocol and a one-way handshake
protocol with destination flow control. In some embodiments, the
handshake protocol of the transporter is different than a handshake
protocol of a transporter of the one or more additional agents. In
some embodiments, the verification environment further comprises a
monitor that is coupled with a reference model or a scoreboard
within the verification environment. In some embodiments, the
device under test is a virtual emulation of an electronic device.
In some embodiments, the handshake protocol is based on the
interface with which the transporter is coupled to the device under
test.
BRIEF DESCRIPTION OF THE DRAWINGS
[0010] The foregoing will be apparent from the following more
particular description of example embodiments of the invention, as
illustrated in the accompanying drawings in which like reference
characters refer to the same parts throughout the different views.
The drawings are not necessarily to scale, emphasis instead being
placed upon illustrating embodiments of the present invention.
[0011] FIG. 1 illustrates a testbench builder system according to
some embodiments.
[0012] FIG. 2 illustrates a testbench according to some
embodiments.
[0013] FIG. 3 illustrates a method of generating a test bench
according to some embodiments.
[0014] FIG. 4 illustrates a block diagram of an exemplary testbench
builder device configured to implement the testbench builder
application according to some embodiments.
[0015] FIG. 5 illustrates an agent according to some
embodiments.
[0016] FIG. 6 illustrates a method of testing a device under test
within a verification environment of a testbench according to some
embodiments.
[0017] FIG. 7A illustrates a first process including a two-way
handshake protocol and transaction transmission according to some
embodiments.
[0018] FIG. 7B illustrates a second process including a simple or
one-way handshake protocol without flow control and transaction
transmission according to some embodiments.
[0019] FIG. 7C illustrates a third process including a one-way
handshake protocol with flow control, transaction transmission and
start/end of data marking signals according to some
embodiments.
[0020] FIG. 8 illustrates an agent according to some
embodiments.
[0021] FIG. 9 illustrates a method of testing a device under test
within a verification environment of a testbench according to some
embodiments.
[0022] FIG. 10A illustrates a first process of monitoring a two-way
handshake protocol and transaction transmission according to some
embodiments.
[0023] FIG. 10B illustrates a second process of monitoring a simple
or one-way handshake protocol without flow control and transaction
transmission according to some embodiments.
[0024] FIG. 10C illustrates a third process of monitoring a one-way
handshake protocol with flow control, transaction transmission and
start/end of data marking signals according to some
embodiments.
[0025] FIG. 11 illustrates a testbench according to some
embodiments.
[0026] FIG. 12 illustrates a method of testing a device under test
within a verification environment of a testbench according to some
embodiments.
[0027] FIG. 13 illustrates a testbench with agents having coupled
loopback ports according to some embodiments.
[0028] FIG. 14 illustrates a method of testing a device under test
within a verification environment of a testbench according to some
embodiments.
[0029] FIG. 15 illustrates a method of testing a device under test
within a verification environment of a testbench according to some
embodiments.
DETAILED DESCRIPTION OF THE INVENTION
[0030] In the following description, numerous details are set forth
for purposes of explanation. However, one of ordinary skill in the
art will realize that the invention can be practiced without the
use of these specific details. Thus, the present invention is not
intended to be limited to the embodiments shown but is to be
accorded the widest scope consistent with the principles and
features described herein.
[0031] Embodiments described herein are directed to a testbench for
testing a device under test (DUT), wherein the testbench has a
verification environment that is able to include one or more of a
reference model, a scoreboard, a dispatcher and a customized agent
for each interface that the DUT needs to receive input from and/or
transmit output on. The testbench system is able to comprise agents
with generic drivers, generic monitors, loopback ports and/or
interface specific transporters which handle interface/DUT specific
handshake protocols and/or the monitoring thereof. The testbench
system is able to be generated by a testbench builder configured to
automatically generate a testbench for a device under test (DUT),
wherein the generated testbench has a verification environment
comprising one or more of a reference model, a scoreboard, a
dispatcher and a customized agent for each interface that the DUT
needs to receive input from and/or transmit output on.
Specifically, the testbench builder is able to first automatically
create generic agents including generic drivers, sequencers,
loopback ports and/or generic monitors for each interface and then
automatically customize the generic agents based on their
corresponding interface such that the agents meet the requirements
of the interface for the DUT. At the same time, the testbench
builder is able to integrate all the customized agents into the
verification environment, integrate the verification environment
with register transfer level (RTL) ports, binding the outputs
and/or inputs of the agents to other agents and/or RTL ports, and
preparing a random sample test case for testing the DUT with the
generated testbench. As a result, the testbench system provides the
benefit of enabling the generic drivers and/or generic monitors to
be generated independent of the interface characteristics such as
handshake protocol. Additionally, the testbench builder is able to
automatically create the entire testbench in minutes based on an
interface file including the necessary interfaces and their
characteristics for the DUT.
[0032] FIG. 1 illustrates a testbench builder system 100 according
to some embodiments. As shown in FIG. 1, the system 100 comprises a
testbench builder device 102 storing a testbench builder
application 103 and coupled with one or more DUTs 104 via one or
more networks 106. Alternatively, the testbench builder application
103 is able to be stored on an external database that is accessed
by the testbench builder device 102 via the networks 106. In some
embodiments, the networks 106 comprise a wireless network.
Alternatively, the networks 106 are able comprise a wired network
or any combination of wired and wireless networks. In some
embodiments, the DUT 104 is front end representation of the device
implemented in RTL or other programming language. Alternatively,
the DUT 104 is able to be a physical device, such as a prototype
device. The DUT 104 is able to be stored on a memory of and/or
incorporated into the testbench builder device such that the
network 106 comprises an internal or local network of the device
102 such as the interfaces described herein. For example, the DUT
104 generated in RTL or another programming language is able to
interact with the testbench 202 (see FIG. 2) generated by the
testbench builder application 103 in UVM.TM. or other language via
one or more interfaces 222 (see FIG. 2). Alternatively, in such
embodiments the DUT 104 is able to be stored on the memory of one
or more additional computing devices (e.g a server, computer) such
that the networks 106 comprise external networks coupling together
the testbench builder device 102 and DUT 104 via the additional
computing devices. To put it another way, the DUT 104 is able to
comprise hardware, emulation software or combination thereof. For
example, the DUT 104 is able to be a piece of code (e.g. RTL, gate
level, System C models) which provides or emulates the
functionality of a device that is desired to be tested. Although as
shown in FIG. 1, only a single DUT 104 is coupled to the testbench
builder device 102, any number of DUTs 104 and/or devices 102 are
contemplated.
[0033] FIG. 2 illustrates a testbench 202 according to some
embodiments. As shown in FIG. 2, the testbench 202 includes a
verification environment 204 comprising one or more agents 206, one
or more reference models 208 and one or more scoreboards 210
coupled with one or more DUTs 212 via one or more interfaces or
virtual interfaces 222. In some embodiments, the verification
environment 204 and the components therein are implemented in one
or more verification methodologies (e.g. universal verification
methodology (UVM.TM.)). Although in FIG. 2 only two agents 206, two
interfaces 222 and one DUT 212 are shown, any number of agents 206,
interfaces 222 and DUTs 212 are contemplated. For example, in some
embodiments the verification environment 204 comprises at least one
agent 206 for each interface 222, wherein the DUT 212 is able to
comprise numerous associated interfaces 222. Additionally, although
described separately herein, in some embodiments one or more of the
component of the verification environment 204 are able to be
combined into a single component. For example, the one or more
reference models 208 and the one or more scoreboards 210 are able
to be combined into one or more single entities that perform the
functions of both. Generally, each interface 222 (input or output)
requires both control and data signals for communication. The data
signals carry the information upon which the DUT 212 operates and
the control signals define the significance of the data signals on
that cycle. As also shown in FIG. 2, the agents 206 each comprise
one or more sequencers 214, one or more monitors 216 and one or
more drivers 220.
[0034] The monitors 216 are able to observe and/or sample pin level
activity and converts its observations (e.g. observed output data
signals from the agents 206 and/or DUT 212) to a format that is
used within the verification environment 204 by the agents 206,
reference model 208 and/or scoreboard 210. The drivers 220 are able
to convert transactions received from the sequencers 214 for the
device under test 212 from a format that is used within the
verification environment 204 by the agents 206, reference model 208
and/or scoreboard 210 to a pin level configuration of the device
under test 212. Alternatively, the agents 206 and/or testbench 202
are able to comprise more or less components such that one or more
of the components are able to be replicated, omitted and/or new
components are able to be added. For example, the testbench 202 is
able to comprise a database of one or more test cases each
including one or more stimulus patterns based on the DUT 212 for
testing the DUT 212 with the testbench 202. In some embodiments,
the testbench 202 and/or environment 204 is able to be
coupled/integrated with the DUT 212 on a register transfer level.
Alternatively, the coupling/integration of the testbench 202 and
the DUT 212 is able to be with other communication levels.
[0035] In operation, the verification environment 204 provides the
platform or operating system in which the agents 206, reference
model 208 and scoreboard 210 are able to interoperate.
Specifically, based on a test case being implemented by the
testbench 202 and/or environment 204, the driver 220 of one or more
of the agents 206 (e.g. agent 1) accepts data stimulus or testing
data generated by the sequencer 214 in the form of a transaction
and drives the data onto an interface 222a with which the agent 206
is associated (using a protocol for that DUT 212 and/or interface
222a). In other words, the sequencer 214 is able to coordinate the
execution of stimulus in the form of sequences and sequence items
from a parent sequence (e.g. test case), ultimately feeding the
driver 220 with transactions. Additionally, the monitor 216 of the
one or more of the agents 206 sends a copy of the data stimulus to
the reference model 208 of the one or more agents 206. This
reference model 208 is able to comprise one or more transfer
functions configured such that it mimics an idealized operation of
the DUT 212 for generated data stimulus. In other words, the
reference model 208 is able to be configured to represent the
behavior of a device under test 212 and/or a particular feature or
features of the device under test 212 (e.g. common feature
patterns) and in that way transform received transactions into
"ideal" output transactions. As a result, upon receiving the data
stimulus the reference model 208 is able to send modified reference
data to the scoreboard 210, wherein the modified reference data
represents the ideal output data for an ideal DUT 212 based on the
inputted data stimulus. The scoreboard 210 is able to be configured
to compare actual and expected values of the data received from the
reference module 208 and the data received from the DUT 212 (e.g.
via the monitor 216 of an agent 206). In some embodiments, the
scoreboard 210 is also able to record statistical information about
the data received and/or create reports based on that
information.
[0036] At the same time, the DUT 212 receives the data stimulus
from the driver 220 via the associated the interface 222a, performs
an operation on the data and outputs the resulting DUT data on an
appropriate output interface 222b. As a result, this outputted DUT
data is able to be sampled by the monitor 216 of the agent 206
associated with the output interface 222b and sent to the
scoreboard 210. The scoreboard 210 is then able to compare the DUT
data to the reference data in order to determine any differences in
behavior of the idealized DUT represented by the reference model
208 and the DUT 212 that is currently being tested. Specifically,
based on these differences the scoreboard 210 is able to determine
whether the DUT 212 is behaving within a set of operational limits
for the test case and/or any operational errors that are indicated
by the DUT data not matching the reference data. As a result, the
testbench 202 is able to emulate a real world environment (e.g.
test case) for the DUT 212 and ensure that the operation of the DUT
212 within that environment meets the expected operational
standards. Additionally, it should be noted that although the
operation described only included a DUT input and response,
multiple inputs and/or responses (involving multiple agents 206
and/or interfaces 222) in sequence and/or in parallel are possible.
For example, the reference model 208 is able to receive duplicates
of all transactions or stimulus transmitted from one or a plurality
of agents 206 to the DUT 212 and produce expected or ideal output
transactions for all such received duplicates. Similarly, the
scoreboard 210 is able to receive all expected or ideal output
transactions from the reference module 208 as well as all
transactions or stimulus transmitted from the DUT 212 to one or a
plurality of the agents 206 such that all the corresponding
transactions can be compared.
[0037] FIG. 11 illustrates an alternate embodiment of the testbench
202 according to some embodiments. The testbench 202 of FIG. 11 is
able to be substantially similar to the testbench 202 of FIG. 2
except for the differences described herein. In particular, as
shown in FIG. 11 instead of being coupled with either the reference
model 208 or the scoreboard 210 directly as in FIG. 2, the agents
206 (e.g. via the monitors 216) are each coupled to the dispatcher
224 which is coupled to the reference model 208 and the scoreboard
210. This dispatcher 224 is able to comprise an agent table or
database 226 that associates the agents 206 and/or their associated
interfaces 222a, 222b (e.g. via the address of the ports of the
dispatcher 224 that coupled to the agents 206) with the reference
model 208 or the scoreboard 210. If the agent/interfaces receives
device responses (e.g. modified transactions) from the DUT 212
(e.g. interface 222b), it is an "input" agent/interface that is
associated with the scoreboard 210. Otherwise, if the
agent/interface transmits transactions to the DUT 212 (e.g.
interface 222a), it is an "output" agent/interface that is
associated with the reference model 208. In other words, the
associations in the agent table 224 represents which of the
reference model 208 or the scoreboard 210 the agents 206 would be
coupled directly to if the dispatcher 224 were omitted like in FIG.
2. In some embodiments, the agent table 226 comprises associations
of the addresses of the ports that receive the data from the agents
206 with the address of the port coupled to the scoreboard 210 or
the address of the port coupled to the reference model 208.
Additionally, in some embodiments the agent table 226 is generated
by the builder application based on the interface parameters and
the binding of the ports within the verification environment.
[0038] In operation, unlike FIG. 2, the monitor 216 of the one or
more of the agents 206 sends the copy of the data stimulus to the
dispatcher 224 (not directly to the reference model 208), which
then identifies the data as a transaction and routes the data
stimulus to the reference model 208 based on the agent database
226. Also unlike FIG. 2, the outputted DUT data (e.g. device
response) is sampled by the monitor 216 of the agent 206 and sent
to the dispatcher 224 (not directly to the scoreboard 210), which
then identifies the data as a device response and routes the
response to the reference model 208 based on the agent database
226. Alternatively, the identification and/or routing of the data
is able to be performed based on the packet data itself (e.g.
header) without the agent table 224. In either case, the dispatcher
224 is able to act as a central routing hub thereby simplifying the
connectivity required within the verification environment 204.
Similar to FIG. 2, upon receiving the data stimulus the reference
model 208 is able to send modified reference data to the scoreboard
210, wherein the modified reference data represents the ideal
output data for an ideal DUT 212 based on the inputted data
stimulus. Then the scoreboard 210 is able to compare actual and
expected values of the data received from the reference module 208
and the data received from the DUT 212 (e.g. via the dispatcher
224).
[0039] FIG. 12 illustrates a method of testing a device under test
within a verification environment of a testbench according to some
embodiments. Although described separately, one or more of the
steps of the methods of FIGS. 6, 9, 12, 14 and/or 15 are able to be
combined into a single method. For example, a method of operation
of the testbench 202 or verification environment 204 as a whole is
able to comprise a combination of one or more of the steps of all
of the methods of FIGS. 6, 9, 12, 14 and 15 depending on the types
of components (e.g. agents, transporters, dispatchers, loopback
ports) within the environment 204. As shown in FIG. 12, the
dispatcher 224 inputs data from the monitors 216 of a plurality of
agents 206 within the verification environment 204 at the step
1202. The data input by the dispatcher 224 is able to be data
transmitted on the interface 222 associated with each of the agents
206 and sampled by the monitor 216 of that agent 206, wherein after
sampling, the monitor 216 forwards the data to the dispatcher 224.
In some embodiments, the monitors 216 are able to be configured to
automatically forward the sampled data (or a copy thereof) to a
mailbox or queue of the dispatcher 224. Further, as described in
FIGS. 6 and 9 below, the sampling by the monitors 216 and driving
of transactions by the drivers 220 is able to be controlled or
operate in concert with the associated transporters 506/806 (see
FIGS. 5 and 8). As a result, the data is able to comprise
transactions transmitted by a driver/transporter of an agent 206
onto an interface 222 to the DUT 212 or responses to a transaction
generated and transmitted by the DUT 212 to an agent 206 via an
interface 222.
[0040] The dispatcher 224 identifies whether each portion of the
data is a transaction output by a driver/transporter (or a copy
thereof) or a device response to a transaction output by the DUT
212 (or a copy thereof) based on the agent table 226 at the step
1204. In particular, the dispatcher 224 is able to look up the
agent 206 or interface 222 that is the source/destination of the
data (e.g. based on the port address of the port that received the
data) within the agent table 226 and check whether the agent 206 or
interface 222 is associated in the table with the scoreboard 210 or
the reference model 208. For example, if the agent/interface is
associated with the scoreboard 210, it is an "input"
agent/interface that receives responses from the DUT 212 and if the
agent/interface is associated with the reference model 208, it is
an "output" agent/interface that transmits transactions to the DUT
212. The dispatcher 224 routes each portion of data identified as a
transaction output by a driver/transporter to a reference model 208
within the verification environment and each portion of data
identified as a device response to a transaction output by the DUT
212 to a scoreboard 210 within the verification environment 204 at
the step 1206. In other words, based on whether the data is "input"
or "output" data in the agent table 226 the dispatcher 224 is able
to transmit the data to the port coupled with the scoreboard 210 or
the reference model 208. As a result, the method provides the
benefit of having a central dispatcher 224 that reduces the
connection complexity of the verification environment 204. In
particular, the dispatcher 224 provides a single component that all
the agents 206 are able to be coupled and automatically send data
to instead of each agent needing a separate connection established
to either the reference model 208 or a single line to the
scoreboard 210. As a result, the dispatcher 224 is able to
efficiently route the data either on a single connection to the
reference model 208 or a single line to the scoreboard 210.
[0041] FIG. 13 illustrates an alternative embodiment of the
testbench 202 according to some embodiments. The testbench 202 of
FIG. 13 is able to be substantially similar to the testbench 202 of
FIGS. 2 and/or 11 except for the differences described herein. In
particular, as shown in FIG. 13 one or more of the agents 206
within the verification environment 204 are able to comprise and/or
be coupled with each other via one or more loopback ports 228. As a
result, instead of needing a top level multilayer or virtual
sequencer in order to solve testing data (e.g. transactions, device
responses) dependency issues amongst the agents 206, the agents 206
are able to use the loopback ports 228 to send dependency data
directly and solve the dependency issues "peer-to-peer." In some
embodiments, all of the agents 206 within the environment 204
comprise one or more loopback ports 228. Alternatively, less than
all of the agents 206 comprise loopback ports 206. The loopback
ports 228 are able to be substantially similar to the other ports
within the verification environment 204 except that they are
dedicated to coupling two or more agents 206 together within the
environment 204.
[0042] In some embodiments, some or all of the agents 206 comprise
one or more input loopback ports for inputting data (e.g.
dependency data) and one or more output loopback ports for
outputting data (e.g. dependency data). Alternatively, some or all
of the agents 206 are able to comprise only one or more input or
only one or more output loopback ports 228. As shown in FIG. 13, a
single agent (agent 1) is coupled to a single agent (agent 2) via
the loopback ports 228. Alternatively, any of the agents 206 are
able to be coupled with zero, one or a plurality of the other
agents 206 within the environment 204 wherein the loopback port
connections are able to be all outputting data from the agent to
the other agents, all inputting data to the agent from the other
agents or a combination of input and output connections. Further,
although as shown in FIG. 13 the loopback ports of the agents 1 and
2 are coupled via a single connection, a plurality of connections
are able to be made between any two agents 206. For example, a
first connection is able to send dependency data from agent 1 to
agent 2, whereas a second connection is able to send dependency
data from agent 2 to agent 1.
[0043] This dependency data is able to be data that solves or
reflects a dependent or conditional relationship between testing
data (e.g. transactions, device responses) sent between the agents
206 and the DUT 212. Two sets or increments of testing data have a
dependency relationship if the processing of one of the sets of
testing data (with respect to testing the DUT 212) requires data of
or related to the other set of testing data such that the dependent
testing data cannot be implemented/processed (by the agent 206
and/or DUT 212) until the depended upon testing data has been
implemented/processed such that the required dependency data can be
determined from the depended upon testing data. An example of such
a pair of dependent testing data is a query response pair, wherein
the response testing data is dependent on what the query data (i.e.
what the query is asking) The dependencies can be based on some or
all of the content of the depended upon testing data (e.g. what is
the query, end of packet, start of packet, source identifier,
destination identifier), the processing of the depended upon
testing data (e.g. when was it sent/synchronization data, has it
been received at the destination, did it contain an error), data
derived from the content of the depended upon data (e.g. what is
the size of the depended upon data) and/or other testing data
characteristics that are able to be depended upon. In other words,
testing data is able to be dependent on other testing data in any
case where the processing or manipulation of a first set of testing
data requires some or all of the processing or manipulation a
second set of testing data.
[0044] Similar to the permutations of the connections between the
agents 206 via the loopback ports 228, the dependencies between
testing data is able to be one to one, one to a plurality and/or
mutual dependencies (e.g. multiple dependencies between the same
two sets of testing data), wherein the "direction" of the
dependencies is able to be all one direction or a combination of
directions (e.g. a, b and c dependent on d or d dependent on a, b
and c; a and b dependent on d and d dependent on c; a dependent on
b and b dependent on a). The dependency data itself that is sent
between the agents 206 via the loopback ports 228 is able to
comprise the transactions, the device responses and/or portions or
derivations thereof. For example, the dependency data for a
query/response dependency between two sets of testing data is able
to be the query itself, which is sent to the second agent for
generating a response to the query. Alternatively, the dependency
data for two conditional transactions is able to be a portion of
one of the transactions (e.g. start of packet, end of packet,
packet identifier, source port, destination port, packet size, or
other packet field values) that is used to parse or otherwise
process the second of the transactions. Alternatively, the
dependency data for two conditional transactions is able to be an
indication that one of the transactions has been send to or
received by the DUT 212 such that the DUT 212 is ready to receive
the second of the transactions. Essentially, the dependency data is
able to be any data that solves the unknown or variable in the
second of the transactions that created/caused the dependency
between the testing data.
[0045] In operation, if an agent 206 is coupled with one or more
other agents 206 via the loopback ports 228 for outputting
dependency data to the other agents 206, the monitor 216 is able to
be configured to automatically output sampled testing data (e.g.
device response from the DUT 212) to the other agents 206 via the
output loopback port 228 coupled to the other agents 206.
Alternatively or in addition, if an agent 206 is coupled with one
or more other agents 206 via the loopback ports 228 for outputting
dependency data to the other agents 206, the sequencer 214 is able
to be configured to automatically output generated testing data
(e.g. a transaction for the DUT 212) to the other agents 206 via
the output loopback port 228 coupled to the other agents 206.
Alternatively or in addition, if an agent 206 is coupled with one
or more other agents 206 via the loopback ports 228 for inputting
dependency data to from other agents 206, the sequencer 214 is able
to be configured to automatically input or poll the loopback ports
228 for the dependency data from the loopback ports 228 of the
other agents 206 and to adjust or generate testing data to be
output to the DUT 212 (via the driver 220) based on the input
dependency data.
[0046] In some embodiments, the inputting or outputting of
dependency data by the monitor 216 and/or sequencer 214 is able to
occur automatically every cycle. Alternatively, it is able to occur
automatically or manually every cycle, periodic cycles, based on a
trigger event, and/or other cycle schedules. In embodiments wherein
the agent 206 comprises a transporter 506/806 as shown in FIGS. 5
and 8, the transporter 506/806 is able to control the outputting
and/or inputting of the dependency data in the same manner in which
it controls the outputting and/or inputting of the transaction or
device response data as described herein. Alternatively, even if a
transporter 506/806 is present in the agent 206, the monitor 216
and/or sequencer 214 are able to operate independently with respect
to the dependency data and loopback ports 228 as described above.
In some embodiments, the dependency data is able to be broadcast or
multicast on multiple output loopback ports 228 simultaneously.
Alternatively, the dependency data is able to be sent out on a
plurality of loopback ports 228 sequentially (e.g. round robin),
via a priority scheme and/or upon request.
[0047] FIG. 14 illustrates a method of testing a device under test
within a verification environment of a testbench according to some
embodiments. Although described separately, one or more of the
steps of the methods of FIGS. 6, 9, 12, 14 and/or 15 are able to be
combined into a single method. For example, a method of operation
of the testbench 202 or verification environment 204 as a whole is
able to comprise a combination of one or more of the steps of all
of the methods of FIGS. 6, 9, 12, 14 and 15 depending on the types
of components (e.g. agents, transporters, dispatchers, loopback
ports) within the environment 204. As shown in FIG. 14, a first
agent 206 (via the monitor 216 and/or sequencer 214) sends
dependency data from an output port of its loopback ports 228 to an
input port of loopback ports 228 of one or more second agents 206
within the verification environment 204 at the step 1402. In some
embodiments, the sending of the dependency data comprises
(simultaneously or otherwise) sending the data to a plurality of
input loopback ports 228 of a plurality of agents 206. In some
embodiments, the dependency data is related to testing data sampled
by the monitor 216 (e.g. a device response/query) from the
interface 222 between the first agent 206 and the DUT 212. For
example, in some embodiments the method further comprises the
monitor 216 of the first agent 206 inputting testing data (e.g. a
sampled device response) from the DUT 212 such that the dependency
data of step 1402 is based on the input testing data. Indeed, in
some embodiments the dependency data is able to match the testing
data sampled by the monitor 216. Additionally, in some embodiments
this exemplary operation of the monitor 216 is able to be
controlled by a transporter 806 of the first agent 206 as described
in the method of FIG. 9.
[0048] Alternatively, the dependency data is able to be related
testing data generated by the sequencer 214 (e.g. a new
transaction) and sent to the DUT 212 via the interface 222 between
the first agent 206 and the DUT 212. For example, in some
embodiments the method further comprises the sequencer 214 of the
first agent 206 generating new testing data (e.g. the new
transaction) for testing the DUT 212 and the driver 220 of the
first agent 206 receives the testing data from the sequencer 214
and sends it to the DUT 212 such that the dependency data of step
1402 is based on the new testing data. Further, this new testing
data is able to be independent testing data or testing data that
was dependent on a different set of testing data from a different
agent 206. Moreover, in some embodiments this exemplary operation
of the sequencer 214 and driver 220 is able to be controlled by a
transporter 506 of the first agent 206 as described in the method
of FIG. 6. The sequencer 214 of the second agent(s) 206 polls the
input port 228 for the dependency data at the step 1404. The
sequencer 214 of the second agent(s) 206 produce or generate
dependent testing data (e.g. a new transaction) for testing the DUT
212 based on the dependency data at the step 1406. The driver 220
of the second agent(s) 206 receive the dependent testing data from
the sequencer 214 and send the dependent testing data to the DUT
212 at the step 1408. In particular, in some embodiments a sequence
that creates/builds transactions is able to be registered in the
sequencer 214 such that the sequencer 214 is able to execute the
sequence and thereby generate the transactions. In such
embodiments, the polling of the dependency data and/or producing of
dependent testing data is able to be in the sequence registered in
the sequencer 214.
[0049] In some embodiments, the method further comprises the first
agent 206 receiving dependency data from one or more other agents
206 in the same manner that the second agent(s) 206 received such
data from the first agent 206. Indeed, the dependency data sent by
the first agent 206 is able to be based on dependency data received
by the first agent 206 from a different agent 206 via the loopback
ports 228. Further, in some embodiments, one or more of the second
agent(s) 206 send dependency data to the first agent 206 either
before or after the first agent 206 sends its dependency data.
Accordingly, the method provides the advantage of enabling
dependency issues that arise during the testing of the DUT 212 to
be solved on a peer to peer level between the agents 206 via the
loopback ports 228 and their connections removing the need for a
top level virtual or multi-layer sequencer to be generated in the
virtual environment 204.
[0050] In some embodiments, the monitor 216 of one or more of the
agents 206 is configured to determine a timestamp value for testing
data (e.g. transactions) sampled by the monitor 216, wherein the
timestamp value indicates the time when the testing data was
sampled from the interface 222 by the monitor. As a result, this
timestamp value for the testing data is able to be referenced by
any of the agents 206 and/or other components (e.g. scoreboard,
reference module, dispatcher) of the verification environment 204
in order to determine the latency of the testing data in reaching
the agents 206 and/or components. Specifically, in such embodiments
the agents 206 and/or other components are able to read the
timestamp value and compare it to the current time in order to
determine the amount of time (e.g. latency value) that elapsed
between when the testing data was sampled and when it reached the
agents 206 and/or other components (i.e. the verification
environment latency for the testing data). The agents 206 and/or
other components are then able to adjust the timing of their
actions based on this latency value. These actions are able to
comprise the generation and/or driving of testing data to the DUT
212, the initiation of handshake protocol with the DUT 212, the
generation and/or transmission of dependency data to one or more
different agents 206 via loopback ports 228, and/or any other
operations performed by the agents 206 and/or the other components
of the verification environment 204.
[0051] For example, if a first agent 206 is configured to receive a
query from the DUT 212 and a second agent is configured to send a
response to the DUT 212 for the query after a predetermined time
period (e.g. 15-25 clock cycles), the monitor 216 of the first
agent is able to determine the timestamp value of the query. Then,
when the second agent receives the query it is able to determine
the latency value of the query based on the timestamp value and the
time it was received. Finally, the second agent 206 is able to
determine how much more time must pass (if any) before the
predetermined time period has elapsed by subtracting the latency
value from the predetermined time period such that the second agent
206 is able to ensure that the response to the query is sent to the
DUT 212 at a time when or after the predetermined time period has
elapsed. As a result, the timestamps provide the advantage of
enabling each agent 206 and/or other component within the
verification environment 204 to determine the latency of any
testing data that they receive and adjust for that latency if
necessary. In particular, this able to be done without the use of a
separate component (e.g. a virtual or multilayer sequencer) that
must separately control the agents 206 and/or other components in
order to adjust for the latency issues.
[0052] In some embodiments, the sequencer 214 of one or more of the
agents 216 is configured to read the timestamp value, determine the
latency value based on the current time and adjust operation based
on the latency value. Alternatively, the driver 220, monitor 216,
transporter 506 (see FIG. 5), or other element of the agents 206 is
able to read the timestamp value, determine the latency value based
on the current time and adjust operation based on the latency
value. In some embodiments, the timestamp value is added to a
header of the testing data such that subsequent agents 206 and/or
the DUT 212 are able to read the header of the testing data in
order to determine the timestamp value. Alternatively or in
addition, the timestamp value is able to be stored and/or
transmitted separately from the testing data to which it relates.
For example, the timestamp value is able to be added to the
dependency data related to the testing data such that the value is
able to be accessed from the dependency data.
[0053] FIG. 15 illustrates a method of testing a device under test
within a verification environment of a testbench according to some
embodiments. Although described separately, one or more of the
steps of the methods of FIGS. 6, 9, 12, 14 and/or 15 are able to be
combined into a single method. For example, a method of operation
of the testbench 202 or verification environment 204 as a whole is
able to comprise a combination of one or more of the steps of all
of the methods of FIGS. 6, 9, 12, 14 and 15 depending on the types
of components (e.g. agents, transporters, dispatchers, loopback
ports) within the environment 204. As shown in FIG. 15, a first
agent 206 performs one of outputting the testing data to or
inputting the testing data from the DUT 212 via the interface 222
coupling the first agent 206 to the DUT 212 at the step 1502. A
monitor 216 of the first agent 206 samples testing data on the
interface 222 between the DUT 212 and a first agent 206 at the step
1504. The monitor 216 generates a timestamp for the testing data at
the step 1506. Specifically, the timestamp is able to indicate a
sampled time at which the testing data was sampled by the monitor
216 and thus first becomes active within the verification
environment 204.
[0054] In some embodiments, the method further comprises receiving
sequencer data associated with the testing data with a sequencer
214 of a second agent 206 coupled to the first agent 206 (e.g via
loopback ports 228) and comparing the sampled time associated with
the testing data with a current time to determine a latency of the
received sequencer data. The comparison is able to be performed by
the sequencer 214 or any other component of the second agent 206.
In some embodiments, the method further comprises generating new
testing data with the sequencer 214 based on the received sequencer
data and adjusting when a driver 220 of the second agent 206 drives
the new testing data to the DUT 212 with the sequencer 214 based on
the latency of the received sequencer data. In particular, the
adjusting of when the driver 220 drives the new testing data to the
DUT 212 is able to comprise driving the new testing data when a
time period equal to a predetermined delay value minus the latency
value has elapsed. For example, if the sequencer 214 and/or driver
220 are configured to drive testing data to the DUT 212 after a
predetermined delay period from when the DUT 212 transmitted
testing data (e.g. device response/query) to the verification
environment 204, the sequencer 214 and/or driver 220 are able to
take in consideration the latency of the testing data reaching the
sequencer 214 and/or driver 220 when calculating the predetermined
delay period. In some embodiments, the delay period is between 15
and 25 clock cycles. Alternatively, the delay period is able to be
less than 15 clock cycles or greater than 25 clock cycles. Also, in
some embodiments the testing data of the second agent 206 is
dependent on the testing data of the first agent 206 such that the
second agent 206 is unable to output the dependent testing data
without first receiving dependency data about the depended upon
testing data of the first agent 206. Indeed, in such embodiments
the dependency data is the same as the sequencer data. For example,
the dependency data is able to be a transaction that was received
by the sequencer 214 as the sequencer data.
Testbench Agent
[0055] FIG. 5 illustrates an agent 500 according to some
embodiments. In particular, the agent 500 is able to be
substantially similar to the agent 206 except for the differences
described herein. Further, although discussed separately, the agent
500 is able to replace and/or supplement the agents in all of the
embodiments described herein. Additionally, although shown
separately in FIG. 5, the transporter 506 is able to combined
within or a part of the driver 504. As shown in FIG. 5, the agent
500 comprises a sequencer 502, a driver 504, a transporter 506 and
a monitor 508, wherein the sequencer 502 and transporter 506 are
coupled with the driver 504, and the driver 504 and transporter 506
are coupled with the DUT 212 via an interface 222. The transporter
506 is able to be configured to handle all handshaking protocol
necessary for communicating with the DUT 212 over the interface 222
such that the driver 504 is able to be generic in that it is not
configured based on the handshake protocol of the interface 222. In
particular, by removing the handshaking protocol responsibilities
from the driver 504 with the transporter 506, the driver 504 is
able to be automatically generated for an interface 222 without any
knowledge of the protocols of the interface 222.
[0056] In some embodiments, the agent 500, driver 504 and/or
transporter 506 are configured to transmit all or a portion of the
transaction to the DUT 212 via the interface 222 every clock cycle.
Similarly, in some embodiments the transporter 506 is configured to
perform the handshaking protocol with the interface 222 and/or DUT
212 every clock cycle before permitting or preventing transmission
of the transaction to the DUT 212. Alternatively, the transmission
of the transaction and/or performance of the handshaking is able to
be performed on a transaction basis, operation basis, periodically,
on demand, or according to other types of schedules. In some
embodiments, the driver 504 is able to operate without the
transporter 506 using a default handshake protocol or no handshake
protocol.
[0057] FIG. 6 illustrates a method of testing a device under test
212 within a verification environment 204 of a testbench 202
according to some embodiments. Although described separately, one
or more of the steps of the methods of FIGS. 6, 9, 12, 14 and/or 15
are able to be combined into a single method. As shown in FIG. 6, a
sequencer 502 of an agent 500 within the verification environment
204 produces a transaction for testing the DUT 212 at the step 602.
The generic driver 504 of the agent 500 retrieves and/or receives
the transaction from the sequencer 502 at the step 604. In some
embodiments, a new transaction is produced and/or received each
clock cycle. Alternatively, one or more of the transactions are
able to be multi-cycle such that data related to a single
transaction is transmitted and/or received over multiple cycles.
The driver 504 and/or the transporter 506 of the agent 500 performs
a handshake with the DUT 212 (via the interface 222) according to a
handshake protocol at the step 606. In other words, the transporter
506 is able to both drive control signals onto and/or sample
control signals from an interface 222 in order to effectuate a
handshake protocol for that interface 222 and/or DUT 212. In some
embodiments, the handshake protocol used is based on interface 222
and/or DUT 212. In some embodiments, the handshake protocol is
indicated by the transporter class for the interface 222 within the
interface configuration file. Based on the outcome of the handshake
protocol, the driver 504 and/or the transporter 506 determines if
the interface 222 and/or DUT 212 is ready to receive data at the
step 608. The driver 504 communicates with the transporter 506 to
forward/load the transaction on the interface 222 if the outcome of
the handshake protocol indicates the interface 222 and/or DUT 212
is ready to receive the transaction at the step 610. In some
embodiments, the monitor of the agent 500 also forwards the
transaction to the reference model 208 (either directly or via a
dispatcher 224) as described above. In some embodiments, the
communication is a control command received by the driver 504 from
the transporter 506 indicating the outcome of the handshake
protocol. In some embodiments, the driver 504 gives the transaction
to the transporter 506 based on the outcome such that the
transporter 506 forwards and/or loads the transaction on the
interface 222. Alternatively, the driver 504 is able to forward
and/or load the transaction on the interface 222 based on the
outcome of the handshake protocol. As a result, the method provides
the benefit of enabling the driver 504 to remain generic while
still customizing the agent 500 for the interface 222 and/or DUT
212 by using the transporter 506 to control the handshake protocol
with the interface 222 and/or DUT 212.
[0058] In some embodiments, the method further comprises sending
data received from the DUT 212 to the one or more additional agents
coupled to the agent 500 within the environment 204. In such
embodiments, the handshake protocol used by the transporter 506 is
able to be different than a handshake protocol of a transporter of
the one or more additional agents. As described above, in some
embodiments the handshake protocol is one of three handshake
protocols consisting of a one-way handshake protocol without
destination flow control, a two-way handshake protocol and a
one-way handshake protocol with destination flow control.
Alternatively, any number and/or combination of different or the
same handshake protocols are able to be used. In some embodiments,
steps 604-610 are performed each clock cycle. Alternatively, if the
transaction is a multi-cycle transaction, step 604 is able to be
omitted and only steps 606-610 are performed each subsequent clock
cycle until the multi-cycle transaction is complete.
[0059] FIGS. 7A-7C illustrate three exemplary handshake protocol
and transaction transfer processes according to some embodiments.
FIG. 7A illustrates a first process including a two-way handshake
protocol 702 and transaction transmission 704 according to some
embodiments. In particular, the two-way handshake protocol 702
comprises sending a first signal "source ready" from the agent 500
to the DUT 212 (via an interface) and sending a second signal
"destination ready" from the DUT 212 to the agent 500. According to
the handshake protocol 702, the agent 500 indicates that it is
ready to send data (and/or that all control and data signals are
valid) when it makes "source ready" high and the DUT 212 indicates
that it is ready to accept data when "destination ready" is high.
As a result, when both "source ready" and "destination ready" are
both high, the outcome of the protocol indicates that transaction
transmission(s) 704 should be transmitted and when either "source
ready" or "destination ready" are low, the outcome of the protocol
indicates that transaction transmission(s) 704 should not be
transmitted or cease from being transmitted from the agent 500 to
the DUT 212. This two-way handshake protocol enables either party
(agent 500 or DUT 212) to stop transaction transmissions 704
unilaterally and restricts the beginning of transaction
transmissions 704 to when both parties indicate that they are
ready. As shown in FIG. 7A, the transaction transmission 704
comprises two datasets (data0 and data1) having a payloads of 20:0
and 11:0. Alternatively, the transaction transmission 704 is able
to comprise more or less datasets and/or transmission streams each
having more or less payload and/or quantity of data. In some
embodiments, the driver 504 transmits the transaction transmission
704 to the DUT 212 based on the outcome of the handshake protocol
702 (as executed by the transporter 506). Alternatively, the
transporter 506 is able to retrieve the transaction from the driver
504 and transmit the transaction transmission 704 to the DUT 212
based on the outcome of the handshake protocol 702.
[0060] FIG. 7B illustrates a second process including a simple or
one-way handshake protocol without flow control 702 and transaction
transmission 704 according to some embodiments. In particular, the
one-way handshake protocol without flow control 702 comprises
sending a first signal "valid" from the agent 500 to the DUT 212
(via an interface). According to the handshake protocol 702, the
agent 500 indicates that it is ready to send data when it makes
"valid" high (and/or that all control and data signals are valid),
but unlike the first process, the agent 500 does not wait for, nor
does the DUT 212 send, a signal that indicates that the DUT 212 is
ready to accept data. As a result, when "valid" is high, the
outcome of the protocol indicates that transaction transmission(s)
704 should be transmitted and when "valid" is low, the outcome of
the protocol indicates that transaction transmission(s) 704 should
not be transmitted or cease from being transmitted from the agent
500 to the DUT 212. This one-way handshake protocol puts full
control in the agent 500 to stop or start transaction transmissions
704 unilaterally, wherein the DUT 212 has no flow control and
rather is simply notified by the agent 500 when transaction
transmission 704 is incoming. As shown in FIG. 7B, like FIG. 7A,
the transaction transmission 704 comprises two datasets (data0 and
data1) having payloads of 20:0 and 11:0. However, the transaction
transmission 704 is able to comprise more or less datasets and/or
transmission streams each having more or less payload and/or
quantity of data. In some embodiments, the driver 504 transmits the
transaction transmission 704 to the DUT 212 based on the outcome of
the handshake protocol 702 (as executed by the transporter 506).
Alternatively, the transporter 506 is able to retrieve the
transaction from the driver 504 and transmit the transaction
transmission 704 to the DUT 212 based on the outcome of the
handshake protocol 702.
[0061] FIG. 7C illustrates a third process including a one-way
handshake protocol with flow control 702, transaction transmission
704 and start/end of data marking signals 706 according to some
embodiments. In particular, the one-way handshake protocol with
flow control 702 comprises sending a first signal "valid" from the
agent 500 to the DUT 212 (via an interface). According to the
handshake protocol with flow control 702, the agent 500 indicates
that it is ready to send data (and/or that all control and data
signals are valid) when it makes "valid" high and, like the second
process, the agent 500 does not wait for, nor does the DUT 212
send, a signal that indicates that the DUT 212 is ready to accept
data. However, unlike the second process, the one-way handshake
protocol with flow control 702 enables the DUT 212 to send the
signal "flow control" to indicate when the DUT 212 can no longer
accept more data. As a result, when "valid" is high and "flow
control" is low, the outcome of the protocol indicates that
transaction transmission(s) 704 should be transmitted and when
"valid" is low or "flow control" is high, the outcome of the
protocol indicates that transaction transmission(s) 704 should not
be transmitted or cease from being transmitted from the agent 500
to the DUT 212. This one-way handshake protocol with flow control
puts control in the agent 500 over the start of transaction
transmissions 704 unilaterally, but gives the DUT 212 the ability
to stop the transaction transmissions 704 using the flow control
signal "flow control". For multi-cycle transactions, in some
embodiments the first signal portion of the third process is only
performed in the first cycle such that subsequent cycles of the
multi-cycle transaction comprise repeating the checking for the
"flow control" going high in order to indicate that any further
data is invalid. Alternatively, even for multi-cycle transactions
the first signal portion is able to be repeated along with the
"flow control" checking each cycle of the transaction until the
multi-cycle transaction is complete.
[0062] Further, as shown in FIG. 7C, the third process is able to
comprise start/end of data marking signals 706. These signals 706
are able to comprise a start of packet (sop) signal and an end of
packet (eop) signal that indicate the first data cycle and the last
data cycle of the packet (of the transaction transmission 704),
respectively. As a result, the start/end of data marking signals
706 are able to be used with larger packets and/or transaction
transmissions 704 in order to indicate to the DUT 212 when each
packet (or transaction 704) starts and/or stops. For example, if
the agent 500 is sending data at the rate of 32 bits per clock
cycle, but the packets and/or chunks are greater than 32 bits of
data (e.g. 64 or 128 bytes/chunks), the start/end of data marking
signals 706 are able to be used to mark the end and the beginning
of the packets and/or chunks. Alternatively, the start/end of data
marking signals 706 are able to be omitted from the third process.
Additionally, it should be noted that the start/end of data marking
signals 706 are able to be added to the first, second and/or any
other handshake processes described herein as desired to deal with
longer transaction transmissions 704. Additionally, as shown in
FIG. 7C, the transaction transmission 704 comprises one dataset
(data) having a payload of 31:0. However, similar to above, the
transaction transmission 704 is able to comprise more or less
datasets and/or transmission streams each having more or less
payload and/or quantity of data. In some embodiments, the driver
504 transmits the transaction transmission 704 to the DUT 212 based
on the outcome of the handshake protocol 702 (as executed by the
transporter 506). Alternatively, the transporter 506 is able to
retrieve the transaction from the driver 504 and transmit the
transaction transmission 704 to the DUT 212 based on the outcome of
the handshake protocol 702. Additionally, although FIGS. 7A-7C
illustrate the above described three handshake protocol types, it
is understood that other types of handshake protocols are able to
be used such a three-way handshakes with or without flow control or
data marking and other types of handshake protocols as known in the
art.
[0063] FIG. 8 illustrates an agent 800 according to some
embodiments. In particular, the agent 800 is able to be
substantially similar to the agents 206 and/or 500 except for the
differences described herein. Further, although discussed
separately, the agent 800 is able to replace and/or supplement the
agents in all of the embodiments described herein. As shown in FIG.
8, the agent 800 comprises a sequencer 802, a driver 804, a
transporter 806 and a monitor 808, wherein the sequencer 802 is
coupled with the driver 804, the transporter 806 is coupled with
the monitor 808, and the monitor 808 and transporter 806 are
coupled with the DUT 212 and/or the interface 222. The transporter
806 is able to be configured to handle all handshaking protocol
necessary for communicating with the DUT 212 over the interface 222
such that the monitor 808 is able to be generic in that it is not
configured based on the handshake protocol of the interface 222. In
particular, by removing the handshaking protocol responsibilities
from the monitor 808 with the transporter 806, the monitor 808 is
able to be automatically generated for an interface 222 without any
knowledge of the protocols of the interface 222.
[0064] In some embodiments, the monitor 808 and/or transporter 806
are configured to monitor and/or sample all or a portion of the
transaction on the interface 222 every clock cycle. In such
embodiments, the transporter 806 is able to indicate to the monitor
808 whether the sampled/monitored data or transaction is valid
based on the outcome of the handshake protocol such that the
monitor knows whether to send the sampled/monitored data to a
scoreboard 210 or reference model 208 within the environment 204.
Alternatively, the monitor 808 is able to be configured to only
sample all or a portion of the transaction on the interface 222
during clock cycle where the transporter 806 indicates that the
data or transaction is valid based on the outcome of the handshake
protocol. In some embodiments the transporter 806 is configured to
perform the handshaking protocol with the interface 222 and/or DUT
212 every clock cycle. Alternatively, the performance of the
handshaking is able to be performed on a transaction basis,
operation basis, periodically, on demand, or according to other
types of schedules. In some embodiments, the monitor 808 is able to
operate without the transporter 506 using a default handshake
protocol or no handshake protocol to determine if data is
valid.
[0065] In some embodiments, the agents 500 and 800 are able to be
combined such that the combined agent comprises both a generic
driver 504 and a generic monitor 808. In such embodiments, the
driver 504 and monitor 808 are able to share the same the
transporter 506/806, which is coupled with both the driver 504 and
monitor 808. As a result, in such embodiments the transporter
506/806 is able to control both the driver 504 and the monitor 808
based on the outcome of the handshake protocol as described herein.
Alternatively, in such embodiments the driver 504 and the monitor
808 are able to have separate transporters 506/806 that are
separately coupled to the monitor 808 or the driver 504 and operate
as described herein separately.
[0066] FIG. 9 illustrates a method of testing a device under test
212 within a verification environment 204 of a testbench 202
according to some embodiments. Although described separately, one
or more of the steps of the methods of FIGS. 6, 9, 12, 14 and/or 15
are able to be combined into a single method. As shown in FIG. 9, a
monitor 808 of an agent 800 within the verification environment 204
monitors and/or samples one or more transactions transmitted on an
interface 222 between the agent 800 and the DUT 212 at the step
902. In some embodiments, a new transaction is monitored and/or
sampled each clock cycle. Alternatively, one or more of the
transactions are able to be multi-cycle such that data related to a
single transaction is monitored and/or sampled over multiple
cycles. The monitor 808 of the agent 800 monitors a handshake on
the DUT 212 according to a handshake protocol at the step 904.
Specifically, the transporter 806 and/or driver 804 of the agent
800 are able to perform the handshake with the DUT 212 (via the
interface 222) according to the handshake protocol which is
monitored by the monitor 808. In other words, the transporter 806
is able to both drive control signals onto and/or sample control
signals from an interface 222 in order to effectuate a handshake
protocol for that interface 222 and/or DUT 212. In some
embodiments, the handshake protocol used is based on interface 222
and/or DUT 212. In some embodiments, the handshake protocol is
indicated by the transporter class for the interface 222 within the
interface configuration file.
[0067] Based on the outcome of the handshake protocol, the monitor
808 determines if the data is ready on the interface 222 and/or DUT
212 at the step 906. The monitor 808 communicates with the
transporter 806 to sample the transaction if the outcome of the
handshake protocol indicates the transaction is valid at the step
908. The monitor 808 forwards the sampled transaction to a
scoreboard 210 or a reference model 208 of the verification
environment 204 at the step 910. In other words, the transporter
806 is able to indicate to the monitor 808 whether the transaction
or portion of the transaction on the interface 222 should be
sampled and forwarded to the scoreboard 210 or reference model 208
because the outcome of the handshake protocol indicates that the
transaction is valid or invalid for the cycle or cycles. In some
embodiments, the communication is a control command received by the
monitor 808 from the transporter 806 indicating the outcome of the
handshake protocol. In some embodiments, the monitor 808 discards
or fails to forward the transaction to the scoreboard 210 or the
reference model 208 if the outcome of the handshake protocol
indicates the transaction is invalid. As a result, the method
provides the benefit of enabling the monitor 808 to remain generic
while still customizing the agent 800 for the interface 222 and/or
DUT 212 by using the transporter 806 to control the handshake
protocol with the interface 222 and/or DUT 212.
[0068] In some embodiments, the method further comprises sending
data received from the DUT 212 to the one or more additional agents
coupled to the agent 800 within the environment 204. In such
embodiments, the handshake protocol used by the transporter 806 is
able to be different than a handshake protocol of a transporter of
the one or more additional agents. As described above, in some
embodiments the handshake protocol is one of three handshake
protocols consisting of a one-way handshake protocol without
destination flow control, a two-way handshake protocol and a
one-way handshake protocol with destination flow control.
Alternatively, any number and/or combination of different or the
same handshake protocols are able to be used. In some embodiments,
the handshake protocol and/or sampling and forwarding based on the
outcome of the handshake protocol is able to be performed each
clock cycle. In addition, if the transaction is a multi-cycle
transaction, the sampling and/or forwarding is able to continue
through multiple consecutive clock cycles until the multi-cycle
transaction is complete (e.g. based on the end of packet or start
of packet indicators). In such multi-cycle embodiments, the
handshake protocol is able to still be repeated each cycle to
verify that the transaction is still valid or has become
invalid.
[0069] FIGS. 10A-10C illustrate three exemplary handshake protocol
and transaction transfer processes according to some embodiments.
The three handshake protocol and transaction transfer processes of
FIGS. 10A-10C are substantially similar to those described in FIGS.
7A-7C except for the differences described herein. FIG. 10A
illustrates a first process of monitoring a two-way handshake
protocol 1002 and transaction transmission 1004 according to some
embodiments. In particular, the two-way handshake protocol 1002
comprises sending a first signal "source ready" from the driver 804
and/or transporter 806 to the DUT 212 (via an interface) and
sending a second signal "destination ready" from the DUT 212 to the
driver 804 and/or transporter 806. According to the handshake
protocol 1002, the driver 804 and/or transporter 806 indicates that
it is ready to send data (and/or that all control and data signals
are valid) when it makes "source ready" high and the DUT 212
indicates that it is ready to accept data when "destination ready"
is high. As a result, when both "source ready" and "destination
ready" are both high, the outcome of the protocol indicates that
transaction transmission(s) 1004 are valid (e.g. for sampling) and
when either "source ready" or "destination ready" are low, the
outcome of the protocol indicates that transaction transmission(s)
1004 are invalid (e.g. do not need to be sampled or forwarded).
This two-way handshake protocol enables either party (driver
804/transporter 806 or DUT 212) to stop transaction transmissions
1004 unilaterally and restricts the beginning of transaction
transmissions 1004 to when both parties indicate that they are
ready. As shown in FIG. 10A, the transaction transmission 1004
comprises two datasets (data1 and data2) having payloads of 7:0 and
31:0. Alternatively, the transaction transmission 1004 is able to
comprise more or less datasets and/or transmission streams each
having more or less payload and/or quantity of data. Based on the
outcome of the handshake protocol 1002 (as received from the
transporter 806), the monitor 808 is able to sample the datasets of
the transaction 1004 for forwarding to the reference model 208 or
the scoreboard 210. In other words, the monitor 808 is able to
determine when the datasets transmitted on the interface 222 are
valid datasets (e.g. when "source ready" and "destination ready"
are high) that need to be sampled and forwarded to the desired
component based on the outcome of the handshake protocol as
indicated by the transporter 806.
[0070] FIG. 10B illustrates a second process of monitoring a simple
or one-way handshake protocol without flow control 1002 and
transaction transmission 1004 according to some embodiments. In
particular, the one-way handshake protocol without flow control
1002 comprises sending a first signal "valid" from the driver 804
and/or transporter 806 to the DUT 212 (via an interface). According
to the handshake protocol 1002, the driver 804 and/or transporter
806 indicates that it is ready to send data when it makes "valid"
high (and/or that all control and data signals are valid), but
unlike the first process, the driver 804 and/or transporter 806 do
not wait for, nor does the DUT 212 send, a signal that indicates
that the DUT 212 is ready to accept data. As a result, when "valid"
is high, the outcome of the protocol indicates that transaction
transmission(s) 1004 are valid (e.g. for sampling) and when "valid"
is low, the outcome of the protocol indicates that transaction
transmission(s) 1004 are invalid (e.g. do not need to be sampled or
forwarded). This one-way handshake protocol puts full control in
the driver 804 and/or transporter 806 to stop or start transaction
transmissions 1004 unilaterally, wherein the DUT 212 has no flow
control and rather is simply notified by the driver 804 and/or
transporter 806 when transaction transmission 1004 is incoming. As
shown in FIG. 10B, like FIG. 10A, the transaction transmission 1004
comprises two datasets (data and data1) having payloads of 7:0 and
31:0. However, the transaction transmission 1004 is able to
comprise more or less datasets and/or transmission streams each
having more or less payload and/or quantity of data. Based on the
outcome of the handshake protocol 1002 (as received from the
transporter 806), the monitor 808 is able to sample the datasets of
the transaction 1004 for forwarding to the reference model 208 or
the scoreboard 210. In other words, the monitor 808 is able to
determine when the datasets transmitted on the interface 222 are
valid datasets (e.g. when "valid" is high) that need to be sampled
and forwarded to the desired component based on the outcome of the
handshake protocol as indicated by the transporter 806.
[0071] FIG. 10C illustrates a third process of monitoring a one-way
handshake protocol with flow control 1002, transaction transmission
1004 and start/end of data marking signals 1006 according to some
embodiments. In particular, the one-way handshake protocol with
flow control 1002 comprises sending a first signal "valid" from the
driver 804 and/or transporter 806 to the DUT 212 (via an
interface). According to the handshake protocol with flow control
1002, the driver 804 and/or transporter 806 indicates that it is
ready to send data (and/or that all control and data signals are
valid) when it makes "valid" high and, like the second process, the
driver 804 and/or transporter 806 does not wait for, nor does the
DUT 212 send, a signal that indicates that the DUT 212 is ready to
accept data. However, unlike the second process, the one-way
handshake protocol with flow control 1002 enables the DUT 212 to
send the signal "flow control" to indicate when the DUT 212 can no
longer accept more data. As a result, when "valid" is high and
"flow control" is low, the outcome of the protocol indicates that
transaction transmission(s) 1004 are valid (e.g. for sampling) and
when "valid" is low or "flow control" is high, the outcome of the
protocol indicates that transaction transmission(s) 1004 are
invalid (e.g. do not need to be sampled or forwarded). This one-way
handshake protocol with flow control puts control in the driver 804
and/or transporter 806 over the start of transaction transmissions
1004 unilaterally, but gives the DUT 212 the ability to stop the
transaction transmissions 1004 using the flow control signal "flow
control". For multi-cycle transactions, in some embodiments the
first signal portion of the third process is only performed in the
first cycle such that subsequent cycles of the multi-cycle
transaction comprise repeating the checking for the "flow control"
going high in order to indicate that any further data is invalid.
Alternatively, even for multi-cycle transactions the first signal
portion is able to be repeated along with the "flow control"
checking each cycle of the transaction until the multi-cycle
transaction is complete.
[0072] Further, as shown in FIG. 10C, the third process is able to
comprise start/end of data marking signals 1006. These signals 1006
are able to comprise a start of packet (sop) signal and an end of
packet (eop) signal that indicate the first data cycle and the last
data cycle of the packet (of the transaction transmission 1004),
respectively. As a result, the start/end of data marking signals
1006 are able to be used with larger packets and/or transaction
transmissions 1004 in order to indicate to the DUT 212 when each
packet (or transaction 1004) starts and/or stops. For example, if
the driver 804 and/or transporter 806 is sending data at the rate
of 32 bits per clock cycle, but the packets and/or chunks are
greater than 32 bits of data (e.g. 64 or 128 bytes/chunks), the
start/end of data marking signals 1006 are able to be used to mark
the end and the beginning of the packets and/or chunks.
Alternatively, the start/end of data marking signals 1006 are able
to be omitted from the third process. Additionally, it should be
noted that the start/end of data marking signals 1006 are able to
be added to the first, second and/or any other handshake processes
described herein as desired to deal with longer transaction
transmissions 1004. Additionally, as shown in FIG. 10C, the
transaction transmission 1004 comprises one dataset (data) having a
payload of 31:0. However, similar to above, the transaction
transmission 1004 is able to comprise more or less datasets and/or
transmission streams each having more or less payload and/or
quantity of data.
[0073] Based on the outcome of the handshake protocol 1002 (as
received from the transporter 806), the monitor 808 is able to
sample the datasets of the transaction 1004 for forwarding to the
reference model 208 or the scoreboard 210. Further, the monitor 808
is able to base the beginning and end of its sampling and/or
forwarding on the start/end of packets and/or transactions 1004
based on the data marking signals 1006. In some embodiments, the
marking signals 1006 are directly received and determined by the
monitor 808 from the interface 222. Alternatively, the marking
signals 1006 are able to be determined based on the command signal
from the transporter 806 and/or forwarding of the marking signals
1006 from the transporter 806 to the monitor 808. In any case, the
monitor 808 is able to determine when the datasets transmitted on
the interface 222 are valid datasets (e.g. when "valid" is high
and/or the data is between the sop and eop) that need to be sampled
and forwarded to the desired component based on the outcome of the
handshake protocol as indicated by the transporter 806.
Additionally, it should be noted that although FIGS. 10A-10C
illustrate the above described three handshake protocol types, it
is understood that other types of handshake protocols are able to
be used such a three-way handshakes with or without flow control or
data marking and other types of handshake protocols as known in the
art. Further, for each of the processes, the size of the data
sampled (e.g. 32 bits) is able to be determined by the monitor 808
based on the marking signals 1006, indications from the transporter
806, a default number, or a combination thereof.
Testbench Builder Application
[0074] The testbench application is able to comprise an input
module, an agent generation module, an interconnection module, a
test case module and user interface for interacting with the
application. The input module is configured to input interface data
(e.g. an interface file) that describes the interfaces 222
associated with the DUT 212 for testing the DUT 212. For example, a
single interface file is able to be input by the input module,
wherein all of the agents are able to be generated and if necessary
customized based on the single interface file such that each
interface associated with the DUT 212 is described in the interface
file. In some embodiments, the interface data is able to comprise
an extensible markup language (XML) file. Alternatively, the
interface data is able to comprise other types of file formats. In
some embodiments, the input module enables a user to manually input
interface data. Alternatively or in addition, the input module is
able to automatically generate interface data based on an input DUT
data. For example, based on the inputs, outputs and protocols
associated with the DUT 212, the input module is able to determine
a necessary number of interfaces, type of interfaces (input,
output, both), protocol and/or transaction format associated with
each interface, and or other information about each of the
interfaces that are necessary for testing the DUT 212. The
interface data is able to comprise one or more of a number of
needed interfaces, a name of all the ports in the interface, a
width of each port (e.g. number of bits), whether each port is a
control or data port, a direction of the port (e.g. input or
output) with respect to the DUT 212, a transaction class of each of
the interfaces and/or a transporter class of each of the
interfaces. Alternatively, the interface data is able to omit the
transporter class and/or transaction class of one or more of the
interfaces, which indicates that the interface has a default
transporter and/or transaction class.
[0075] The transaction class is able to indicate what types of data
stimulus or transactions that the interface 222 and/or DUT 212 is
able to understand. In other words, the transaction class is a
representation of the DUT interface in a higher level of
abstraction. As a result, the sequencer 214 of the agent 206
associated with the interface 222 is able to utilize stimulus data
that is of the indicated transaction class for the interface 222 in
the interface data. The transporter class is able to indicate what
communication protocol or format (e.g. handshake) that the
interface 222 and/or DUT 212 require for communication. For
example, the transporter class is able to be one of a two-way
handshake, delayed or destination flow control (DFC), one-way
handshake (no flow control), or other types of communication
protocol as are known in the art. In some embodiments, the default
transporter class is a two-way handshake such that the generic
agents 206 will be automatically configured to use the two-way
handshake communication protocol. Alternatively, a different one of
the transporter classes are able to be assigned as the default
class that each non-customized agent utilizes. The transporter
class is able to determine which of the handshake protocols that
the transporter 506 of an agent 500 is configured to use for the
associated interface 222.
[0076] The agent generation module is configured to generate each
agent 206 necessary for the DUT 212 based on interfaces 222
indicated in interface data input by the input module.
Specifically, the agent generation module generates a generic or
default agent 206 for each of the interfaces 222 indicated in the
interface data inputted by the input module. These generic agents
206 are able to each comprise a driver, a sequencer and a monitor
that are configured to use a default protocol and default
transaction class. In some embodiments, the generic driver of the
agents 206 is substantially similar to the generic driver 504 such
that it does not handle any handshake protocol between the agent
206 and the interface 222. If necessary based on the interface
data, the agent generation module is then able to customize the
generic agents based on the interface data of the interface
associated with each generic agent. For example, the agent
generation module is able to determine the transaction and/or
transporter class for the interface 222 and configure the sequencer
214 to operate based on the transaction class and/or configure the
driver 220 and monitor 216 to operate based on the transporter
class. Additionally, in some embodiments the customization
comprises creating a transporter 506 configured to use the
handshake protocol associated with the transporter class and
thereby operate with the driver 504 as described above with
reference to FIG. 5. As a result, each of the agents 206 are able
to be automatically generated for and customized based on each
interface 222 necessary to test the DUT 212. In other words, the
agents 206 that do not need to be customized are generated and
immediately ready to operate based on the default transaction and
transporter types and the agents 206 that do need to be modified
are able to be simply reset to a non-default transaction and/or
transporter class and then are ready to operate with the associated
interfaces 222. For example, a non-customized agent 206 is able to
utilize a driver 504 that operates without or independent of a
transporter 506 and does not utilize a handshake protocol or uses a
default handshake protocol.
[0077] In some embodiments, the agent generation module is able to
sort all types of interfaces 222 into one of the three transporter
classes or handshake protocols such that the set of transporter
classes is able to only include the three handshake protocols
regardless of the number of different types of interfaces 222
required for the DUT 212. In some embodiments, the agent generation
module generates the generic agents 206 for all of the interfaces
222 and then customizes one or more of the agents 206 as necessary
based on the associated interface 222. Alternatively, the agent
generation module is able to generate a generic agent 206 and
customize the generic agent 206 if necessary based on the
associated interface 222 before generating the next generic agent
206 for the next interface 222. In some embodiments, the agent
generation module instantiates the agents 206 within the
environment 204 after all the agents 206 have been generated and/or
customized. Alternatively, the agent generation module instantiates
each of the agents 206 within the environment 204 after the agent
206 has been generated and/or customized. In some embodiments, the
agent generation module is able to dynamically change the
transaction and/or transporter class of one or more agents 206
within the verification environment 204 without creating a new
testbench 202. For example, a user is able to enter commands to
add, subtract and/or modify one or more of the agents 206 using the
user interface and the agent generation module is able to implement
the changes to the agents 206 within the environment 204
automatically. As a result, the testbench builder application
provides the benefit of automatically creating generic and
customized agents 206 for each interface 222 necessary to test a
DUT 212.
[0078] The interconnection module is configured to generate a
verification environment 204 for the testbench 202. Specifically,
the interconnection module generates a reference model 208 and a
scoreboard 210 and integrates and instantiates the reference model
208, the scoreboard 210, the ports, the interfaces 222 and all of
the agents 206 into the verification environment 204. Further, this
integration is able to comprise establishing interconnections
between the reference model 208, the scoreboard 210, the agents
206, DUT 212 and the interfaces 222 via the ports (e.g. RTL ports).
In particular, the interconnection module is able to couple the
ports of the DUT 212 with the interfaces 222. For example, if one
or more of the agents 206 comprise loopback ports, the
interconnection module is able to couple one or more of the agents
206 together via the loopback ports. As described above, this
loopback port coupling is able to be based on the dependency of the
testing data associated with each of the agents 206 with respect to
testing the DUT 212. In particular, the interconnection module is
able to automatically couple the loopback ports of any combination
of agents 206 whose testing data has a dependency relationship such
that via the loopback connections all the agents 206 with the
depended upon testing data send the associated dependency data to
all the agents 206 with testing data that is dependent on the
depended upon testing data. Indeed, in some embodiments the
dependent relationships of the agents 206 is able to be
automatically determined based on the interface parameters such
that the loopback port coupling is able to be automatically
performed by the interconnection module based on the interface
configuration file. The interconnection module is also able to
register each of the interfaces 222 in a configuration database
with a unique string or other identifier such that each interface
222 is able to be used by one or more components (e.g. agents,
scoreboard, monitor) within the environment 204 via a string or
unique identifier based lookup in the configuration database.
Moreover, in some embodiments the interconnection module is able to
bind the output/input of one or more of the agents 206 to one or
more other agents 206 within the environment 204.
[0079] The test case module is configured to generate one or more
random or predefined test cases for generating stimulus data for
testing the DUT 212 with the testbench 202. For example, the test
case module is able to generate a sample test based on the DUT 212
and/or interface data for testing the DUT 212 once the testbench
202 has been generated. The user interface is configured to provide
users a graphical user interface for issuing commands to the
testbench 202 and/or the testbench builder application. For
example, a user is able to specify a test case based on which
stimulus data is used to test the DUT 212, a user is able to adjust
the reference module 208 operation in order to reflect changes in
the desired operation, and/or a user is able to add, subtract
and/or modify one or more of the agents 206 via the transaction
and/or transporter class values as desired. In particular, as
described above, the testbench builder application is able to
dynamically change the testbench 202 and/or verification
environment 204 (without creating a whole new testbench) based on
such commands received from the user interface. It should also be
noted that the testbench builder application is also able to
dynamically change the testbench 202 and/or verification
environment 204 (without creating a whole new testbench) based on
changed interface data received by the input module. In either
case, the testbench builder application provides the benefit of
being able to dynamically change a testbench 202 without recreating
the verification environment 204 and/or one or more of its
components (e.g. agents).
[0080] FIG. 3 illustrates a method of generating a test bench
according to some embodiments. As shown in FIG. 3, a testbench
builder application reads an interface configuration file
associated with a DUT 212 at the step 302. The testbench builder
application then identifies one or more interfaces 222 associated
with the DUT 212 defined in the interface configuration file at the
step 304. Based on the identified interfaces 222, the application
generates a verification environment 204 within the testbench 202
including a base agent 206 for each of the interfaces 222 in the
interface configuration file at the step 306. In some embodiments,
the generating of the verification environment further comprises
generating one of more of the group comprising a reference model
208, a dispatcher 1124 and a scoreboard 210. In some embodiments,
the characteristics of the base agents 206 are predefined
independent of the interface configuration file. For example, if
the base agents 206 are associated with interfaces 222 that do not
require any customization, the application is able to apply default
settings to the transporter and/or transaction class of the base
agents 206 independent of the interface configuration file. These
base agents 206 have default settings that enable them to operate
within the verification environment 204 without customization.
[0081] Based on interface parameters of the interface configuration
file, the application is able to customize one or more of the base
agents 206 that are associated with the described interface
parameters at the step 308. As a result, the customized base agents
206 are able to meet the transporter and/or transaction class needs
of the interface 222 with which they are associated. Then the
application instantiates the customized base agents 206 in the
verification environment 204 at the step 310. This instantiation is
able to further comprise instantiation of one or more of the group
comprising the base agents 206, the scoreboard 210, the reference
module 208 and the dispatcher 1124, and the coupling/binding of all
of the agents 206, interfaces 222, the DUT 212, the scoreboard 210,
dispatcher 224 and/or the reference module 208 together as desired
via one or more ports. In particular, the instantiation and/or
generation of the dispatcher 224 is able to comprise coupling all
the agents 206 to one of the ports of the dispatcher 224 and
generating the agent table 226 which associates the
agents/interfaces/ports that are coupled to the dispatcher 224 with
the scoreboard 210 or the reference model 208 as described above.
For example, the agent table 226 is able to associate the addresses
of the ports that receive the data from the agents 206 with the
address of the port coupled to the scoreboard 210 or the address of
the port coupled to the reference model 208. In some embodiments,
the interface parameters for each of the interfaces 222 comprise
names of the ports associated with the interface, width of the
ports associated with the interface, direction of the ports
associated with the interface, and whether each of the ports
associated with the interface is for communicating control data or
non-control data. Additionally, in some embodiments the agent table
226 is generated by the builder application based on the interface
parameters and the binding of the ports within the verification
environment.
[0082] FIG. 4 illustrates a block diagram of an exemplary testbench
builder device 102 configured to implement the testbench builder
application 103 according to some embodiments. The testbench
builder device 102 is able to acquire, store, compute, communicate
and/or display information such as images and videos. In general, a
hardware structure suitable for implementing the device 102
includes a network interface 402, a memory 404, a processor 406,
I/O device(s) 408, a bus 410 and a storage device 412.
Alternatively, one or more of the illustrated components are able
to be removed or substituted for other components well known in the
art. The choice of processor is not critical as long as a suitable
processor with sufficient speed is chosen. The memory 404 is able
to be any conventional computer memory known in the art. The
storage device 412 is able to include a hard drive, CDROM, CDRW,
DVD, DVDRW, flash memory card or any other storage device. The
testbench builder device 102 is able to include one or more network
interfaces 402. An example of a network interface includes a
network card connected to an Ethernet or other type of LAN. The I/O
device(s) 408 are able to include one or more of the following:
keyboard, mouse, monitor, display, printer, modem, touchscreen,
button interface and other devices. Testbench builder
application(s) or module(s) 103 used to generate the testbench as
described above are able to be stored in the storage device 412
and/or memory 404 and processed as applications are typically
processed. More or less components shown in FIG. 4 are able to be
included in testbench builder device 102. In some embodiments,
testbench builder hardware 420 is included. Although as shown in
FIG. 4 the testbench builder device 102 includes applications 103
and hardware 420 for implementing the testbench generation, it is
understood that the testbench builder device 102 is able to be
implemented on a computing device in solely hardware, firmware or
software, or any combination thereof.
[0083] In some embodiments, the testbench builder application(s)
103 include several applications and/or modules. In some
embodiments, the testbench builder application(s) 103 include a
separate module for each of the graphical user interface features
described above. The modules implement the method described herein.
In some embodiments, fewer or additional modules are able to be
included. Examples of suitable computing devices include a personal
computer, a laptop computer, a computer workstation, a server, a
mainframe computer, a handheld computer, a personal digital
assistant, a cellular/mobile telephone, a smart appliance, a gaming
console, a digital camera, a digital camcorder, a camera phone, an
iPod.RTM., a video player, a DVD writer/player, a Blu-ray.RTM.
writer/player, a television, a home entertainment system or any
other suitable computing device.
[0084] The testbench builder system, method and device described
herein provides numerous advantages. In particular, the builder
provides the advantage of automatically creating a fully
operational testbench based on inputted interface data.
Additionally, the builder provides the advantage of enabling the
dynamic adjustment of the testbench via the user interface or a
modified interface file without having the fully recreate a new
testbench. Moreover, the builder provides the advantage of
automatically generating generic agents for interfaces that do not
require a customized agent thereby increasing the speed of the
testbench generation process. Further, the testbench system
provides the benefit of enabling the generic drivers to be
generated independent of the interface characteristics such as
handshake protocol. Additionally, the dispatcher provides the
benefit of reducing the connection complexity of the verification
environment. In particular, the dispatcher provides a single
component that all the agents are able to be coupled and
automatically send data to instead of each agent needing a separate
connection established to either the reference model or a single
line to the scoreboard. As a result, the dispatcher is able to
efficiently route the data either on a single connection to the
reference model or a single line to the scoreboard. Moreover, the
loopback ports provide the advantage of enabling testing data
dependency to be handled on an agent level without the use of a top
level multi-layer or virtual sequencer. Also, the use of timestamps
provides the advantage of enabling the each of the agents to adjust
for latency within the verification environment without the use of
a virtual or multilayer sequencer.
[0085] While the invention has been described with reference to
numerous specific details, one of ordinary skill in the art will
recognize that the invention can be embodied in other specific
forms without departing from the spirit of the invention. Thus, one
of ordinary skill in the art will understand that the invention is
not to be limited by the foregoing illustrative details, but rather
is to be defined by the appended claims.
* * * * *