ieee754fpu.git
4 years agoRename partition_combiner to eq_combiner
Michael Nolan [Mon, 3 Feb 2020 17:13:20 +0000 (12:13 -0500)]
Rename partition_combiner to eq_combiner

4 years agoAdd an alternative partitioned equals combiner module
Michael Nolan [Mon, 3 Feb 2020 15:41:00 +0000 (10:41 -0500)]
Add an alternative partitioned equals combiner module

4 years agoadd first untested ge.py for partitioned signnal
Luke Kenneth Casson Leighton [Mon, 3 Feb 2020 11:51:51 +0000 (11:51 +0000)]
add first untested ge.py for partitioned signnal

4 years agoHandle -0 and +0 equals and <
Michael Nolan [Sun, 2 Feb 2020 19:41:56 +0000 (14:41 -0500)]
Handle -0 and +0 equals and <

4 years agoAdd test case for NaN and -0 handling to fpmax
Michael Nolan [Sun, 2 Feb 2020 18:37:10 +0000 (13:37 -0500)]
Add test case for NaN and -0 handling to fpmax

4 years agoReplace If and Switch statements with muxes in fpcmp.py
Michael Nolan [Sun, 2 Feb 2020 17:47:50 +0000 (12:47 -0500)]
Replace If and Switch statements with muxes in fpcmp.py

4 years agoAdd formal proof for FLT and FLE for FPCMP
Michael Nolan [Sun, 2 Feb 2020 17:31:17 +0000 (12:31 -0500)]
Add formal proof for FLT and FLE for FPCMP

4 years agoAdd FLT and FLE functionality to FPCMP
Michael Nolan [Sun, 2 Feb 2020 16:59:20 +0000 (11:59 -0500)]
Add FLT and FLE functionality to FPCMP

4 years agoHandle NaNs for FPCMP
Michael Nolan [Sun, 2 Feb 2020 16:42:17 +0000 (11:42 -0500)]
Handle NaNs for FPCMP

4 years agoAdd feq functionality to fpcmp
Michael Nolan [Sun, 2 Feb 2020 16:29:48 +0000 (11:29 -0500)]
Add feq functionality to fpcmp

4 years agoBegin adding formal proof for fpcmp
Michael Nolan [Sun, 2 Feb 2020 16:29:20 +0000 (11:29 -0500)]
Begin adding formal proof for fpcmp

4 years agoBegin adding FPCMP module (FEQ, FLT, FLE)
Michael Nolan [Sun, 2 Feb 2020 16:21:01 +0000 (11:21 -0500)]
Begin adding FPCMP module (FEQ, FLT, FLE)

4 years agoFix nmigen "domain" error when trying to run unit tests
Michael Nolan [Fri, 31 Jan 2020 21:54:25 +0000 (16:54 -0500)]
Fix nmigen "domain" error when trying to run unit tests

When I try to run any unit test with nmigen c42c3a0, I get the
following error:

Traceback (most recent call last):
  File "/usr/lib/python3.8/runpy.py", line 193, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/lib/python3.8/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "/home/mnolan/git/ieee754fpu/src/ieee754/fpmul/test/test_fpmul_pipe.py", line 24, in <module>
    test_pipe_fp16()
  File "/home/mnolan/git/ieee754fpu/src/ieee754/fpmul/test/test_fpmul_pipe.py", line 12, in test_pipe_fp16
    runfp(dut, 16, "test_fpmul_pipe_fp16", Float16, mul, n_vals=50)
  File "/home/mnolan/git/ieee754fpu/src/ieee754/fpcommon/test/fpmux.py", line 316, in runfp
    run_simulation(dut, fns, vcd_name="%s.vcd" % name)
  File "/home/mnolan/git/nmigen/nmigen/compat/sim/__init__.py", line 22, in run_simulation
    fragment.domains += ClockDomain("sync")
AttributeError: 'FPMULMuxInOut' object has no attribute 'domains'

This seems to fix this error by giving the functions in the testbench
a default clock domain, rather than leaving it up to nmigen to figure
out.

4 years agotidyup
Luke Kenneth Casson Leighton [Thu, 30 Jan 2020 18:52:57 +0000 (18:52 +0000)]
tidyup

4 years agotidy up comments
Luke Kenneth Casson Leighton [Thu, 30 Jan 2020 18:40:13 +0000 (18:40 +0000)]
tidy up comments

4 years agoworking partitioned eqs function
Luke Kenneth Casson Leighton [Thu, 30 Jan 2020 18:24:27 +0000 (18:24 +0000)]
working partitioned eqs function

4 years agowhoops overwrote input variable
Luke Kenneth Casson Leighton [Thu, 30 Jan 2020 16:04:53 +0000 (16:04 +0000)]
whoops overwrote input variable

4 years agoadd comments
Luke Kenneth Casson Leighton [Thu, 30 Jan 2020 13:57:46 +0000 (13:57 +0000)]
add comments

4 years agoexperimental eq (non-optimal)
Luke Kenneth Casson Leighton [Thu, 30 Jan 2020 13:49:22 +0000 (13:49 +0000)]
experimental eq (non-optimal)

4 years agoadd "as_sig" function to PartitionPoints to get the mask as a straight sequence
Luke Kenneth Casson Leighton [Thu, 30 Jan 2020 13:48:58 +0000 (13:48 +0000)]
add "as_sig" function to PartitionPoints to get the mask as a straight sequence

4 years agoUse nmigen's built in formal runner instead of mine
Michael Nolan [Tue, 28 Jan 2020 23:19:19 +0000 (18:19 -0500)]
Use nmigen's built in formal runner instead of mine

4 years agoFix handling of the .sby file directory when running in the current dir
Michael Nolan [Tue, 28 Jan 2020 22:05:25 +0000 (17:05 -0500)]
Fix handling of the .sby file directory when running in the current dir

4 years agoUse anyconst for the inputs of the dut in FMax formal proof
Michael Nolan [Tue, 28 Jan 2020 21:58:58 +0000 (16:58 -0500)]
Use anyconst for the inputs of the dut in FMax formal proof

4 years agoline-up, whitespace
Luke Kenneth Casson Leighton [Tue, 28 Jan 2020 21:32:40 +0000 (21:32 +0000)]
line-up, whitespace

4 years agoread proof file from any location
Luke Kenneth Casson Leighton [Tue, 28 Jan 2020 21:27:58 +0000 (21:27 +0000)]
read proof file from any location

4 years agoremove usage of m.If() in fpmax and replace with Mux
Michael Nolan [Tue, 28 Jan 2020 20:58:12 +0000 (15:58 -0500)]
remove usage of m.If() in fpmax and replace with Mux

4 years agoFlesh out the formal proof for fmax
Michael Nolan [Tue, 28 Jan 2020 17:38:35 +0000 (12:38 -0500)]
Flesh out the formal proof for fmax

4 years agoUpdate gitignore in formal directories to ignore proof folders
Michael Nolan [Tue, 28 Jan 2020 16:56:34 +0000 (11:56 -0500)]
Update gitignore in formal directories to ignore proof folders

4 years agoAdd rudimentary proof to fpmax
Michael Nolan [Tue, 28 Jan 2020 16:43:21 +0000 (11:43 -0500)]
Add rudimentary proof to fpmax

4 years agoAdd fpmin handling to fpmax module
Michael Nolan [Tue, 28 Jan 2020 16:42:58 +0000 (11:42 -0500)]
Add fpmin handling to fpmax module

4 years agoAdd FPMAX module
Michael Nolan [Tue, 28 Jan 2020 16:32:40 +0000 (11:32 -0500)]
Add FPMAX module

4 years agoallow fsgnj proof to be run from any location
Luke Kenneth Casson Leighton [Tue, 28 Jan 2020 19:34:45 +0000 (19:34 +0000)]
allow fsgnj proof to be run from any location

4 years agoFSGNJ: expandd formal proof to 16 and 64 bits
Michael Nolan [Tue, 28 Jan 2020 00:27:12 +0000 (19:27 -0500)]
FSGNJ: expandd formal proof to 16 and 64 bits

4 years agoFSGNJ: Convert proof to use FPNumDecode
Michael Nolan [Tue, 28 Jan 2020 00:23:12 +0000 (19:23 -0500)]
FSGNJ: Convert proof to use FPNumDecode

This uses FPNumDecode in the formal proof of the FSGNJPipeMod to
ensure that the bit indexing method is correct by going about the
proof in a different way

4 years agoAdd formal proof for FSGNJPipeMod module
Michael Nolan [Tue, 28 Jan 2020 00:01:41 +0000 (19:01 -0500)]
Add formal proof for FSGNJPipeMod module

4 years agoremove unneeded comment
Luke Kenneth Casson Leighton [Mon, 27 Jan 2020 19:47:16 +0000 (19:47 +0000)]
remove unneeded comment

4 years agoFSGNJ: Fix typo in abs
Michael Nolan [Mon, 27 Jan 2020 17:33:27 +0000 (12:33 -0500)]
FSGNJ: Fix typo in abs

4 years agoFSGNJ: Remove usage of FPNumDecode
Michael Nolan [Mon, 27 Jan 2020 17:11:24 +0000 (12:11 -0500)]
FSGNJ: Remove usage of FPNumDecode

FPNumDecode was introducing extra logic to subtract the floating point bias
then immediately re-add it when decoding/encoding operand a. This is
unneeded since this module doesn't modify the exponent or mantissa

4 years agoadd comments, remove one of the Muxes
Luke Kenneth Casson Leighton [Mon, 27 Jan 2020 15:54:26 +0000 (15:54 +0000)]
add comments, remove one of the Muxes

4 years agoreduce linelength <80chars
Luke Kenneth Casson Leighton [Mon, 27 Jan 2020 15:46:46 +0000 (15:46 +0000)]
reduce linelength <80chars

4 years agoAdd more/better comments to fsignj.py
Michael Nolan [Mon, 27 Jan 2020 14:51:37 +0000 (09:51 -0500)]
Add more/better comments to fsignj.py

4 years agoFSGNJ: Replace use of Switch() with explicit muxes
Michael Nolan [Mon, 27 Jan 2020 14:34:40 +0000 (09:34 -0500)]
FSGNJ: Replace use of Switch() with explicit muxes

From http://bugs.libre-riscv.org/show_bug.cgi?id=120

"If(), Switch() and friends are fine for modules that are strictly
scalar, but will not work if the module is converted to SIMD."

4 years agoFSGNJ: Use Floating point decode module instead of raw bits
Michael Nolan [Mon, 27 Jan 2020 14:29:52 +0000 (09:29 -0500)]
FSGNJ: Use Floating point decode module instead of raw bits

4 years agoMove patches in README to separate files
Michael Nolan [Mon, 27 Jan 2020 13:29:07 +0000 (08:29 -0500)]
Move patches in README to separate files

This is to facilitate writing better instructions on how to build sfpy
on the wiki

4 years agoadd (untested) partitioned xor/or/and operators
Luke Kenneth Casson Leighton [Mon, 27 Jan 2020 13:26:21 +0000 (13:26 +0000)]
add (untested) partitioned xor/or/and operators
these all work regardless of partitioning

4 years agoadd copyright notices
Luke Kenneth Casson Leighton [Mon, 27 Jan 2020 12:24:05 +0000 (12:24 +0000)]
add copyright notices

4 years agoreverse indices
Luke Kenneth Casson Leighton [Mon, 27 Jan 2020 11:27:13 +0000 (11:27 +0000)]
reverse indices

4 years agoExpand FSGNJ module to 16 and 64 bit floats
Michael Nolan [Mon, 27 Jan 2020 02:11:23 +0000 (21:11 -0500)]
Expand FSGNJ module to 16 and 64 bit floats

This modifies fsignj.py to be compliant with other Float widths
besides 32 bit. It also modifies the unit tests to include tests for
16 and 64 bit floats

4 years agoPep8 cleanup of FSGNJ module
Michael Nolan [Mon, 27 Jan 2020 02:10:31 +0000 (21:10 -0500)]
Pep8 cleanup of FSGNJ module

4 years agoFSGNJ working now in all three modes
Michael Nolan [Sun, 26 Jan 2020 20:59:15 +0000 (15:59 -0500)]
FSGNJ working now in all three modes

This adds the functionality of the FSIGNJ RISCV instruction, namely:

When the opcode is 0x00 - it combines the sign bit of operand B with
the rest of the value in operand A
When the opcode is 0x01 - it combines the inverted sign bit of operand
B with the rest of the value in operand A
When the opcode is 0x02 - it combines the sign bit composed of the
exclusive OR of the sign bits of A and B with the rest of the value in
operand A

This also modifies the unit test for the module to test each of these
behaviors for 32 bit floats

4 years agoAdd basic test for fsignj pipe
Michael Nolan [Sun, 26 Jan 2020 20:37:16 +0000 (15:37 -0500)]
Add basic test for fsignj pipe

This adds a bare bones unit test for the fsignj module, and fixes the
errors generated when trying to elaborate the module in the unit test

4 years agoAdd FSGNJ Pipeline stage and overall FSGNJ pipeline
Michael Nolan [Sun, 26 Jan 2020 20:08:36 +0000 (15:08 -0500)]
Add FSGNJ Pipeline stage and overall FSGNJ pipeline

My goal here was to create a very bare bones pipeline stage for the
purposes of implementing the FSGNJ functionality later. This code
should be able to at least be imported and the FSNJMuxInOut class
constructed without errors.

4 years agotrying to get recursive output working from partitioned eq
Luke Kenneth Casson Leighton [Fri, 24 Jan 2020 16:51:51 +0000 (16:51 +0000)]
trying to get recursive output working from partitioned eq

4 years agofound bug in eq partition assignment
Luke Kenneth Casson Leighton [Fri, 24 Jan 2020 15:11:59 +0000 (15:11 +0000)]
found bug in eq partition assignment

4 years agodebug eq partition
Luke Kenneth Casson Leighton [Fri, 24 Jan 2020 15:04:50 +0000 (15:04 +0000)]
debug eq partition

4 years agoadd beginnings of partitioned eq into unit test
Luke Kenneth Casson Leighton [Fri, 24 Jan 2020 13:31:12 +0000 (13:31 +0000)]
add beginnings of partitioned eq into unit test

4 years agoadd partitioned eq module
Luke Kenneth Casson Leighton [Fri, 24 Jan 2020 12:15:21 +0000 (12:15 +0000)]
add partitioned eq module

4 years agoconvert to partition mask rather than partition points
Luke Kenneth Casson Leighton [Fri, 24 Jan 2020 11:27:46 +0000 (11:27 +0000)]
convert to partition mask rather than partition points

4 years agoadd more to module docstring
Luke Kenneth Casson Leighton [Fri, 24 Jan 2020 11:15:30 +0000 (11:15 +0000)]
add more to module docstring

4 years agode-modulify PartitionedSignal, call "set_module" to use it
Luke Kenneth Casson Leighton [Fri, 24 Jan 2020 11:07:33 +0000 (11:07 +0000)]
de-modulify PartitionedSignal, call "set_module" to use it

4 years agoadd partition test add unit test
Luke Kenneth Casson Leighton [Wed, 22 Jan 2020 14:21:24 +0000 (14:21 +0000)]
add partition test add unit test

4 years agoadd __xor__ and __add__
Luke Kenneth Casson Leighton [Wed, 22 Jan 2020 13:42:13 +0000 (13:42 +0000)]
add __xor__ and __add__

4 years agoadd partitioned signal class
Luke Kenneth Casson Leighton [Wed, 22 Jan 2020 12:25:20 +0000 (12:25 +0000)]
add partitioned signal class

4 years agomin/max in Signal deprecated in nmigen
Luke Kenneth Casson Leighton [Fri, 17 Jan 2020 14:18:34 +0000 (14:18 +0000)]
min/max in Signal deprecated in nmigen

4 years agoupdate to new revision nmigen
Luke Kenneth Casson Leighton [Fri, 17 Jan 2020 14:14:33 +0000 (14:14 +0000)]
update to new revision nmigen

4 years agosplit out adder code (PartitionedAdder) into module, PartitionPoints too
Luke Kenneth Casson Leighton [Mon, 6 Jan 2020 21:16:08 +0000 (21:16 +0000)]
split out adder code (PartitionedAdder) into module, PartitionPoints too

4 years agoimport global not relative
Luke Kenneth Casson Leighton [Tue, 19 Nov 2019 16:08:56 +0000 (16:08 +0000)]
import global not relative

4 years agoadd bug #148 record
Luke Kenneth Casson Leighton [Tue, 19 Nov 2019 16:08:45 +0000 (16:08 +0000)]
add bug #148 record

4 years agoclarify StageChain
Luke Kenneth Casson Leighton [Tue, 19 Nov 2019 15:44:17 +0000 (15:44 +0000)]
clarify StageChain

4 years agoclarify whats being obtained from _connect_out function
Luke Kenneth Casson Leighton [Tue, 19 Nov 2019 15:37:32 +0000 (15:37 +0000)]
clarify whats being obtained from _connect_out function

4 years agodocumentation on pipeline API
Luke Kenneth Casson Leighton [Tue, 19 Nov 2019 15:37:05 +0000 (15:37 +0000)]
documentation on pipeline API

4 years agodocument iocontrol module properly
Luke Kenneth Casson Leighton [Tue, 19 Nov 2019 15:12:58 +0000 (15:12 +0000)]
document iocontrol module properly

4 years agocreate SIMD pipe multiply unit test
Luke Kenneth Casson Leighton [Wed, 28 Aug 2019 06:17:21 +0000 (07:17 +0100)]
create SIMD pipe multiply unit test

4 years agoadd docstring Mul8_16_32_64 only for testing
Luke Kenneth Casson Leighton [Mon, 26 Aug 2019 12:23:35 +0000 (13:23 +0100)]
add docstring Mul8_16_32_64 only for testing

4 years agoadd mul_pipe.py - pipeline version of multiply.py
Luke Kenneth Casson Leighton [Mon, 26 Aug 2019 12:22:25 +0000 (13:22 +0100)]
add mul_pipe.py - pipeline version of multiply.py

4 years agorename inputs_ to terms_
Luke Kenneth Casson Leighton [Mon, 26 Aug 2019 12:21:55 +0000 (13:21 +0100)]
rename inputs_ to terms_

4 years agoupdate docstring
Luke Kenneth Casson Leighton [Mon, 26 Aug 2019 11:35:29 +0000 (12:35 +0100)]
update docstring

4 years agocode-morph AddReduceInternal: remove self.inputs, replace with n_inputs
Luke Kenneth Casson Leighton [Mon, 26 Aug 2019 09:09:23 +0000 (10:09 +0100)]
code-morph AddReduceInternal: remove self.inputs, replace with n_inputs

4 years agoremove unneeded variables
Luke Kenneth Casson Leighton [Mon, 26 Aug 2019 09:00:19 +0000 (10:00 +0100)]
remove unneeded variables

4 years agouse PipeModBase and PipelineSpec in Intermediates and FinalOut
Luke Kenneth Casson Leighton [Mon, 26 Aug 2019 08:54:55 +0000 (09:54 +0100)]
use PipeModBase and PipelineSpec in Intermediates and FinalOut

4 years agouse PipelineSpec and PipeModBase in AddReduce
Luke Kenneth Casson Leighton [Mon, 26 Aug 2019 08:48:11 +0000 (09:48 +0100)]
use PipelineSpec and PipeModBase in AddReduce

4 years agouse PipelineSpec object in AllTerms
Luke Kenneth Casson Leighton [Mon, 26 Aug 2019 08:37:38 +0000 (09:37 +0100)]
use PipelineSpec object in AllTerms

4 years agoremove unneeded argument (register_levels/n_levels) from AllTerms and Parts
Luke Kenneth Casson Leighton [Mon, 26 Aug 2019 08:18:20 +0000 (09:18 +0100)]
remove unneeded argument (register_levels/n_levels) from AllTerms and Parts

4 years agodocument weird int2float bug
Luke Kenneth Casson Leighton [Sun, 25 Aug 2019 20:44:27 +0000 (21:44 +0100)]
document weird int2float bug

4 years agouse Mux instead of m.If/Else in int2float fcvt
Luke Kenneth Casson Leighton [Sun, 25 Aug 2019 20:33:20 +0000 (21:33 +0100)]
use Mux instead of m.If/Else in int2float fcvt

4 years agoremove fprsqrt m.If/Elif/Elif, replace with Mux
Luke Kenneth Casson Leighton [Sun, 25 Aug 2019 16:07:05 +0000 (17:07 +0100)]
remove fprsqrt m.If/Elif/Elif, replace with Mux

4 years agoremove m.If/Elif in fpdiv sqrt, replace with Mux
Luke Kenneth Casson Leighton [Sun, 25 Aug 2019 16:03:23 +0000 (17:03 +0100)]
remove m.If/Elif in fpdiv sqrt, replace with Mux

4 years agoremove m.If/Elif from fpdiv specialcases
Luke Kenneth Casson Leighton [Sun, 25 Aug 2019 15:51:24 +0000 (16:51 +0100)]
remove m.If/Elif from fpdiv specialcases

4 years agoremove m.If/Elif/Elif replace with Mux
Luke Kenneth Casson Leighton [Sun, 25 Aug 2019 15:10:11 +0000 (16:10 +0100)]
remove m.If/Elif/Elif replace with Mux

4 years agorewrite fpadd specialcases to use Mux instead of m.IF/Elif/Elif/Elif
Luke Kenneth Casson Leighton [Sun, 25 Aug 2019 13:45:20 +0000 (14:45 +0100)]
rewrite fpadd specialcases to use Mux instead of m.IF/Elif/Elif/Elif

4 years agocode-morph on add special-cases
Luke Kenneth Casson Leighton [Sun, 25 Aug 2019 12:43:26 +0000 (13:43 +0100)]
code-morph on add special-cases

4 years agoremove weirdness
Luke Kenneth Casson Leighton [Sun, 25 Aug 2019 12:25:17 +0000 (13:25 +0100)]
remove weirdness

4 years agoremove out_do_z, update comments (whitespace)
Luke Kenneth Casson Leighton [Sun, 25 Aug 2019 11:44:22 +0000 (12:44 +0100)]
remove out_do_z, update comments (whitespace)

4 years agocode comments
Luke Kenneth Casson Leighton [Sun, 25 Aug 2019 11:38:34 +0000 (12:38 +0100)]
code comments

4 years agorework add aligner to use Mux instead of m.If/Else
Luke Kenneth Casson Leighton [Sun, 25 Aug 2019 11:31:16 +0000 (12:31 +0100)]
rework add aligner to use Mux instead of m.If/Else

4 years agoremove use of out_do_z in add align
Luke Kenneth Casson Leighton [Sun, 25 Aug 2019 10:46:25 +0000 (11:46 +0100)]
remove use of out_do_z in add align

4 years agorework add1 to not use out_do_z and use Mux instead of m.If/Else
Luke Kenneth Casson Leighton [Sun, 25 Aug 2019 10:45:36 +0000 (11:45 +0100)]
rework add1 to not use out_do_z and use Mux instead of m.If/Else

4 years agoreorg add0 to use Mux instead of m.If/Else
Luke Kenneth Casson Leighton [Sun, 25 Aug 2019 10:23:42 +0000 (11:23 +0100)]
reorg add0 to use Mux instead of m.If/Else

4 years agouse Mux instead of m.If/Elif on add sign
Luke Kenneth Casson Leighton [Sun, 25 Aug 2019 10:06:49 +0000 (11:06 +0100)]
use Mux instead of m.If/Elif on add sign

4 years agoremove out_do_z from add0
Luke Kenneth Casson Leighton [Sun, 25 Aug 2019 10:04:02 +0000 (11:04 +0100)]
remove out_do_z from add0