From 634f0e99e9e6fd9fe0c0caa714100aec99b28bcb Mon Sep 17 00:00:00 2001
From: Erik Kooistra <kooistra@astron.nl>
Date: Tue, 18 Oct 2016 10:45:15 +0000
Subject: [PATCH] Added more checks in fft_r2_parameter_asserts().

---
 libraries/dsp/fft/src/vhdl/fft_pkg.vhd | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/libraries/dsp/fft/src/vhdl/fft_pkg.vhd b/libraries/dsp/fft/src/vhdl/fft_pkg.vhd
index 68276873b8..987eeadf40 100644
--- a/libraries/dsp/fft/src/vhdl/fft_pkg.vhd
+++ b/libraries/dsp/fft/src/vhdl/fft_pkg.vhd
@@ -47,7 +47,7 @@ package fft_pkg is
   constant c_fft   : t_fft := (true, false, true, 0, 4, 0, 1024, 8, 14, 0, c_dsp_mult_w, 2, true, 56, 2);
   
   -- Check consistancy of the FFT parameters
-  function fft_r2_parameter_asserts(g_fft : t_fft) return boolean;  -- the return value is void
+  function fft_r2_parameter_asserts(g_fft : t_fft) return boolean;  -- the return value is void, because always true or abort due to failure
   
   -- Definitions for fft slv array (an array can not have unconstraint elements, so choose sufficiently wide 32 bit slv elements)
   subtype  t_fft_slv_arr is t_slv_32_arr;    -- use subtype to ease interfacing to existing types and to have central definition for rtwo components
@@ -68,6 +68,16 @@ package body fft_pkg is
   begin
     -- nof_points
     assert g_fft.nof_points=2**ceil_log2(g_fft.nof_points) report "fft_r2: nof_points must be a power of 2" severity failure;
+    -- wb_factor
+    assert g_fft.wb_factor=2**ceil_log2(g_fft.wb_factor) report "fft_r2: wb_factor must be a power of 2" severity failure;
+    -- nof_chan
+    if g_fft.nof_chan>0 then
+      assert g_fft.wb_factor=1 report "fft_r2: nof_chan > 0 is only supported for wb_factor = 1" severity failure;
+    end if;
+    -- use_fft_shift
+    if g_fft.use_fft_shift=true then
+      assert g_fft.wb_factor=1 report "fft_r2 : use_fft_shift for complex input is only supported for wb_factor=1" severity failure;
+    end if;
     -- use_reorder
     if g_fft.use_reorder=false then
       assert g_fft.use_separate=false  report "fft_r2 : without use_reorder there cannot be use_separate for two real inputs" severity failure;
@@ -75,7 +85,7 @@ package body fft_pkg is
     end if;
     -- use_separate
     if g_fft.use_separate=true then
-      assert g_fft.use_fft_shift=false report "fft_r2 : with use_separate there cannot be use_fft_shift for real input"  severity failure;
+      assert g_fft.use_fft_shift=false report "fft_r2 : with use_separate there cannot be use_fft_shift for two real inputs"  severity failure;
     end if;
     return true;
   end;    
-- 
GitLab