add code comments
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Sun, 28 Jul 2019 12:32:59 +0000 (13:32 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Sun, 28 Jul 2019 12:32:59 +0000 (13:32 +0100)
src/ieee754/fclass/fclass.py
src/ieee754/fclass/test/test_fclass_pipe.py

index e1b034e6eb1ff7203642a70189cc071b05ad4b9f..f50412c40fe5678f23a312fe676f3f1ed8236c07 100644 (file)
@@ -54,6 +54,9 @@ class FPClassMod(Elaboratable):
         m.d.comb += is_sig_nan.eq(a1.exp_128 & (msbzero) & (~a1.m_zero))
         subnormal = a1.exp_n127
 
+        # this is hardware-optimal but very hard to understand.
+        # see unit test test_fclass_pipe.py fclass() for what's
+        # going on.
         m.d.comb += self.o.z.eq(Cat(
                     a1.s   & a1.is_inf,                 # | −inf.
                     a1.s   & finite_nzero & ~subnormal, # | -normal number.
index b96d17ffa8bd6f60002ce412cce2566f9a2a6eaf..30fcf4e817791f3902a0dd91caf708ebb2d8936f 100644 (file)
@@ -10,6 +10,10 @@ from sfpy import Float64, Float32, Float16
 
 def fclass(wid, x):
     """ analyses the FP number and returns a RISC-V "FCLASS" unary bitfield
+
+        this is easy to understand however it has redundant checks (which
+        don't matter because performance of *testing* is not hardware-critical)
+        see FPClassMod for a hardware-optimal (hard-to-read) version
     """
     x = x.bits
     fmt = FPFormat.standard(wid)