rename fft remap shape to match spec
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Tue, 6 Jul 2021 14:53:12 +0000 (15:53 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Thu, 8 Jul 2021 14:18:03 +0000 (15:18 +0100)
https://libre-soc.org/openpower/sv/remap/

openpower/sv/remap_fft_yield.py
openpower/sv/remapfft.py

index 0106c8f76e1d7b2a40bef6e01998543447afa996..3e95d0a02cdc32c000d37fe22122715ea6790ce2 100644 (file)
@@ -24,7 +24,7 @@
 # the indices are generated by using natural-looking nested loops
 def iterate_indices(SVSHAPE):
     # get indices to iterate over, in the required order
-    n = SVSHAPE.lims[SVSHAPE.order[0]]
+    n = SVSHAPE.lims[0]
     # createing lists of indices to iterate over in each dimension
     # has to be done dynamically, because it depends on the size
     # first, the size-based loop (which can be done statically)
@@ -34,7 +34,7 @@ def iterate_indices(SVSHAPE):
         x_r.append(size)
         size *= 2
     # invert order if requested
-    if SVSHAPE.invxyz[SVSHAPE.order[0]]: x_r.reverse()
+    if SVSHAPE.invxyz[0]: x_r.reverse()
 
     if len(x_r) == 0:
         return
@@ -50,7 +50,7 @@ def iterate_indices(SVSHAPE):
             for i in range(0, n, size):
                 y_r.append(i)
             # invert if requested
-            if SVSHAPE.invxyz[SVSHAPE.order[1]]: y_r.reverse()
+            if SVSHAPE.invxyz[1]: y_r.reverse()
             for i in y_r:       # loop over 2nd order dimension
                 k_r = []
                 j_r = []
@@ -60,19 +60,19 @@ def iterate_indices(SVSHAPE):
                     j_r.append(j)
                     k += tablestep
                 # invert if requested
-                if SVSHAPE.invxyz[SVSHAPE.order[2]]: k_r.reverse()
-                if SVSHAPE.invxyz[SVSHAPE.order[2]]: j_r.reverse()
+                if SVSHAPE.invxyz[2]: k_r.reverse()
+                if SVSHAPE.invxyz[2]: j_r.reverse()
                 for j, k in zip(j_r, k_r):   # loop over 1st order dimension
                     # skip the first entries up to offset
                     if skip < SVSHAPE.offset:
                         skip += 1
                         continue
                     # now depending on MODE return the index
-                    if SVSHAPE.mode == 0b00:
+                    if SVSHAPE.skip == 0b00:
                         result = j              # for vec[j]
-                    elif SVSHAPE.mode == 0b01:
+                    elif SVSHAPE.skip == 0b01:
                         result = j + halfsize   # for vec[j+halfsize]
-                    elif SVSHAPE.mode == 0b10:
+                    elif SVSHAPE.skip == 0b10:
                         result = k              # for exptable[k]
 
                     yield result
index b79132ca1c181a32a848e398372f2ac7b19eb5aa..43590f2274fc43dcd8d00cfa5a5cb5a5cf5d42bc 100644 (file)
@@ -97,15 +97,16 @@ def transform_radix2(vec, inverse, generators_mode):
         SVSHAPE0 = SVSHAPE()
         SVSHAPE0.lims = [n, 0, 0]
         SVSHAPE0.order = [0,1,2]
-        SVSHAPE0.mode = 0b00
+        SVSHAPE0.mode = 0b01      # FFT mode
+        SVSHAPE0.skip = 0b00
         SVSHAPE0.offset = 0
         SVSHAPE0.invxyz = [0,0,0] # inversion if desired
         # j+halfstep schedule
         SVSHAPE1 = deepcopy(SVSHAPE0)
-        SVSHAPE1.mode = 0b01
+        SVSHAPE1.skip = 0b01
         # k schedule
         SVSHAPE2 = deepcopy(SVSHAPE0)
-        SVSHAPE2.mode = 0b10
+        SVSHAPE2.skip = 0b10
 
         # enumerate over the iterator function, getting 3 *different* indices
         for idx, (jl, jh, k) in enumerate(zip(iterate_indices(SVSHAPE0),