Upload
others
View
6
Download
0
Embed Size (px)
Citation preview
Nokia Internal Use Only
overflow
Verifying Fixed-Point Digital Filters using SMT-Based Bounded Model Checking
1. Introduction
• Fixed-point implementation leads to quantization nonlinearities, round
off errors, and overflows due to operations with finite word-length
• Testing and simulation can lead to a limited number of scenarios, which
do not exploit all possible behaviors of the system
2. SMT-based BMC of Digital Filter
• Check the negation of a given property at a given depth
Renato B. Abreu, Lucas Cordeiro and Eddie B. L. Filho [email protected], [email protected], [email protected]
3. Proposed Approach
4. Experimental Setup
• Environment*: Fedora 64 bits, ESBMC v1.21, SMT Z3 v3.2
• Filters tested (from Matlab design toolbox and from literature)
• Low Pass, High Pass, Band Pass, Band Stop
• Up to 6th order IIR and up to 30th order FIR
• Word-length up to 16 bits
5. Conclusions
• The method can detect overflow, limit cycle and time constraint failures
in filters of different types and orders
• Can find problems that are hard to detect using tests and simulations
• Verification time tends to be higher for high order filters and for longest
word-length formats since these lead to harder verification conditions
• Exploits the advantages of an state of art model checker ESBMC over a
model coded in C
counterexample trace
property
bound
transition
system
𝑦 𝑛 = − 𝑎𝑘 y n − k
𝑁
𝑘=1
+ 𝑏𝑘 x n − k
𝑀
𝑘=0
* Tools and benchmarks available in www.esbmc.org
ESBMC
Verification Success
Counter-example
Filter model coded in C
Parameters and constraints
modify parameters
Nokia Internal Use Only
Verifying Fixed-Point Digital Filters using SMT-Based Bounded Model Checking
1. Introduction
• Fixed-point implementation leads to quantization nonlinearities, round
off errors, and overflows due to operations with finite word-length
• Testing and simulation can lead to a limited number of scenarios, which
do not exploit all possible behaviors of the system
2. SMT-based BMC of Digital Filter
• Check the negation of a given property at a given depth
Renato B. Abreu, Lucas Cordeiro and Eddie B. L. Filho [email protected], [email protected], [email protected]
3. Proposed Approach
4. Experimental Setup
• Environment*: Fedora 64 bits, ESBMC v1.21, SMT Z3 v3.2
• Filters tested (from Matlab design toolbox and from literature)
• Low Pass, High Pass, Band Pass, Band Stop
• Up to 6th order IIR and up to 30th order FIR
• Word-length up to 16 bits
5. Conclusions
• The method can detect overflow, limit cycle and time constraint failures
in filters of different types and orders
• Can find problems that are hard to detect using tests and simulations
• Verification time tends to be higher for high order filters and for longest
word-length formats since these lead to harder verification conditions
• Exploits the advantages of an state of art model checker ESBMC over a
model coded in C
counterexample trace
property
bound
transition
system
𝑦 𝑛 = − 𝑎𝑘 y n − k
𝑁
𝑘=1
+ 𝑏𝑘 x n − k
𝑀
𝑘=0
limit cycle
* Tools and benchmarks available in www.esbmc.org
ESBMC
Verification Success
Counter-example
Filter model coded in C
Parameters and constraints
modify parameters
Nokia Internal Use Only
Verifying Fixed-Point Digital Filters using SMT-Based Bounded Model Checking
1. Introduction
• Fixed-point implementation leads to quantization nonlinearities, round
off errors, and overflows due to operations with finite word-length
• Testing and simulation can lead to a limited number of scenarios, which
do not exploit all possible behaviors of the system
2. SMT-based BMC of Digital Filter
• Check the negation of a given property at a given depth
Renato B. Abreu, Lucas Cordeiro and Eddie B. L. Filho [email protected], [email protected], [email protected]
3. Proposed Approach
4. Experimental Setup
• Environment*: Fedora 64 bits, ESBMC v1.21, SMT Z3 v3.2
• Filters tested (from Matlab design toolbox and from literature)
• Low Pass, High Pass, Band Pass, Band Stop
• Up to 6th order IIR and up to 30th order FIR
• Word-length up to 16 bits
5. Conclusions
• The method can detect overflow, limit cycle and time constraint failures
in filters of different types and orders
• Can find problems that are hard to detect using tests and simulations
• Verification time tends to be higher for high order filters and for longest
word-length formats since these lead to harder verification conditions
• Exploits the advantages of an state of art model checker ESBMC over a
model coded in C
counterexample trace
property
bound
transition
system
𝑦 𝑛 = − 𝑎𝑘 y n − k
𝑁
𝑘=1
+ 𝑏𝑘 x n − k
𝑀
𝑘=0
time constraint
𝑙𝑡𝑖𝑚𝑖𝑛𝑔⟺ (𝑁 × 𝑇) ≤ 𝐷
* Tools and benchmarks available in www.esbmc.org
ESBMC
Verification Success
Counter-example
Filter model coded in C
Parameters and constraints
modify parameters
Nokia Internal Use Only
Satisfiability Modulo Theories
• An SMT solver decides about the satisfiability of a first order formula using different background
theories so it generalizes the propositional satisfiability
2
Nokia Internal Use Only
Satisfiability Modulo Theories
• An SMT solver decides about the satisfiability of a first order formula using different background
theories so it generalizes the propositional satisfiability
2
Theory Example
Equality 𝑥1 = 𝑥2 ∧ ¬(𝑥1 = 𝑥3) ⇒ ¬ 𝑥1 = 𝑥3
Bit vector 𝑏 ≫ 𝑖 &1 = 1
Linear arithmetic (4𝑦1 + 3𝑦2 ≥ 4) ∨ (𝑦2 − 3𝑦3 ≤ 3)
Arrays 𝑗 = 𝑘 ∧ 𝑎 𝑘 = 2 ⇒ 𝑎 𝑗 = 2
Combined theories 𝑗 ≤ 𝑘 ∧ 𝑎 𝑗 = 2 ⇒ 𝑎 𝑖 < 3
Nokia Internal Use Only
Satisfiability Modulo Theories
• An SMT solver decides about the satisfiability of a first order formula using different background
theories so it generalizes the propositional satisfiability
2
Theory Example
Equality 𝑥1 = 𝑥2 ∧ ¬(𝑥1 = 𝑥3) ⇒ ¬ 𝑥1 = 𝑥3
Bit vector 𝑏 ≫ 𝑖 &1 = 1
Linear arithmetic (4𝑦1 + 3𝑦2 ≥ 4) ∨ (𝑦2 − 3𝑦3 ≤ 3)
Arrays 𝑗 = 𝑘 ∧ 𝑎 𝑘 = 2 ⇒ 𝑎 𝑗 = 2
Combined theories 𝑗 ≤ 𝑘 ∧ 𝑎 𝑗 = 2 ⇒ 𝑎 𝑖 < 3
𝑘, 𝑙 × 𝑘, 𝑙 = 2𝑘, 2𝑙
2𝑘, 2𝑙 ≫ 𝑓 = 2𝑘, 𝑓
Nokia Internal Use Only
Satisfiability Modulo Theories
• An SMT solver decides about the satisfiability of a first order formula using different background
theories so it generalizes the propositional satisfiability
2
Theory Example
Equality 𝑥1 = 𝑥2 ∧ ¬(𝑥1 = 𝑥3) ⇒ ¬ 𝑥1 = 𝑥3
Bit vector 𝑏 ≫ 𝑖 &1 = 1
Linear arithmetic (4𝑦1 + 3𝑦2 ≥ 4) ∨ (𝑦2 − 3𝑦3 ≤ 3)
Arrays 𝑗 = 𝑘 ∧ 𝑎 𝑘 = 2 ⇒ 𝑎 𝑗 = 2
Combined theories 𝑗 ≤ 𝑘 ∧ 𝑎 𝑗 = 2 ⇒ 𝑎 𝑖 < 3
Overflow verification
𝑘, 𝑙 × 𝑘, 𝑙 = 2𝑘, 2𝑙
2𝑘, 2𝑙 ≫ 𝑓 = 2𝑘, 𝑓
Nokia Internal Use Only
BMC using the ESBMC
3
Nokia Internal Use Only
BMC using the ESBMC
3
Code C/C++
Nokia Internal Use Only
BMC using the ESBMC
3
Code C/C++
GOTO program
Control flow
Nokia Internal Use Only
BMC using the ESBMC
3
Code C/C++
GOTO program
Control flow Logic
context
SSA form
Nokia Internal Use Only
BMC using the ESBMC
3
Code C/C++
GOTO program
Control flow Logic
context
SSA form Solver
SMT
Convert constraints and properties
Nokia Internal Use Only
BMC using the ESBMC
3
Code C/C++
GOTO program
Control flow Logic
context
SSA form Solver
SMT
Convert constraints and properties
OK
Counter-example
Nokia Internal Use Only
Example 1: Overflow Verification
4
Nokia Internal Use Only
Example 1: Overflow Verification
4
-0,703125
-0,5 0,75
-0,703125
0,75
• ℎ𝑘 100𝑘=0 = 1,8178
• For x between [-1,1], 𝑦 𝑛 ≤ 1,82
• Using format 2, 6
- Interval [-2, 1,984375]
- Error ±0,0078125
• The model checker applies non-deterministic inputs in the interval [-1,1] searching the negation of:
– 𝑙𝑜𝑣𝑒𝑟𝑓𝑙𝑜𝑤⟺ (−2 ≤ 𝐹𝑃) ∧ (𝐹𝑃 ≤ 1,984375)
• Here the verification returns the following couter-example:
– x = { 0.0f, 0.015625f, 0.0f, -0.890625f, 0.96875f, -0.890625f }
– xaux = { -0.890625f, 0.96875f, -0.890625f }
– yaux = { 0f, -0.671875f, 0.890625f }
Nokia Internal Use Only
Example 1: Overflow Verification
4
-0,703125
-0,5
-0,703125
0,75
-0,890625 × 0,75 = -0,671875
• ℎ𝑘 100𝑘=0 = 1,8178
• For x between [-1,1], 𝑦 𝑛 ≤ 1,82
• Using format 2, 6
- Interval [-2, 1,984375]
- Error ±0,0078125
• The model checker applies non-deterministic inputs in the interval [-1,1] searching the negation of:
– 𝑙𝑜𝑣𝑒𝑟𝑓𝑙𝑜𝑤⟺ (−2 ≤ 𝐹𝑃) ∧ (𝐹𝑃 ≤ 1,984375)
• Here the verification returns the following couter-example:
– x = { 0.0f, 0.015625f, 0.0f, -0.890625f, 0.96875f, -0.890625f }
– xaux = { -0.890625f, 0.96875f, -0.890625f }
– yaux = { 0f, -0.671875f, 0.890625f }
Nokia Internal Use Only
Example 1: Overflow Verification
4
-0,703125
-0,5
0,75
-0,890625 × 0,75 = -0,671875
0,968750 × -0,703125 = -0,6875
• ℎ𝑘 100𝑘=0 = 1,8178
• For x between [-1,1], 𝑦 𝑛 ≤ 1,82
• Using format 2, 6
- Interval [-2, 1,984375]
- Error ±0,0078125
• The model checker applies non-deterministic inputs in the interval [-1,1] searching the negation of:
– 𝑙𝑜𝑣𝑒𝑟𝑓𝑙𝑜𝑤⟺ (−2 ≤ 𝐹𝑃) ∧ (𝐹𝑃 ≤ 1,984375)
• Here the verification returns the following couter-example:
– x = { 0.0f, 0.015625f, 0.0f, -0.890625f, 0.96875f, -0.890625f }
– xaux = { -0.890625f, 0.96875f, -0.890625f }
– yaux = { 0f, -0.671875f, 0.890625f }
Nokia Internal Use Only
Example 1: Overflow Verification
4
-0,703125
-0,5
-0,890625 × 0,75 = -0,6718750
-0,890625 × 0,75 = -0,671875
0,968750 × -0,703125 = -0,6875
• ℎ𝑘 100𝑘=0 = 1,8178
• For x between [-1,1], 𝑦 𝑛 ≤ 1,82
• Using format 2, 6
- Interval [-2, 1,984375]
- Error ±0,0078125
• The model checker applies non-deterministic inputs in the interval [-1,1] searching the negation of:
– 𝑙𝑜𝑣𝑒𝑟𝑓𝑙𝑜𝑤⟺ (−2 ≤ 𝐹𝑃) ∧ (𝐹𝑃 ≤ 1,984375)
• Here the verification returns the following couter-example:
– x = { 0.0f, 0.015625f, 0.0f, -0.890625f, 0.96875f, -0.890625f }
– xaux = { -0.890625f, 0.96875f, -0.890625f }
– yaux = { 0f, -0.671875f, 0.890625f }
Nokia Internal Use Only
Example 1: Overflow Verification
4
-0,703125
-0,5
-0,890625 × 0,75 = -0,6718750
+
+
+ -0,890625 × 0,75 = -0,671875
0,968750 × -0,703125 = -0,6875
• ℎ𝑘 100𝑘=0 = 1,8178
• For x between [-1,1], 𝑦 𝑛 ≤ 1,82
• Using format 2, 6
- Interval [-2, 1,984375]
- Error ±0,0078125
• The model checker applies non-deterministic inputs in the interval [-1,1] searching the negation of:
– 𝑙𝑜𝑣𝑒𝑟𝑓𝑙𝑜𝑤⟺ (−2 ≤ 𝐹𝑃) ∧ (𝐹𝑃 ≤ 1,984375)
• Here the verification returns the following couter-example:
– x = { 0.0f, 0.015625f, 0.0f, -0.890625f, 0.96875f, -0.890625f }
– xaux = { -0.890625f, 0.96875f, -0.890625f }
– yaux = { 0f, -0.671875f, 0.890625f }
Nokia Internal Use Only
Example 1: Overflow Verification
4
-0,703125
-0,5
-2,03125
-0,890625 × 0,75 = -0,6718750
+
+
+ -0,890625 × 0,75 = -0,671875
0,968750 × -0,703125 = -0,6875
• ℎ𝑘 100𝑘=0 = 1,8178
• For x between [-1,1], 𝑦 𝑛 ≤ 1,82
• Using format 2, 6
- Interval [-2, 1,984375]
- Error ±0,0078125
• The model checker applies non-deterministic inputs in the interval [-1,1] searching the negation of:
– 𝑙𝑜𝑣𝑒𝑟𝑓𝑙𝑜𝑤⟺ (−2 ≤ 𝐹𝑃) ∧ (𝐹𝑃 ≤ 1,984375)
• Here the verification returns the following couter-example:
– x = { 0.0f, 0.015625f, 0.0f, -0.890625f, 0.96875f, -0.890625f }
– xaux = { -0.890625f, 0.96875f, -0.890625f }
– yaux = { 0f, -0.671875f, 0.890625f }
Nokia Internal Use Only
Example 1: Overflow Verification
4
-0,703125
-0,5
-2,03125
-0,890625 × 0,75 = -0,6718750
+
+
+ -0,890625 × 0,75 = -0,671875
0,968750 × -0,703125 = -0,6875
• ℎ𝑘 100𝑘=0 = 1,8178
• For x between [-1,1], 𝑦 𝑛 ≤ 1,82
• Using format 2, 6
- Interval [-2, 1,984375]
- Error ±0,0078125
• The model checker applies non-deterministic inputs in the interval [-1,1] searching the negation of:
– 𝑙𝑜𝑣𝑒𝑟𝑓𝑙𝑜𝑤⟺ (−2 ≤ 𝐹𝑃) ∧ (𝐹𝑃 ≤ 1,984375)
• Here the verification returns the following couter-example:
– x = { 0.0f, 0.015625f, 0.0f, -0.890625f, 0.96875f, -0.890625f }
– xaux = { -0.890625f, 0.96875f, -0.890625f }
– yaux = { 0f, -0.671875f, 0.890625f }
Nokia Internal Use Only
Example 1: Overflow Verification
4
-0,703125
-0,5
-2,03125
-0,890625 × 0,75 = -0,6718750
+
+
+ -0,890625 × 0,75 = -0,671875
0,968750 × -0,703125 = -0,6875
The filter also fails in Direct Form II, but does not fail for
the Transposed Form II due to the order of operations
• ℎ𝑘 100𝑘=0 = 1,8178
• For x between [-1,1], 𝑦 𝑛 ≤ 1,82
• Using format 2, 6
- Interval [-2, 1,984375]
- Error ±0,0078125
• The model checker applies non-deterministic inputs in the interval [-1,1] searching the negation of:
– 𝑙𝑜𝑣𝑒𝑟𝑓𝑙𝑜𝑤⟺ (−2 ≤ 𝐹𝑃) ∧ (𝐹𝑃 ≤ 1,984375)
• Here the verification returns the following couter-example:
– x = { 0.0f, 0.015625f, 0.0f, -0.890625f, 0.96875f, -0.890625f }
– xaux = { -0.890625f, 0.96875f, -0.890625f }
– yaux = { 0f, -0.671875f, 0.890625f }
Nokia Internal Use Only
Example 2: Limit Cycle Verification
• We use a null input and non-deterministic values to previous outputs
• An assert detects a failure if the set of previous states of the outputs repeats
5
Nokia Internal Use Only
Example 2: Limit Cycle Verification
• We use a null input and non-deterministic values to previous outputs
• An assert detects a failure if the set of previous states of the outputs repeats
5
−𝟎, 𝟓
= 0
Nokia Internal Use Only
Example 2: Limit Cycle Verification
• We use a null input and non-deterministic values to previous outputs
• An assert detects a failure if the set of previous states of the outputs repeats
5
−𝟎, 𝟓
-1 0 1 2 3 n
y = 0
Nokia Internal Use Only
Example 2: Limit Cycle Verification
• We use a null input and non-deterministic values to previous outputs
• An assert detects a failure if the set of previous states of the outputs repeats
5
−𝟎, 𝟓
-1 0 1 2 3 n
y
0,125
= 0 y(0)
Nokia Internal Use Only
Example 2: Limit Cycle Verification
• We use a null input and non-deterministic values to previous outputs
• An assert detects a failure if the set of previous states of the outputs repeats
5
−𝟎, 𝟓
-1 0 1 2 3 n
y
0,125 -0,0625
= 0 = -0,0625 y(0)
Nokia Internal Use Only
Example 2: Limit Cycle Verification
• We use a null input and non-deterministic values to previous outputs
• An assert detects a failure if the set of previous states of the outputs repeats
5
−𝟎, 𝟓
-1 0 1 2 3 n
y
0,125 -0,0625 0,0625 -0,0625
= 0 = -0,0625 = 0,0625 y(0) y(1)
Nokia Internal Use Only
Example 2: Limit Cycle Verification
• We use a null input and non-deterministic values to previous outputs
• An assert detects a failure if the set of previous states of the outputs repeats
5
−𝟎, 𝟓
-1 0 1 2 3 n
y
0,125 -0,0625 0,0625 -0,0625 -0,0625 0,0625
= 0 = -0,0625 = 0,0625 = -0,0625 y(0) y(1) y(2)
Nokia Internal Use Only
Example 2: Limit Cycle Verification
• We use a null input and non-deterministic values to previous outputs
• An assert detects a failure if the set of previous states of the outputs repeats
5
−𝟎, 𝟓
-1 0 1 2 3 n
y
0,125 -0,0625 0,0625 -0,0625 0,0625 -0,0625 0,0625 -0,0625
= 0 = -0,0625 = 0,0625 = -0,0625 = 0,0625 y(0) y(1) y(2) y(3)
Nokia Internal Use Only
Example 2: Limit Cycle Verification
• We use a null input and non-deterministic values to previous outputs
• An assert detects a failure if the set of previous states of the outputs repeats
5
−𝟎, 𝟓
-1 0 1 2 3 n
y
0,125 -0,0625 0,0625 -0,0625 0,0625 -0,0625 0,0625 -0,0625
= 0 = -0,0625 = 0,0625 = -0,0625 = 0,0625 y(0) y(1) y(2) y(3)
Repetition with zero input. Limit Cycle!
Nokia Internal Use Only
Example 3: Time Constraints Verification
6
Nokia Internal Use Only
Example 3: Time Constraints Verification
• Based on worst case execution time (WCET)
6
Nokia Internal Use Only
Example 3: Time Constraints Verification
• Based on worst case execution time (WCET)
• Example of operation on a code for MSP430:
6
Nokia Internal Use Only
Example 3: Time Constraints Verification
• Based on worst case execution time (WCET)
• Example of operation on a code for MSP430:
6
float iirFilterI() {
float yn = 0;
for (int k = 0; k < M; k++){
yn += *b++ * *x--;
}
for (int k = 1; k < N; k++){
yn -= *a++ * *y--;
}
return yn;
}
Nokia Internal Use Only
Example 3: Time Constraints Verification
• Based on worst case execution time (WCET)
• Example of operation on a code for MSP430:
6
sum += *b++ * *x--;
MOV.W @r9+,r12 5 cycles
MOV.W @r9+,r13 5 cycles
SUB.W #4,r10 5 cycles
MOV.W 4(r10),r14 3 cycles
MOV.W 6(r10),r15 3 cycles
CALL #__fs_mpy 5 cycles
MOV.W r7,r14 1 cycle
MOV.W r8,r15 1 cycle
CALL #__fs_add 5 cycles
MOV.W r12,r7 1 cycle
MOV.W r13,r8 1 cycle
float iirFilterI() {
float yn = 0;
for (int k = 0; k < M; k++){
yn += *b++ * *x--;
}
for (int k = 1; k < N; k++){
yn -= *a++ * *y--;
}
return yn;
}
Nokia Internal Use Only
Example 3: Time Constraints Verification
• Based on worst case execution time (WCET)
• Example of operation on a code for MSP430:
6
sum += *b++ * *x--;
MOV.W @r9+,r12 5 cycles
MOV.W @r9+,r13 5 cycles
SUB.W #4,r10 5 cycles
MOV.W 4(r10),r14 3 cycles
MOV.W 6(r10),r15 3 cycles
CALL #__fs_mpy 5 cycles
MOV.W r7,r14 1 cycle
MOV.W r8,r15 1 cycle
CALL #__fs_add 5 cycles
MOV.W r12,r7 1 cycle
MOV.W r13,r8 1 cycle
float iirFilterI() {
float yn = 0;
for (int k = 0; k < M; k++){
yn += *b++ * *x--;
}
for (int k = 1; k < N; k++){
yn -= *a++ * *y--;
}
return yn;
}
• Number of instructions depends of filter order
• Execution time will depends of plataform and word length
Nokia Internal Use Only
Example 3: Time Constraints Verification
• Based on worst case execution time (WCET)
• Example of operation on a code for MSP430:
6
sum += *b++ * *x--;
MOV.W @r9+,r12 5 cycles
MOV.W @r9+,r13 5 cycles
SUB.W #4,r10 5 cycles
MOV.W 4(r10),r14 3 cycles
MOV.W 6(r10),r15 3 cycles
CALL #__fs_mpy 5 cycles
MOV.W r7,r14 1 cycle
MOV.W r8,r15 1 cycle
CALL #__fs_add 5 cycles
MOV.W r12,r7 1 cycle
MOV.W r13,r8 1 cycle
float iirFilterI() {
float yn = 0;
for (int k = 0; k < M; k++){
yn += *b++ * *x--;
}
for (int k = 1; k < N; k++){
yn -= *a++ * *y--;
}
return yn;
}
Nokia Internal Use Only
Example 3: Time Constraints Verification
• Based on worst case execution time (WCET)
• Example of operation on a code for MSP430:
• The model checker aplies and arbitrary input searching for the negation of
– 𝑙𝑡𝑖𝑚𝑖𝑛𝑔⟺ (𝑁 × 𝑇) ≤ 𝐷
6
sum += *b++ * *x--;
MOV.W @r9+,r12 5 cycles
MOV.W @r9+,r13 5 cycles
SUB.W #4,r10 5 cycles
MOV.W 4(r10),r14 3 cycles
MOV.W 6(r10),r15 3 cycles
CALL #__fs_mpy 5 cycles
MOV.W r7,r14 1 cycle
MOV.W r8,r15 1 cycle
CALL #__fs_add 5 cycles
MOV.W r12,r7 1 cycle
MOV.W r13,r8 1 cycle
float iirFilterI() {
float yn = 0;
for (int k = 0; k < M; k++){
yn += *b++ * *x--;
}
for (int k = 1; k < N; k++){
yn -= *a++ * *y--;
}
return yn;
}
Nokia Internal Use Only
Example 3: Time Constraints Verification
• Based on worst case execution time (WCET)
• Example of operation on a code for MSP430:
• The model checker aplies and arbitrary input searching for the negation of
– 𝑙𝑡𝑖𝑚𝑖𝑛𝑔⟺ (𝑁 × 𝑇) ≤ 𝐷
6
sum += *b++ * *x--;
MOV.W @r9+,r12 5 cycles
MOV.W @r9+,r13 5 cycles
SUB.W #4,r10 5 cycles
MOV.W 4(r10),r14 3 cycles
MOV.W 6(r10),r15 3 cycles
CALL #__fs_mpy 5 cycles
MOV.W r7,r14 1 cycle
MOV.W r8,r15 1 cycle
CALL #__fs_add 5 cycles
MOV.W r12,r7 1 cycle
MOV.W r13,r8 1 cycle
float iirFilterI() {
float yn = 0;
for (int k = 0; k < M; k++){
yn += *b++ * *x--;
}
for (int k = 1; k < N; k++){
yn -= *a++ * *y--;
}
return yn;
}
Number of cycles Cycle time
Deadline
Nokia Internal Use Only
Experimental Results
# Filter N M ∑|hk| Input range Word-
length
Input
size
Failures Verification time (s)
OF LC TC
1 LP-IIR 2 1 2 [-1,1] <2,4> 6 OF, LC 39 4 <1
2 LP-Butterworth-IIR 3 3 1.2 [-1.6,1.6] <2,5> 6 OF 579 634 <1
3 LP-IIR 3 1 4 [-1,1] <3,4> 6 OF, LC 210 29 <1
4 LP-IIR 3 1 1.56 [-1,1] <2,4> 6 - 110 51 <1
5 LP-FIR 1 31 1.93 [-1,1] <2,6> 31 TC TO 98 1
6 HP-ChebyshevI-IIR 3 3 1.33 [-1,1] <2,10> 6 - 853 2058 <1
7 BP-Elliptic-IIR 3 3 1.24 [-1.0,1.0] <2,10> 6 LC 546 474 <1
8 BS-Butterworth-IIR 3 3 1.81 [-1.0,1.0] <2,8> 6 OF 106 1299 <1
9 BP-Elliptic-IIR 5 5 0.91 [-1.1,1.1] <1,8> 10 OF, LC 7 20 <1
10 HP-Butterworth-IIR 5 5 1.58 [-1.27, 1.27] <2,6> 10 LC 2468 1508 <1
11 BP-ChebyshevI-IIR 5 5 1.51 [-1.33, 1.33] <2,6> 10 - TO TO <1
12 HP-Elliptic-IIR 7 7 5.39 [-1,1] <3,13> 14 TC 73 TO <1
7 OF – Overflow, LC – Limit Cycle, TC – Time constraint, TO - Time out
Nokia Internal Use Only
Experimental Results
# Filter N M ∑|hk| Input range Word-
length
Input
size
Failures Verification time (s)
OF LC TC
1 LP-IIR 2 1 2 [-1,1] <2,4> 6 OF, LC 39 4 <1
2 LP-Butterworth-IIR 3 3 1.2 [-1.6,1.6] <2,5> 6 OF 579 634 <1
3 LP-IIR 3 1 4 [-1,1] <3,4> 6 OF, LC 210 29 <1
4 LP-IIR 3 1 1.56 [-1,1] <2,4> 6 - 110 51 <1
5 LP-FIR 1 31 1.93 [-1,1] <2,6> 31 TC TO 98 1
6 HP-ChebyshevI-IIR 3 3 1.33 [-1,1] <2,10> 6 - 853 2058 <1
7 BP-Elliptic-IIR 3 3 1.24 [-1.0,1.0] <2,10> 6 LC 546 474 <1
8 BS-Butterworth-IIR 3 3 1.81 [-1.0,1.0] <2,8> 6 OF 106 1299 <1
9 BP-Elliptic-IIR 5 5 0.91 [-1.1,1.1] <1,8> 10 OF, LC 7 20 <1
10 HP-Butterworth-IIR 5 5 1.58 [-1.27, 1.27] <2,6> 10 LC 2468 1508 <1
11 BP-ChebyshevI-IIR 5 5 1.51 [-1.33, 1.33] <2,6> 10 - TO TO <1
12 HP-Elliptic-IIR 7 7 5.39 [-1,1] <3,13> 14 TC 73 TO <1
7 OF – Overflow, LC – Limit Cycle, TC – Time constraint, TO - Time out
Different types of filters with different
size were verified
Nokia Internal Use Only
Experimental Results
# Filter N M ∑|hk| Input range Word-
length
Input
size
Failures Verification time (s)
OF LC TC
1 LP-IIR 2 1 2 [-1,1] <2,4> 6 OF, LC 39 4 <1
2 LP-Butterworth-IIR 3 3 1.2 [-1.6,1.6] <2,5> 6 OF 579 634 <1
3 LP-IIR 3 1 4 [-1,1] <3,4> 6 OF, LC 210 29 <1
4 LP-IIR 3 1 1.56 [-1,1] <2,4> 6 - 110 51 <1
5 LP-FIR 1 31 1.93 [-1,1] <2,6> 31 TC TO 98 1
6 HP-ChebyshevI-IIR 3 3 1.33 [-1,1] <2,10> 6 - 853 2058 <1
7 BP-Elliptic-IIR 3 3 1.24 [-1.0,1.0] <2,10> 6 LC 546 474 <1
8 BS-Butterworth-IIR 3 3 1.81 [-1.0,1.0] <2,8> 6 OF 106 1299 <1
9 BP-Elliptic-IIR 5 5 0.91 [-1.1,1.1] <1,8> 10 OF, LC 7 20 <1
10 HP-Butterworth-IIR 5 5 1.58 [-1.27, 1.27] <2,6> 10 LC 2468 1508 <1
11 BP-ChebyshevI-IIR 5 5 1.51 [-1.33, 1.33] <2,6> 10 - TO TO <1
12 HP-Elliptic-IIR 7 7 5.39 [-1,1] <3,13> 14 TC 73 TO <1
7 OF – Overflow, LC – Limit Cycle, TC – Time constraint, TO - Time out
Nokia Internal Use Only
Experimental Results
# Filter N M ∑|hk| Input range Word-
length
Input
size
Failures Verification time (s)
OF LC TC
1 LP-IIR 2 1 2 [-1,1] <2,4> 6 OF, LC 39 4 <1
2 LP-Butterworth-IIR 3 3 1.2 [-1.6,1.6] <2,5> 6 OF 579 634 <1
3 LP-IIR 3 1 4 [-1,1] <3,4> 6 OF, LC 210 29 <1
4 LP-IIR 3 1 1.56 [-1,1] <2,4> 6 - 110 51 <1
5 LP-FIR 1 31 1.93 [-1,1] <2,6> 31 TC TO 98 1
6 HP-ChebyshevI-IIR 3 3 1.33 [-1,1] <2,10> 6 - 853 2058 <1
7 BP-Elliptic-IIR 3 3 1.24 [-1.0,1.0] <2,10> 6 LC 546 474 <1
8 BS-Butterworth-IIR 3 3 1.81 [-1.0,1.0] <2,8> 6 OF 106 1299 <1
9 BP-Elliptic-IIR 5 5 0.91 [-1.1,1.1] <1,8> 10 OF, LC 7 20 <1
10 HP-Butterworth-IIR 5 5 1.58 [-1.27, 1.27] <2,6> 10 LC 2468 1508 <1
11 BP-ChebyshevI-IIR 5 5 1.51 [-1.33, 1.33] <2,6> 10 - TO TO <1
12 HP-Elliptic-IIR 7 7 5.39 [-1,1] <3,13> 14 TC 73 TO <1
7 OF – Overflow, LC – Limit Cycle, TC – Time constraint, TO - Time out
Faster verification of low order filters and with smaller word-length
Nokia Internal Use Only
Experimental Results
# Filter N M ∑|hk| Input range Word-
length
Input
size
Failures Verification time (s)
OF LC TC
1 LP-IIR 2 1 2 [-1,1] <2,4> 6 OF, LC 39 4 <1
2 LP-Butterworth-IIR 3 3 1.2 [-1.6,1.6] <2,5> 6 OF 579 634 <1
3 LP-IIR 3 1 4 [-1,1] <3,4> 6 OF, LC 210 29 <1
4 LP-IIR 3 1 1.56 [-1,1] <2,4> 6 - 110 51 <1
5 LP-FIR 1 31 1.93 [-1,1] <2,6> 31 TC TO 98 1
6 HP-ChebyshevI-IIR 3 3 1.33 [-1,1] <2,10> 6 - 853 2058 <1
7 BP-Elliptic-IIR 3 3 1.24 [-1.0,1.0] <2,10> 6 LC 546 474 <1
8 BS-Butterworth-IIR 3 3 1.81 [-1.0,1.0] <2,8> 6 OF 106 1299 <1
9 BP-Elliptic-IIR 5 5 0.91 [-1.1,1.1] <1,8> 10 OF, LC 7 20 <1
10 HP-Butterworth-IIR 5 5 1.58 [-1.27, 1.27] <2,6> 10 LC 2468 1508 <1
11 BP-ChebyshevI-IIR 5 5 1.51 [-1.33, 1.33] <2,6> 10 - TO TO <1
12 HP-Elliptic-IIR 7 7 5.39 [-1,1] <3,13> 14 TC 73 TO <1
7 OF – Overflow, LC – Limit Cycle, TC – Time constraint, TO - Time out
Nokia Internal Use Only
Experimental Results
# Filter N M ∑|hk| Input range Word-
length
Input
size
Failures Verification time (s)
OF LC TC
1 LP-IIR 2 1 2 [-1,1] <2,4> 6 OF, LC 39 4 <1
2 LP-Butterworth-IIR 3 3 1.2 [-1.6,1.6] <2,5> 6 OF 579 634 <1
3 LP-IIR 3 1 4 [-1,1] <3,4> 6 OF, LC 210 29 <1
4 LP-IIR 3 1 1.56 [-1,1] <2,4> 6 - 110 51 <1
5 LP-FIR 1 31 1.93 [-1,1] <2,6> 31 TC TO 98 1
6 HP-ChebyshevI-IIR 3 3 1.33 [-1,1] <2,10> 6 - 853 2058 <1
7 BP-Elliptic-IIR 3 3 1.24 [-1.0,1.0] <2,10> 6 LC 546 474 <1
8 BS-Butterworth-IIR 3 3 1.81 [-1.0,1.0] <2,8> 6 OF 106 1299 <1
9 BP-Elliptic-IIR 5 5 0.91 [-1.1,1.1] <1,8> 10 OF, LC 7 20 <1
10 HP-Butterworth-IIR 5 5 1.58 [-1.27, 1.27] <2,6> 10 LC 2468 1508 <1
11 BP-ChebyshevI-IIR 5 5 1.51 [-1.33, 1.33] <2,6> 10 - TO TO <1
12 HP-Elliptic-IIR 7 7 5.39 [-1,1] <3,13> 14 TC 73 TO <1
7 OF – Overflow, LC – Limit Cycle, TC – Time constraint, TO - Time out
Fast verification of time constraints
(sequential code)
Nokia Internal Use Only
Experimental Results
# Filter N M ∑|hk| Input range Word-
length
Input
size
Failures Verification time (s)
OF LC TC
1 LP-IIR 2 1 2 [-1,1] <2,4> 6 OF, LC 39 4 <1
2 LP-Butterworth-IIR 3 3 1.2 [-1.6,1.6] <2,5> 6 OF 579 634 <1
3 LP-IIR 3 1 4 [-1,1] <3,4> 6 OF, LC 210 29 <1
4 LP-IIR 3 1 1.56 [-1,1] <2,4> 6 - 110 51 <1
5 LP-FIR 1 31 1.93 [-1,1] <2,6> 31 TC TO 98 1
6 HP-ChebyshevI-IIR 3 3 1.33 [-1,1] <2,10> 6 - 853 2058 <1
7 BP-Elliptic-IIR 3 3 1.24 [-1.0,1.0] <2,10> 6 LC 546 474 <1
8 BS-Butterworth-IIR 3 3 1.81 [-1.0,1.0] <2,8> 6 OF 106 1299 <1
9 BP-Elliptic-IIR 5 5 0.91 [-1.1,1.1] <1,8> 10 OF, LC 7 20 <1
10 HP-Butterworth-IIR 5 5 1.58 [-1.27, 1.27] <2,6> 10 LC 2468 1508 <1
11 BP-ChebyshevI-IIR 5 5 1.51 [-1.33, 1.33] <2,6> 10 - TO TO <1
12 HP-Elliptic-IIR 7 7 5.39 [-1,1] <3,13> 14 TC 73 TO <1
7 OF – Overflow, LC – Limit Cycle, TC – Time constraint, TO - Time out
Nokia Internal Use Only
Experimental Results
# Filter N M ∑|hk| Input range Word-
length
Input
size
Failures Verification time (s)
OF LC TC
1 LP-IIR 2 1 2 [-1,1] <2,4> 6 OF, LC 39 4 <1
2 LP-Butterworth-IIR 3 3 1.2 [-1.6,1.6] <2,5> 6 OF 579 634 <1
3 LP-IIR 3 1 4 [-1,1] <3,4> 6 OF, LC 210 29 <1
4 LP-IIR 3 1 1.56 [-1,1] <2,4> 6 - 110 51 <1
5 LP-FIR 1 31 1.93 [-1,1] <2,6> 31 TC TO 98 1
6 HP-ChebyshevI-IIR 3 3 1.33 [-1,1] <2,10> 6 - 853 2058 <1
7 BP-Elliptic-IIR 3 3 1.24 [-1.0,1.0] <2,10> 6 LC 546 474 <1
8 BS-Butterworth-IIR 3 3 1.81 [-1.0,1.0] <2,8> 6 OF 106 1299 <1
9 BP-Elliptic-IIR 5 5 0.91 [-1.1,1.1] <1,8> 10 OF, LC 7 20 <1
10 HP-Butterworth-IIR 5 5 1.58 [-1.27, 1.27] <2,6> 10 LC 2468 1508 <1
11 BP-ChebyshevI-IIR 5 5 1.51 [-1.33, 1.33] <2,6> 10 - TO TO <1
12 HP-Elliptic-IIR 7 7 5.39 [-1,1] <3,13> 14 TC 73 TO <1
7 OF – Overflow, LC – Limit Cycle, TC – Time constraint, TO - Time out
Time constraint failure for high order filters
Nokia Internal Use Only
Experimental Results
# Filter N M ∑|hk| Input range Word-
length
Input
size
Failures Verification time (s)
OF LC TC
1 LP-IIR 2 1 2 [-1,1] <2,4> 6 OF, LC 39 4 <1
2 LP-Butterworth-IIR 3 3 1.2 [-1.6,1.6] <2,5> 6 OF 579 634 <1
3 LP-IIR 3 1 4 [-1,1] <3,4> 6 OF, LC 210 29 <1
4 LP-IIR 3 1 1.56 [-1,1] <2,4> 6 - 110 51 <1
5 LP-FIR 1 31 1.93 [-1,1] <2,6> 31 TC TO 98 1
6 HP-ChebyshevI-IIR 3 3 1.33 [-1,1] <2,10> 6 - 853 2058 <1
7 BP-Elliptic-IIR 3 3 1.24 [-1.0,1.0] <2,10> 6 LC 546 474 <1
8 BS-Butterworth-IIR 3 3 1.81 [-1.0,1.0] <2,8> 6 OF 106 1299 <1
9 BP-Elliptic-IIR 5 5 0.91 [-1.1,1.1] <1,8> 10 OF, LC 7 20 <1
10 HP-Butterworth-IIR 5 5 1.58 [-1.27, 1.27] <2,6> 10 LC 2468 1508 <1
11 BP-ChebyshevI-IIR 5 5 1.51 [-1.33, 1.33] <2,6> 10 - TO TO <1
12 HP-Elliptic-IIR 7 7 5.39 [-1,1] <3,13> 14 TC 73 TO <1
7 OF – Overflow, LC – Limit Cycle, TC – Time constraint, TO - Time out
Nokia Internal Use Only
Experimental Results
# Filter N M ∑|hk| Input range Word-
length
Input
size
Failures Verification time (s)
OF LC TC
1 LP-IIR 2 1 2 [-1,1] <2,4> 6 OF, LC 39 4 <1
2 LP-Butterworth-IIR 3 3 1.2 [-1.6,1.6] <2,5> 6 OF 579 634 <1
3 LP-IIR 3 1 4 [-1,1] <3,4> 6 OF, LC 210 29 <1
4 LP-IIR 3 1 1.56 [-1,1] <2,4> 6 - 110 51 <1
5 LP-FIR 1 31 1.93 [-1,1] <2,6> 31 TC TO 98 1
6 HP-ChebyshevI-IIR 3 3 1.33 [-1,1] <2,10> 6 - 853 2058 <1
7 BP-Elliptic-IIR 3 3 1.24 [-1.0,1.0] <2,10> 6 LC 546 474 <1
8 BS-Butterworth-IIR 3 3 1.81 [-1.0,1.0] <2,8> 6 OF 106 1299 <1
9 BP-Elliptic-IIR 5 5 0.91 [-1.1,1.1] <1,8> 10 OF, LC 7 20 <1
10 HP-Butterworth-IIR 5 5 1.58 [-1.27, 1.27] <2,6> 10 LC 2468 1508 <1
11 BP-ChebyshevI-IIR 5 5 1.51 [-1.33, 1.33] <2,6> 10 - TO TO <1
12 HP-Elliptic-IIR 7 7 5.39 [-1,1] <3,13> 14 TC 73 TO <1
7 OF – Overflow, LC – Limit Cycle, TC – Time constraint, TO - Time out
Overflow detected even for conservative cases
Nokia Internal Use Only
Experimental Results
# Filter N M ∑|hk| Input range Word-
length
Input
size
Failures Verification time (s)
OF LC TC
1 LP-IIR 2 1 2 [-1,1] <2,4> 6 OF, LC 39 4 <1
2 LP-Butterworth-IIR 3 3 1.2 [-1.6,1.6] <2,5> 6 OF 579 634 <1
3 LP-IIR 3 1 4 [-1,1] <3,4> 6 OF, LC 210 29 <1
4 LP-IIR 3 1 1.56 [-1,1] <2,4> 6 - 110 51 <1
5 LP-FIR 1 31 1.93 [-1,1] <2,6> 31 TC TO 98 1
6 HP-ChebyshevI-IIR 3 3 1.33 [-1,1] <2,10> 6 - 853 2058 <1
7 BP-Elliptic-IIR 3 3 1.24 [-1.0,1.0] <2,10> 6 LC 546 474 <1
8 BS-Butterworth-IIR 3 3 1.81 [-1.0,1.0] <2,8> 6 OF 106 1299 <1
9 BP-Elliptic-IIR 5 5 0.91 [-1.1,1.1] <1,8> 10 OF, LC 7 20 <1
10 HP-Butterworth-IIR 5 5 1.58 [-1.27, 1.27] <2,6> 10 LC 2468 1508 <1
11 BP-ChebyshevI-IIR 5 5 1.51 [-1.33, 1.33] <2,6> 10 - TO TO <1
12 HP-Elliptic-IIR 7 7 5.39 [-1,1] <3,13> 14 TC 73 TO <1
7 OF – Overflow, LC – Limit Cycle, TC – Time constraint, TO - Time out
Nokia Internal Use Only
Experimental Results
# Filter N M ∑|hk| Input range Word-
length
Input
size
Failures Verification time (s)
OF LC TC
1 LP-IIR 2 1 2 [-1,1] <2,4> 6 OF, LC 39 4 <1
2 LP-Butterworth-IIR 3 3 1.2 [-1.6,1.6] <2,5> 6 OF 579 634 <1
3 LP-IIR 3 1 4 [-1,1] <3,4> 6 OF, LC 210 29 <1
4 LP-IIR 3 1 1.56 [-1,1] <2,4> 6 - 110 51 <1
5 LP-FIR 1 31 1.93 [-1,1] <2,6> 31 TC TO 98 1
6 HP-ChebyshevI-IIR 3 3 1.33 [-1,1] <2,10> 6 - 853 2058 <1
7 BP-Elliptic-IIR 3 3 1.24 [-1.0,1.0] <2,10> 6 LC 546 474 <1
8 BS-Butterworth-IIR 3 3 1.81 [-1.0,1.0] <2,8> 6 OF 106 1299 <1
9 BP-Elliptic-IIR 5 5 0.91 [-1.1,1.1] <1,8> 10 OF, LC 7 20 <1
10 HP-Butterworth-IIR 5 5 1.58 [-1.27, 1.27] <2,6> 10 LC 2468 1508 <1
11 BP-ChebyshevI-IIR 5 5 1.51 [-1.33, 1.33] <2,6> 10 - TO TO <1
12 HP-Elliptic-IIR 7 7 5.39 [-1,1] <3,13> 14 TC 73 TO <1
7 OF – Overflow, LC – Limit Cycle, TC – Time constraint, TO - Time out
Higher verification time for high order filters
Nokia Internal Use Only
Experimental Results
# Filter N M ∑|hk| Input range Word-
length
Input
size
Failures Verification time (s)
OF LC TC
1 LP-IIR 2 1 2 [-1,1] <2,4> 6 OF, LC 39 4 <1
2 LP-Butterworth-IIR 3 3 1.2 [-1.6,1.6] <2,5> 6 OF 579 634 <1
3 LP-IIR 3 1 4 [-1,1] <3,4> 6 OF, LC 210 29 <1
4 LP-IIR 3 1 1.56 [-1,1] <2,4> 6 - 110 51 <1
5 LP-FIR 1 31 1.93 [-1,1] <2,6> 31 TC TO 98 1
6 HP-ChebyshevI-IIR 3 3 1.33 [-1,1] <2,10> 6 - 853 2058 <1
7 BP-Elliptic-IIR 3 3 1.24 [-1.0,1.0] <2,10> 6 LC 546 474 <1
8 BS-Butterworth-IIR 3 3 1.81 [-1.0,1.0] <2,8> 6 OF 106 1299 <1
9 BP-Elliptic-IIR 5 5 0.91 [-1.1,1.1] <1,8> 10 OF, LC 7 20 <1
10 HP-Butterworth-IIR 5 5 1.58 [-1.27, 1.27] <2,6> 10 LC 2468 1508 <1
11 BP-ChebyshevI-IIR 5 5 1.51 [-1.33, 1.33] <2,6> 10 - TO TO <1
12 HP-Elliptic-IIR 7 7 5.39 [-1,1] <3,13> 14 TC 73 TO <1
7 OF – Overflow, LC – Limit Cycle, TC – Time constraint, TO - Time out