Project

General

Profile

FAQ » History » Version 2

Mikhail Chupilko, 09/28/2011 12:17 PM

1 1 Alexander Kamkin
h1. FAQ
2
3 2 Mikhail Chupilko
* *Where is it possible to get C++TESK Testing ToolKit?*
4
The toolkit is located at the following link: http://forge.ispras.ru/projects/cpptesk-toolkit/files.
5
6
* *What are the steps to have the toolkit correctly installed?*
7
1. Download and unpack the archive with C++TESK Testing ToolKit (the lastest version) into a convenient folder;
8
2. Run install.sh from the folder with C++TESK Testing ToolKit;
9
3. Wait until "Successfully installed" appears.
10
The toolkit is installed into $(CPPTESK_HOME) folder. If this environment variable is missing, it will be assigned to $(ISPRAS_HOME)/tools/cpptesk-toolkit. If the varible $(ISPRAS_HOME) is missing, this varible first will be assigned to $HOME.
11
12
* *What other programs should be installed for verification of hardware designs?*
13
There are Icarus Verilog and VeriTool being able to be installed by means of $(CPPTESK_HOME)/bin/install-veritool.sh.
14
Icarus Verilog is installed into $(ICARUS_HOME), and VeriTool is installed into $(VERITOOL_HOME). If the variables are missing, they will be created like $(CPPTESK_HOME).
15
16
* *Is it possible to reduce size of the signal dump file (VCD)?*
17
E.g. in Icarus Verilog it is possible to choose different dump file format LXT2. The running command would be as follows: $(ICARUS_HOME)/bin/vvp -M. -mdb $(DB_VVP) -lxt2 -M. +scen=$@ +argv="$(TEST_ARGV)". To use GTKWave for viewing the file is possible if testbench.vcd is renamed to testbench.lxt.
18
19
* *What does the following message mean*
20
<pre>
21
 tests/src/scenarios/fifo_scen.cpp: In member function ''bool cpptesk::examples::fifo::FIFOScenario::scen_nop(cpptesk::ts::IntAbcCtx&)'':
22
 tests/src/scenarios/fifo_scen.cpp:62: error: jump to case label
23
 tests/src/scenarios/fifo_scen.cpp:55: error:   crosses initialization of ''int i''
24
</pre>
25
 *during compiling of the following code?*
26
<pre>
27
 50:bool FIFOScenario::scen_nop(Ctx& ctx)
28
 51:{
29
 52:    IBEGIN
30
 53:    IACTION
31
 54:    {
32
 55:        int i = 0;
33
 56:        // Refresh functional coverage
34
 57:        dut.refresh_coverage();
35
 58:        // Give control to the simulator for one cycle
36
 59:        dut.cycle();
37
 60:
38
 61:        // Take results of reference model working and check them
39
 62:        YIELD(dut.verdict());
40
 63:    }
41
 64:    IEND
42
 65:}
43
</pre>
44
There is an agreement not to declare local variables inside of IACTION first block. If a nested into IACTION block is used, the problem will disappear. Also it is possible to declare variables before IBEGIN.
45
46
* *Is it necessary to place CYCLE () after WAIT (condition)?*
47
No, it is not. The macro WAIT (condition) includes CYCLE () itself. The semantics of the CYCLE after the WAIT is as follows. We ask the interface adapter to wait one cycle more after the WAIT''s condition is met.
48
49
* *How to call a serializer?*
50
It can be called by means of one of the following macro:
51
START_STIMULUS(SEQUENTIAL|PARALLEL)
52
RECV_STIMULUS(SEQUENTIAL|PARALLEL, Interface iface, Message msg)
53
54
* *What is the difference between START_STIMULUS and RECV_STIMULUS?*
55
START_STIMULUS starts serializer with default parameters (interface and message are the same as those given to the stimuli process). RECV_STIMULUS allows modifing both message and name of the interface used. The macro is also useful if there is a stimulus with more than one serializer call inside.