VisualDSP++ and Test Driven Development Prelaboratory assignment information

Download Report

Transcript VisualDSP++ and Test Driven Development Prelaboratory assignment information

VisualDSP++ and
Test Driven Development
Prelaboratory assignment information
Concepts
 Stages in a conventional radio
 Stages in a software radio
 Goals for the “long term” project
 Building a VisualDSP project using TDD

See web for more specific details
 Demo if time is available
5/23/2016
Concepts of TDD,
M. Smith, ECE, University of Calgary, Canada
2 / 28
Test Driven Development
 Customer Tests – personally find these hard to do
 Not clear if there is yet “a real process available”
 Developer Tests – have found many advantages
CUSTOMER
DEVELOPER
Describe
Requirements
Design Solution
Build Solution
5/23/2016
Write
Acceptance Tests
Write
Unit Tests
Test Solution
Concepts of TDD,
M. Smith, ECE, University of Calgary, Canada
3 / 28
Software “AM” radio concept
RF STAGE
Antenna
Pickup
AUDIO STAGE
Mixer
Low pass
Filter
Rectifier
Low pass
Filter
+ amplifier
Local
Oscillator
IF STAGE
Audio out
Most stages handled with high speed software
5/23/2016
Concepts of TDD,
M. Smith, ECE, University of Calgary, Canada
4 / 28
Rectification algorithm
Choices are
 C++ compiler in DEBUG mode


int *RectifyDEBUG(int initial[ ], int final, int N);
float *RectifyDEBUG (float initial[ ], float final, int N);
 C++ compiler in RELEASE mode


int *RectifyRELEASE(int initial[ ], int final, int N);
float *RectifyRELEASE(float initial[ ], float final, int N);
 “US” in ASSEMBLY mode


int *RectifyASM(int initial[ ], int final, int N);
float *RectifyASM(float initial[ ], float final, int N);
 “US” in OPTIMIZED ASSEMBLY mode


5/23/2016
int *RectifyOPTASM (int initial[ ], int final, int N);
float *RectifyOPTASM (float initial[ ], float final, int N);
Concepts of TDD,
M. Smith, ECE, University of Calgary, Canada
5 / 28
Files and directories needed
TDD and many tests files available on web
ENCM515
TDD
ActivateTestsmain.cpp
Check web for updates
TS201_char8_TDDLib_4Dec04.dlb
TDD_include25Nov04.h
TDD_Tests25Nov04.h
TigerSHARC versions to come
hardwareTDD.h
datastoreTDD.h
Lab1
Lab1Tests
Lab2
Lab2Tests
5/23/2016
LabX
LabXTests
RectifyTests
HalfWaveDebugTests.cpp
HalfWaveReleaseTests.cpp
HalfWaveASMTests.cpp
HalfWaveTimingTests.cpp
Rectify
Rectify.h
Rectifymain.cpp
CustomerRectifymain.cpp
TS201.ldf
HalfWaveDebug.cpp
Rectify.prj
HalfWaveRelease.cpp
Concepts of TDD,
HalfWaveASMint.asm
M. Smith, ECE, University of Calgary, Canada
HalfWaveASMfloat.asm
6 / 28
First unit test
RectifyTests/Lab1HalfWaveDebugTests.cpp (on Web)
#include “../Rectify/Rectify.h”
5/23/2016
Concepts of TDD,
M. Smith, ECE, University of Calgary, Canada
7 / 28
Running the tests or customer code
 Lab1/Lab1main.cpp
5/23/2016
Concepts of TDD,
M. Smith, ECE, University of Calgary, Canada
8 / 28
Running the customer product code
Rectify/CustomerRectifymain.cpp
#include “Rectify.h”
int CustomerRectifymain(void);
5/23/2016
Concepts of TDD,
M. Smith, ECE, University of Calgary, Canada
9 / 28
Test code –TDD/ActivateTestsmain.cpp
Report all tests.
Success and failures
Report successes only
5/23/2016
Concepts of TDD,
M. Smith, ECE, University of Calgary, Canada
10 / 28
Build a project -- Steps 1 and 2
Hold
down
CTRL
Key
5/23/2016
Concepts of TDD,
M. Smith, ECE, University of Calgary, Canada
11 / 28
Build a project – Steps 3, 4, 5, 6
5/23/2016
Concepts of TDD,
M. Smith, ECE, University of Calgary, Canada
12 / 28
Build a project – Steps 8, 9, 10
5/23/2016
Concepts of TDD,
M. Smith, ECE, University of Calgary, Canada
13 / 28
Adding files to project
5/23/2016
Concepts of TDD,
M. Smith, ECE, University of Calgary, Canada
14 / 28
Build and run commands
Build ANY CHANGED files (Use most of the time for speed reasons)
Build THIS file
Build ALL files
Run the program
Halt the program
5/23/2016
Concepts of TDD,
M. Smith, ECE, University of Calgary, Canada
15 / 28
Runs “slowly” in single cycle accurate Simulator mode
Run on “real board” in ICT320 using Summit ICE JTAG
5/23/2016
Concepts of TDD,
M. Smith, ECE, University of Calgary, Canada
16 / 28
Some useful project menu options
About every 10 builds
or when things
“just are not going right”
Clean
Update dependencies
Rebuild ALL
5/23/2016
Concepts of TDD,
M. Smith, ECE, University of Calgary, Canada
17 / 28
RectifyTests/HalfWaveDebug.cpp
“works” but contains a hidden bug
#include “Rectify/Rectify.h”
5/23/2016
Concepts of TDD,
M. Smith, ECE, University of Calgary, Canada
18 / 28
Integer array tests
ZERO-LENGTH ARRAY
 Unspecified requirement – shown as part of
test functionality

5/23/2016
Function return pointer = NULL if error
condition present
Concepts of TDD,
M. Smith, ECE, University of Calgary, Canada
19 / 28
Fast generation of “Release Code/Tests”
 Save a version of
RectifyTests/ HalfWaveDebugTests.cpp as
RectifyTests/ HalfWaveReleaseTests.cpp
 Use editor to change function names from
XXXDebug to XXXRelease
 Save a version of
Rectify/ HalfWaveDebug.cpp as
Rectify/ HalfWaveRelease.cpp
 Use editor to change function names from
XXXDebug to XXXRelease
5/23/2016
Concepts of TDD,
M. Smith, ECE, University of Calgary, Canada
20 / 28
Fast generation of Release code/tests
 Add RectifyTests/ HalfWaveReleaseTests.cpp
and Rectify/ HalfWaveRelease.cpp to project
 Compile and link to make sure that they work
 Need to change “compile option” for
Rectify/ HalfWaveRelease.cpp to optimized
5/23/2016
Concepts of TDD,
M. Smith, ECE, University of Calgary, Canada
21 / 28
Steps for changing options of “one
file” to “optimized / release mode”
5/23/2016
Concepts of TDD,
M. Smith, ECE, University of Calgary, Canada
22 / 28
Float and assembly language tests
-- Cut and paste versions of integer tests
5/23/2016
Concepts of TDD,
M. Smith, ECE, University of Calgary, Canada
23 / 28
Speed tests – integer code versions
5/23/2016
Concepts of TDD,
M. Smith, ECE, University of Calgary, Canada
24 / 28
Concepts covered





Stages in a conventional radio
Stages in a software radio
Goals for the “long term” project
Concept of test driven development
Digital rectification



Tests for integer array rectification
Tests for float array rectification (C++
compiler)
Tests for rectification in assembly code
 More details of test driven development
5/23/2016
Concepts of TDD,
M. Smith, ECE, University of Calgary, Canada
25 / 28
Time for a demo
 Need 1 student volunteer
5/23/2016
Concepts of TDD,
M. Smith, ECE, University of Calgary, Canada
26 / 28
Concepts
 Stages in a conventional radio
 Stages in a software radio
 Goals for the “long term” project
 Building a VisualDSP project using TDD

See web for more specific details
 Demo if time is available
5/23/2016
Concepts of TDD,
M. Smith, ECE, University of Calgary, Canada
27 / 28