Beruflich Dokumente
Kultur Dokumente
SPECMAN ELITE
Basic Training Labs
Version 5.2
Legal Notice
Copyright © 2001-2003 Verisity Design, Inc. All rights reserved.
Trademarks
Verisity, the Verisity logo, eAnalyzer, eCelerator, eRM, Invisible Specman, LicenseE, Pure IP,
Specman, Specman Elite, SureCov, Verification Advisor, Verification Alliance, and
Verification Vault are either trademarks or registered trademarks of Verisity Design, Inc. in the
United States and/or other jurisdictions. All other trademarks are the exclusive property of their
respective owners.
Confidentiality Notice
The contents of this document constitute valuable proprietary and confidential property of
Verisity Design, Inc. No part of this information product may be reproduced, transmitted, or
translated in any form or by any means, electronic, mechanical, manual, optical, or otherwise
without prior written permission from Verisity Design, Inc.
Information in this product is subject to change without notice and does not represent a
commitment on the part of Verisity. The information contained herein is the proprietary and
confidential information of Verisity or its licensors, and is supplied subject to, and may be used
only by Verisity’s customers in accordance with, a written agreement between Verisity and its
customers. Except as may be explicitly set forth in such agreement, Verisity does not make, and
expressly disclaims, any representations or warranties as to the completeness, accuracy, or
usefulness of the information contained in this document. Verisity does not warrant that use of
such information will not infringe any third party rights, nor does Verisity assume any liability
for damages or costs of any kind that may result from use of such information.
Lab Overview
Specview is the graphical user interface of Specman Elite. Generally, it is the most convenient
way to run Specman Elite.
From specview, you can access the online help. Using the online help can greatly reduce the
time required to become efficient in writing e.
Included in the online help are:
Specman Elite Command Detailed information about the commands you can use to
Reference control the Specman Elite tool
Specman Elite Usage and Detailed information about using the Specman Elite tool
Concepts Guide and integrating the Specman Elite system with other
software tools or C models
Specman Elite Release Release notes for the current version of Specman Elite
Notes
Installation Guide Installation guide for the current version of Specman Elite
Index Index for all of the above except the Verification Advisor,
which has its own separate index
Lab Instructions
Your working directory for lab 1 is sbt_lib/sbt_lab01/e.
specview opens.
There are three tabs on the left frame of the help browser:
• Contents– Includes Search and Browsing Tips, Specman Elite Manuals, e Reuse
Methodology (eRM), and the Verification Advisor.
4. Click the Search tab, type the following keywords, and click Go to perform a search:
struct statement syntax
Note By adding the word syntax, we narrowed the search to syntax definitions only.
Without the word syntax, you get many more matches.
Specman> help <keywords>
Note You can also access the documentation on Verisity’s website Verification Vault.
In the right frame of the help browser, the associated document is displayed. In our
example, we see Section 4.2.1 “struct” in the e Language Reference.
6. Repeat steps 3 and 4 above, using keywords of your own choice.
Tip It is a good idea to leave the help window open so that you can quickly search for
commands, syntax, or methodology as needed.
Lab Overview
Specman Elite automates many of the common tasks involved in building a verification
environment and a test base. This includes writing tests, checking stimulus and timing
protocols, and collecting functional test metrics. This lab introduces the Specman Elite
commands that you can use.
Lab Instructions
Your working directory is sbt_lib/sbt_lab02/e. The arrangement of files and subdirectories
follows the eRM, the e Reuse Methodology. eRM is the recommended methodology for any
development using the e language and Specman Elite. Details of the eRM will be introduced
slowly as side topics in this course.
eRM organizes the code for Specman verification environments into packages and group
packages within libraries. For the basic training course, each lab is a package, e.g. sbt_lab2.
sbt_lib is a library that contains all the labs of the course as packages. eRM requires that each
library contain a LIBRARY_README.txt file, and each package contain a
PACKAGE_README.txt file. At your leisure look at the examples of each of these files in
basic training library.
The directory $SPECMAN_HOME/erm_lib contains many packages illustrating eRM, and is a
library itself. We describe eRM in greater detail in the Advanced Specman Elite Training
Course.
Note You can configure the various tools and features of Specman Elite on the tabs of the
Specman Elite Configuration Options window.
3. On the Print tab of the Specman Elite Configuration Options window, change the radix for
integer values to HEX and click Apply.
Note For every command executed through specview’s graphical interface, there is an
associated Specman Elite command that can be entered at the Specman> prompt in the
main specview window.
Note You can tell when Specman Elite is ready to receive a new command by the state of
the Ready/Busy status bar in the lower right corner of the main specview window (See the
figure on page 2).
4. At the Specman> prompt in the main specview window, type the following command and
press Enter:
Specman> config print -radix=hex
7. Click the Reload button to restore Specman Elite and load the same e file again.
9. In the help browser, click on Specman Elite Manuals ->Command Reference and examine
the Specman Elite commands available to you.
Tip Specman Elite commands can be grouped together in a command file (.ecom).
Executing the command file executes in sequence all of the commands contained
within it.
10. Create a file called init.ecom and add the following three lines:
restore;
config print -radix=hex;
load template.e;
Tip When you use files with a recognized .e* extension (.e, .ecom, .esv, .ecov), you do not
need to add the extension when specifying the file name. In the last line of this sample
init.ecom file, you could also write:
load template;
11. Execute init.ecom from the Specman> prompt by preceding it with the @ symbol.
Specman> @init
Lab Overview
To define data elements we use structs.
• A struct can have fields and methods and other members that will be introduced in later units.
• An e method is an operational procedure containing actions.
• A method can have parameters, local variables, and a return value.
• You can define a method only within a struct, and you must create an instance of the struct
before you can execute the method.
• When a method is executed, it can manipulate the fields of the struct in which it is currently
located and the fields of any other struct using hierarchical referencing.
• Predefined test-phase methods can be extended to call methods in different phases of the
test.
• The top-level struct in Specman Elite is named sys. Your verification environment must be
instantiated as a tree under sys, and it is pregenerated when you issue the Specman Elite
test command.
After completing this lab, you will be able to:
• Create structs
• Create lists
• Create and execute methods
Lab Instructions
Your working directory is sbt_lib/sbt_lab03/e.
1. Open the existing e file called sbt_packet.e and create a struct sbt_packet_s according to
the SBT Spec.
3. Create a method that will calculate the correct parity according to the SBT Spec.
Tip You may need to search the online help for bit concatenation.
To execute the method, it should be called from the predefined post_generate() test-phase
method:
post_generate() is also {
<Call the parity calculation method>
};
4. Open the sbt_env.e file and add to sys a field that is a list of sbt_packet_s. eRM
recommends separation of an object’s definition from its instance in a file such as sbt_env.e.
6. Read and correct the syntax errors. Continue using the specview Reload button until you
load your e code successfully.
10. Click the Sys button to view all generated data in sys.
11. Click the blue hyperlink to bring up a window showing your list of packets. Clicking on the
+ symbols in the Data content window will expand the hierarchy.
12. On the specview Test menu , choose Test with Random Seed.
13. Coverage is a useful tool for concisely displaying information about the generated packets.
The course discusses coverage in detail later. Nevertheless, one would use coverage when
developing a data object. Add the following code into your sbt_packet_s definition. Use the
names for address, length and parity that you used.
event packet_gen;
cover packet_gen is {
item addr;
item len;
item parity;
};
14. Add the following code to the post_generate method after the parity calculation:
emit packet_gen;
15. Reload the environment, click on the test button, and click on the coverage button. This
opens the coverage browser. In the left frame, expand sbt_packet_s.packet_gen. If you click
on addr, len, or data, you will see the range of values for each that were generated. You will
expand and refine this coverage in later labs.
Lab Overview
Generation of fields is guided by constraints that you place on the fields.
Constraints are rules that the Specman Elite generator must obey when randomly generating
fields. You can use constraints to:
Lab Instructions
Your working directory is sbt_lib/sbt_lab04.
2. Constrain the size of the data payload list of byte to be equal to the length field.
3. Create a control field called payload_size that can take on a value of SMALL, MEDIUM,
or LARGE.
4. Add a constraint that causes the length field to be based on the value of your new field as
follows:
SMALL: [1..20]
MEDIUM: [21..44]
LARGE: [45..63]
Tip Make sure that payload_size field is generated before the length field.
5. Add a constraint that takes into account that the SBT has only three port addresses (equal
to 0, 1, and 2).
6. Add a soft constraint to sys in the sbt_env.e file to keep the number of packets in the list
in the range from 10 to 50.
7. Load the sbt_env.e file and generate the list of packets using the test command.
9. Look at the generated packets in sys and make sure that the packets are generated according
to your constraints.
The two lists should be random and different but obeying your constraints.
If time permits:
2. Constrain the payload data so that the first byte always equals the UID.
Tip Make sure that the uid field is generated before the payload data.
3. Reload the sbt_env.e file.
5. Click Sys and examine the generated packets. Make sure that the first byte of the payload
data equals the UID.
6. Add an additional coverage item to the packet_cov coverage group:
item payload_size;
7. Reload and click on test. Review the packet coverage by clicking on the coverage gui
button.
8. Exit specview.
Lab Overview
We want to give test writers a good interface to the verification environment. Ideally, they
should simply apply constraints to control fields (or knobs) to cause specific behavior. Toward
this end, we add a field to control the generation of valid and invalid parity for our packets.
Lab Instructions
Your working directory is sbt_lib/sbt_lab05.
a. Add a field to control good or bad parity, and use a soft constraint to set the default as
good parity (packet_kind).
• When packet_kind == GOOD, the parity field equals the parity_computed field.
• When packet_kind == BAD, the parity field does not equal the parity_computed
field.
Note Order of generation is important. You must generate addr, len, and data before you
can calculate the parity. You also must decide whether you want a packet to have good or
bad parity before you generate the parity field.
Tip You can remove the call of the parity_calc() method from the post_generate() body,
because the parity field is now constrained to the output of parity_calc().
3. Load the sbt_env.e file.
6. Add an item called packet_kind to the coverage group. Reload, click on test, and review the
additional data shown in coverage by opening the coverage browser.
7. Exit specview.
Lab Overview
You can use when inheritance to create subtypes of a struct.
Each subtype can have new struct members, such as fields, constraints, and methods.
You can also extend methods in different ways within different when blocks (subtypes).
Lab Instructions
Your working directory is labs/lab6.
1. Add a new file called sbt_packet_vii.e that extends the sbt_packet struct to handle the
VERSION_II spec requirements. (See your Basic Training manual slide printouts.)
2. Create an enumerated type for the packet version.
3. Create a new packet_version field that is of the enumerated type created in step 2.
4. Use extend and when syntax to add the appropriate VERSION_II sbt_packet subtype
fields and constraints.
9. Extend the existing packet_gen coverage collection by including the following code in
sbt_packet_vii.e:
cover packet_gen is also {
item packet_version;
};
10. Reload, test, and use the coverage browser again to see the additional coverage item.
Lab Overview
To write tests in e, you generally only need to extend existing structs within the verification
environment. You do this by applying new constraints to the various fields.
Each test can extend the environment with different constraints that are simply layered on top
of it.
After completing this lab, you will be able to:
Lab Instructions
Your working directory is sbt_lib/sbt_lab07. Creation of tests is a fundamentally different
activity often done by a different group of people than those developing a verification
environment. Consequently, we will create tests in a different subdirectory than the
environment code. One methodology for collecting the test files into a separate area will be
shown in this lab.
eRM requires the use of xxx_top.e files. For example, here, each test file will import the single
file, sbt_top.e, that in turn imports all the files of the environment. Thus the test writer does not
need to know the specific files of the environment.
1. Redefine your SPECMAN_PATH to include the sbt_lib library by executing the shell
command:
2. In sbt_lib/sbt_lab07/e, create a sbt_top.e file and write import statements for the three files
of the environment. Each import must use a package relative pathname, e.g. import
sbt_lab07/e/sbt_packet.e;
4. Create a test1.e file that imports the sbt_top.e file. Remember to use package relative
names.
5. In test1.e, extend the sbt_packet and sys structs with the following test constraints:
10. Reload, test, and observe how the coverage display for packet_gen now shows ranges of
values rather than just integer values.
11. Create a test2.e file that imports the sbt_top.e file and extends the sbt_packet and sys structs
with the following test constraints:
Tip If you are not clear on how to do this, try searching the online help for:
keep for each syntax
and
soft reset
Tip Use the keep for each implicit variable index to constrain packets as follows:
index == 0 => constraint;
Lab Overview
It is necessary to model the port which drives the HDL DUT input port in a modular way. We
will use units for this purpose. Within each unit, we will create events that synchronize the e
verification environment with the HDL DUT simulation.
We will use time-consuming methods (TCMs) to drive the stimulus onto the appropriate HDL
signals according to the correct input protocol.
After completing this lab, you will be able to:
Lab Instructions
Your working directory is sbt_lib/sbt_lab08. e. Files of the environment are in the subdirectory
e. Test files are in the subdirectory tests.
1. Change the directory to sbt_lib/sbt_lab8, and close any open specview windows.
2. Edit the file sbt_input_bfm.e to modify the SBT driver unit as follows:
a. Add fields:
b. Add events:
c. Add TCMs:
4. Edit sbt_top.e
6. Start specview and load test3.e. Then, correct syntax errors and continue to reload your
code until it loads without errors.
7. Exit specview.
Lab Overview
It is now time to connect your Specman Elite verification environment to the HDL simulator.
To do so, you must first create a Verilog or VHDL stubs file.
Specman Elite uses the stubs file to interface with the simulator and enable viewing of
Specman Elite objects in the waveform viewer.
You must recreate the stubs file whenever you add any of the following to your e code:
Note Details of Verilog and VHDL statements will be covered later in this chapter.
Lab Instructions
Your working directory is sbt_lib/sbt_lab09. e files of the environment are in the subdirectory
e. Test files are in the subdirectory tests. Scripts for supporting various simulators are in the
subdirectory sim_scripts.
3. Create an HDL stubs file by issuing the following Specman Elite command at the
Specman> prompt.
4. Create a working directory under sbt_lib/sbt_lab09 in which simulations will be run and
verification data will be written. Call it working, and cd into it.
5. Quit specview so that you can run specview linked to the HDL simulator.
The linked run of Specman Elite and the HDL simulator starts.
Tip Read the script file to see how you are activating Specman Elite and the simulator
simultaneously. For this lab you should be using a script that has a lab9 in its name.
Note To switch control to Specman Elite, issue the appropriate simulator command:
• ModelSim > sn
• Verilog-XL, VCS > $sn;
• NC-Sim > call sn;
To switch control back to the simulator, click the Specman> prompt at the bottom left
corner of the specview window.
8. View events in the waveform window by issuing the following Specman Elite commands
after loading the e files:
Specman> set wave viewer
• ModelSim—mti
• Signalscan—signalscan
• Novas—novas
• VirSim—virsim
Tip You can also view other Specman Elite struct members (for example, fields) in the
waveform viewer.
For more information, see Chapter 7 “Using a Waveform Viewer” in the Specman Elite
Usage and Concepts Guide.
c. Select the line where the for loop begins in the gen_and_drive() TCM
e. You can now close the Current Modules and the Source windows by clicking their Close
button.
11. Click the Specman> prompt to switch control back to the simulator and then run the
simulator:
a. Click the Step button to step through your code one line at a time.
b. Select the no_of_pkts field and click the Print button to see the current value.
c. Click the Cont button to continue.
d. Select the line with the breakpoint and click the Del Br button to delete the breakpoint.
Tip You can delete all breakpoints by clicking the Del All button.
13. In the main specview window, see the TCM message printed 10 times.
Lab Overview
Specman Elite supports two types of generation—pre-run and on-the-fly.
With on-the-fly generation, structs are generated during the run using the gen action.We
recommend on-the-fly generation for stimulus generation for the following reasons:
• The Specman Elite generator can react to the current state of the DUT, because the constraints
can be based on the value of signals inside the DUT.
• It saves memory.
After completing this lab, you will be able to:
Lab Instructions
Your working directory is sbt_lib/sbt_lab10. All required e files are in the subdirectory e. All
required scripts are in the subdirectory scripts.
a. Add a field called delay of type uint for generating random delays between packets.
i. Before generating the next packet in the loop, gen the delay and wait the delay
number of falling clocks.
ii. In the loop, use the gen action to generate the cur_packet and call the
drive_packet() method, no_of_pkt times.
iii. When generating the cur_packet, add a constraint that forces the packet’s UID field
to equal the current loop variable index.
c. Modify the TCM drive_packet() to:
i. Pack the cur_packet, using packing.low, into a variable of type list of byte.
ii. Using the SBT DUT Spec, drive each byte from this list on to the HDL bus top.data
with the correct protocol.
• Make sure you tag the physical fields in the sbt_packet_s struct, because only
the physical fields get packed.
4. See steps 3 to 8 of Lab 9. Copy the script that starts Specman Elite with your simulator from
the scripts subdirectory to the current working directory and execute it at the UNIX prompt.
a. In specview, load the file ../tests/test3.e and issue the test command.
5. Exit specview.
Lab Overview
For checking the data coming out of the SBT DUT, we must first create a unit to model a bfm
receiver for each of the three SBT DUT output ports. This bfm interacts with th dut to collect
the packets coming out of the ports.
To check that the correct data has been received on the correct output port, we create a
scoreboard data checker for each output port.
After completing this lab, you will be able to:
Lab Instructions
Your working directory is sbt_lib/sbt_lab11.
2. Edit the file sbt_output_bfm.e, which already contains an sbt_output_bfm unit with an
empty TCM called collect_packets(), so that:
a. According to the SBT DUT output protocol spec,once valid data is known to be ready
on the output, the TCM must collect one byte coming out of a port per clock cycle and
add that byte to a list that is initially empty.
b. After collecting all bytes for a complete packet, the unpack() method converts the list
to a packet struct called rcv_packet of type sbt_packet.
Tip For modeling the output ports, we define an sbt_output_bfm unit and then create three
instances of it. Therefore, when accessing HDL signals, use computed names (based
on the port_no field).
a. extend the sbt_env unit with a field that is a list of sbt_receiver unit instances.
c. Constrain the port_no field for each unit to be equal to the index of the receiver in the
list.
d. Because each receiver is at the same level of hierarchy in the DUT, constrain each
receiver’s hdl_path() to be equal to “~/top”.
Tip For more information, search the online help for list of unit instance.
a. Copy the script that starts Specman Elite with your simulator from the scripts
subdirectory to the current working directory and execute it at the UNIX prompt.
b. In specview, load the file ../tests/test3.e and issue the test command.
then you probably forgot to start the collect_packets() TCM from the test-phase run()
method. tick_max is a run configuration parameter that determines the maximum
number of ticks before the test stops. If your receiver does not respond to the DUT
(because the TCM never started), then the DUT, in turn, does not respond to the driver.
This causes the driver to hang, never executing stop_run().
7. Exit specview.
Lab Overview
A basic concern when checking DUT data items is to verify that the output data matches an
expected result according to the rules of how the DUT modifies the input data.
We call this kind of checking scoreboard checking, because it records the expected result of
each input data item and notes when a matching output data item is found.
With scoreboard checking, you can verify that:
Lab Instructions
Your working directory is sbt_lib/sbt_lab12.
1. Edit the file sbt_scoreboard.e, which already contains an sbt_scoreboard_u unit with two
empty methods called add_packet() and check_packet(), as follows.
a. Create a field of expected packets exp_packets that is a do-not-generate list of
sbt_packet.
c. check_packet()
i. Use the predefined deep_compare_physical() method for checking that the input
parameter packet_out matches a packet on the list exp_packets.
ii. If the packets match, remove the matching packet from the list. If the packets do
not match, issue a dut_error() with an appropriate message.
Note When sending and receiving packets, we must call the add_packet() and
check_packet() methods from the sbt_driver and the sbt_receiver. To do so, we extend the
sbt_input_bfm_u and sbt_output_bfm_u units so that the on struct member calls the
appropriate method when the respective event is emitted.
For more information, search the online help for on event struct member syntax.
Note So that we can reference the scoreboard on the appropriate output port, we add a
backpointer to the sbt_env_u unit in the sbt_input_bfm_u unit using get_enclosing_unit().
a. At the UNIX prompt, execute the script that starts Specman Elite with the simulator.
b. In specview, load the file ../tests/test3.e and issue the test command.
5. Exit specview.
Lab Overview
Temporal expressions are combinations of events and temporal operators that describe time or
protocol behavior.
Temporal expressions define the occurrence of events for synchronizing with signals in the
HDL, suspending execution of a TCM, capturing functional coverage, or checking that
sequences of events occur in accordance with specific protocol rules. We use the expect struct
member to define temporal checks.
Lab Instructions
Your working directory is sbt_lib/sbt_lab13.
2. Edit the file sbt_checker.e and extend the sbt_input_bfm_u and sbt_output_bfm_u units
with the following protocol checks:
a. expect that the output signal err rises within 1 to 10 cycles after packet ended if a packet
is driven to the SBT with bad parity. To do so:
i. Create an event called bad_parity that occurs when the cur_packet has a
packet_kind of BAD. Use the packet_ended event as the sampling event.
ii. Create an event called err_rise that occurs when the SBT DUT signal err rises.
iii. Use the expect struct member and issue an appropriate dut_error() if check fails.
Tip For more information, search the online help for temporal dictionary.
b. expect that the SBT DUT signal suspend_data_in falls within 100 clock cycles after it
rises. To do so:
Create appropriate events and an expect struct member like the previous check.
c. expect that the input signal read_enb_x rises within 30 clock cycles after the SBT DUT
signal vld_chan_x rises for each of the sbt_receiver output ports. To do so:
When creating the appropriate events and expect struct members, use computed names
based on the port_no field of the sbt_receiver.
Tip You can intentionally cause this check to fail if you create a new test that
causes the receiver delay to exceed 30 clock cycles.
b. In specview, load the file ../tests/test3.e and issue the test command.
Write a fourth protocol check for the sbt_output_bfm_u to check that the output DUT
channelx bus is not tri-stated (high-z) when the SBT DUT signal vld_chan_x is asserted
(high) and the input signal read_enb_x is also asserted (high).
Tip See the slide printouts from the Driving Stimulus class for the @z syntax that checks
whether signals are tri-state.
7. Exit specview.
Lab Overview
You created packet coverage as debugging aid to packet generation in earlier labs. In this lab,
we will reuse that code functional coverage to ensure that all input stimulus scenarios were
created, and we will implement new functional coverage to veriify that the SBT DUT state
machine executed each legal state and state transition.
Lab Instructions
Your working directory is sbt_lib/sbt_lab14.
3. Edit the file sbt_cover_packet.e. Extend the SBT input_bfm so that when the driver()
method emits the event packet_started, the event cur_packet.packet_gen is also emitted.
Note The change made here is subtle. The original code sampled data whenever a packet
was generated. With this change, we assure that the packets we sample for coverage are
only those that are driven into the device.
4. To edit the file sbt_cover_dut.e to cover the SBT DUT state machine, make the following
modifications to the sbt_cover_dut_u unit. This is a new unit in which an event sbt_sm has
been defined that occurs when the clock signal rises.
a. Create a new coverage group based on the event sbt_sm. Use the coverage group text
option to name this group “SBT State Machine”.
b. Create an enumerated type called fsm_state that has the values for each possible state.
Refer to the SBT DUT spec (see slide printouts) for state names and encoding.
Note The enum values must be in the same order as the HDL enum, as shown in the Spec.
c. Add one coverage item of type fsm_state to cover the HDL signal router1/in_port/state
(the state register in the SBT HDL).
Note Note an sbt_cover_dut_u unit instance is defined in the sbt_cover_dut.e file with and
extension to sbt_env_u. Thus this particular coverage capability is included or excluded in
the environment by the presence or absence of the file.
d. Add a transition coverage item for the state register. Be sure to define the illegal
transitions as listed in the SBT DUT spec.
Tip For more information, see “Coverage of State Machines” in the Verification Advisor.
Note The file sbt_top.e has already been edited to import sbt_cover_dut.e and
sbt_cover_packet.e
5. Open and examine the file config.e in the tests area. This file is also imported by test3.e in
this lab. The code in this file modifies the specman default coverage settings. Here the
set_config action enables coverage collection that permits interactive crossing of fields
which you will see shortly.
6. As in steps 3 and 7 of Lab 9, create a subdirectory named working in sbt_lab14 and cd into
it.
a. At the UNIX prompt, execute the script that starts Specman Elite with the simulator.
b. In specview, load the file ../tests/test3.e and issue the test command.
7. Wait for the simulation to end. Then click the Coverage button to examine the
coverage.
c. Click the All button to see holes and the covered items.
9. In the left frame of the Coverage window, click the plus next to session.start_of_test to
expand this predefined coverage group.
Note Each coverage group has a grade, and there is an overall grade for the entire test.
10. After reviewing the coverage items, click the Cross button .
b. Select the item addr and click Add to add it to the list of items to be crossed.
Lab Overview
In this lab, we add the remaining coverage groups from our test plan and then write tests aiming
at 100% functional coverage.
Lab Instructions
Read this lab from start to finish before beginning.
2. Add coverage groups or items for the following test plan requirements:
Tip import the sbt_top.e file in each test. Make certain to use the package relative path.
Tip To stress FIFOs, inject large input packets and have the receivers wait a long time
before reading the output packets.
Tip Keep your tests short (25 packets or less). Use random seeds to get different variations
of the same test.
Specman> test –seed=random
Tip Review the table below for a list of the fields that you might want to constrain.
4. In the coverage window, use the Read button to view cumulative coverage for all tests
that were run. For example, after running test5, you can read in coverage for test3 and test4
as well.
5. Notify the instructor each time you find a bug in the DUT, and he or she will correct the
bug in the DUT for you. Then, after code correction, recompile the HDL and continue
trying to fill the coverage.
6. Exit specview.