ieee754fpu.git
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

4 years agoremove use of out_do_z, use Mux instead of m.If/Else
Luke Kenneth Casson Leighton [Sun, 25 Aug 2019 09:15:39 +0000 (10:15 +0100)]
remove use of out_do_z, use Mux instead of m.If/Else

4 years agoremove out_do_z test
Luke Kenneth Casson Leighton [Sun, 25 Aug 2019 09:09:48 +0000 (10:09 +0100)]
remove out_do_z test

4 years agorework roundz to use Mux
Luke Kenneth Casson Leighton [Sun, 25 Aug 2019 09:03:42 +0000 (10:03 +0100)]
rework roundz to use Mux

4 years agouse Mux in fp corrections
Luke Kenneth Casson Leighton [Sun, 25 Aug 2019 08:57:05 +0000 (09:57 +0100)]
use Mux in fp corrections

4 years agocleanup on msb1 and align: use Mux, remove out_do_z
Luke Kenneth Casson Leighton [Sun, 25 Aug 2019 08:50:47 +0000 (09:50 +0100)]
cleanup on msb1 and align: use Mux, remove out_do_z

4 years agomorph mul1 to use Mux rather than m.If/Else
Luke Kenneth Casson Leighton [Sun, 25 Aug 2019 08:05:55 +0000 (09:05 +0100)]
morph mul1 to use Mux rather than m.If/Else

4 years agodo not make mul1 processing conditional on out_do_z
Luke Kenneth Casson Leighton [Sun, 25 Aug 2019 07:10:28 +0000 (08:10 +0100)]
do not make mul1 processing conditional on out_do_z

4 years agoadd Stage API setup/process to AddReduceInternal
Luke Kenneth Casson Leighton [Fri, 23 Aug 2019 14:34:23 +0000 (15:34 +0100)]
add Stage API setup/process to AddReduceInternal

4 years agoadd in setup/process functions in multiply
Luke Kenneth Casson Leighton [Fri, 23 Aug 2019 14:19:54 +0000 (15:19 +0100)]
add in setup/process functions in multiply

4 years agoremove use of AddReduce, use AddReduceInternal instead
Luke Kenneth Casson Leighton [Fri, 23 Aug 2019 13:28:47 +0000 (14:28 +0100)]
remove use of AddReduce, use AddReduceInternal instead

4 years agowhoops forgot to set partition_step in AddReduceSingle, to be passed to as_mask
Luke Kenneth Casson Leighton [Fri, 23 Aug 2019 12:34:15 +0000 (13:34 +0100)]
whoops forgot to set partition_step in AddReduceSingle, to be passed to as_mask

4 years agopass in partition step parameter
Luke Kenneth Casson Leighton [Fri, 23 Aug 2019 12:29:34 +0000 (13:29 +0100)]
pass in partition step parameter

4 years agomunge AddReduce internals
Luke Kenneth Casson Leighton [Fri, 23 Aug 2019 12:26:40 +0000 (13:26 +0100)]
munge AddReduce internals

4 years agoremove unneeded code
Luke Kenneth Casson Leighton [Fri, 23 Aug 2019 12:16:45 +0000 (13:16 +0100)]
remove unneeded code

4 years agocontinue ispec/ospec on multiply
Luke Kenneth Casson Leighton [Fri, 23 Aug 2019 11:23:50 +0000 (12:23 +0100)]
continue ispec/ospec on multiply

4 years agostart adding ispec/ospec to multiply.py
Luke Kenneth Casson Leighton [Fri, 23 Aug 2019 11:02:07 +0000 (12:02 +0100)]
start adding ispec/ospec to multiply.py

4 years agouse bit_select instead of part, again
Luke Kenneth Casson Leighton [Fri, 23 Aug 2019 10:38:46 +0000 (11:38 +0100)]
use bit_select instead of part, again

4 years agomissing arg in InputData.eq_from
Luke Kenneth Casson Leighton [Fri, 23 Aug 2019 10:37:35 +0000 (11:37 +0100)]
missing arg in InputData.eq_from

4 years ago:1136
Luke Kenneth Casson Leighton [Fri, 23 Aug 2019 10:36:58 +0000 (11:36 +0100)]
:1136

4 years agosplit out AddReduce module level creation
Luke Kenneth Casson Leighton [Fri, 23 Aug 2019 10:36:37 +0000 (11:36 +0100)]
split out AddReduce module level creation

4 years agorename AllTermsData to InputData, use as input to base class Mul8_16_32_64
Luke Kenneth Casson Leighton [Fri, 23 Aug 2019 10:25:58 +0000 (11:25 +0100)]
rename AllTermsData to InputData, use as input to base class Mul8_16_32_64

4 years agoremove register_levels from AddReduceSingle and Final
Luke Kenneth Casson Leighton [Fri, 23 Aug 2019 10:21:23 +0000 (11:21 +0100)]
remove register_levels from AddReduceSingle and Final

4 years agoremove need to pass register_levels to AddReduceSingle
Luke Kenneth Casson Leighton [Fri, 23 Aug 2019 10:17:55 +0000 (11:17 +0100)]
remove need to pass register_levels to AddReduceSingle

4 years agomore variable renaming
Luke Kenneth Casson Leighton [Fri, 23 Aug 2019 10:17:29 +0000 (11:17 +0100)]
more variable renaming

4 years agomore variable renaming
Luke Kenneth Casson Leighton [Fri, 23 Aug 2019 10:14:13 +0000 (11:14 +0100)]
more variable renaming

4 years agorename some variables in the multiplier code:
Luke Kenneth Casson Leighton [Fri, 23 Aug 2019 09:46:11 +0000 (10:46 +0100)]
rename some variables in the multiplier code:
expanded_part_pts -> part_pts
inputs -> terms

4 years agouse new doubling of PartitionedAdder points (in-place expansion)
Luke Kenneth Casson Leighton [Fri, 23 Aug 2019 09:41:13 +0000 (10:41 +0100)]
use new doubling of PartitionedAdder points (in-place expansion)

4 years agoin-place expansion of partition points
Luke Kenneth Casson Leighton [Fri, 23 Aug 2019 09:39:35 +0000 (10:39 +0100)]
in-place expansion of partition points

4 years agouse new sim.add_clock "if_exists" parameter. needed for combinatorial blocks
Luke Kenneth Casson Leighton [Fri, 23 Aug 2019 08:57:35 +0000 (09:57 +0100)]
use new sim.add_clock "if_exists" parameter.  needed for combinatorial blocks

4 years agouse better test of whether block is combinatorial
Luke Kenneth Casson Leighton [Fri, 23 Aug 2019 08:49:30 +0000 (09:49 +0100)]
use better test of whether block is combinatorial

4 years agocreate AllTermsData class and use it
Luke Kenneth Casson Leighton [Thu, 22 Aug 2019 23:45:38 +0000 (00:45 +0100)]
create AllTermsData class and use it

4 years agomove part-bytes to AllTerms
Luke Kenneth Casson Leighton [Thu, 22 Aug 2019 23:39:13 +0000 (00:39 +0100)]
move part-bytes to AllTerms

4 years agouse intermediate data from finalout, move AllTerms class
Luke Kenneth Casson Leighton [Thu, 22 Aug 2019 18:46:27 +0000 (19:46 +0100)]
use intermediate data from finalout, move AllTerms class

4 years agomove product terms to new "AllTerms" module
Luke Kenneth Casson Leighton [Thu, 22 Aug 2019 18:44:49 +0000 (19:44 +0100)]
move product terms to new "AllTerms" module

4 years agomove part modules into FinalOut
Luke Kenneth Casson Leighton [Thu, 22 Aug 2019 07:04:06 +0000 (08:04 +0100)]
move part modules into FinalOut

4 years agomove intermediates to separate module, use i/o data struct
Luke Kenneth Casson Leighton [Thu, 22 Aug 2019 06:37:44 +0000 (07:37 +0100)]
move intermediates to separate module, use i/o data struct

4 years agosilly rename get_test_cases to get_tst_cases, stops detection as a unit test
Luke Kenneth Casson Leighton [Thu, 22 Aug 2019 02:12:39 +0000 (03:12 +0100)]
silly rename get_test_cases to get_tst_cases, stops detection as a unit test

4 years agoskip add clock on combinatorial tests
Luke Kenneth Casson Leighton [Thu, 22 Aug 2019 02:11:57 +0000 (03:11 +0100)]
skip add clock on combinatorial tests

4 years agoreduce multiply sim delay by 1/10th, seems to "fix" test problem
Luke Kenneth Casson Leighton [Thu, 22 Aug 2019 01:41:44 +0000 (02:41 +0100)]
reduce multiply sim delay by 1/10th, seems to "fix" test problem

4 years agomove and reorg create_next_terms in AddReduceSingle, call in elaborate
Luke Kenneth Casson Leighton [Thu, 22 Aug 2019 01:27:02 +0000 (02:27 +0100)]
move and reorg create_next_terms in AddReduceSingle, call in elaborate

4 years agorename inputs to not include []
Luke Kenneth Casson Leighton [Thu, 22 Aug 2019 01:13:22 +0000 (02:13 +0100)]
rename inputs to not include []

4 years agomove groups test to top of loop
Luke Kenneth Casson Leighton [Thu, 22 Aug 2019 01:08:39 +0000 (02:08 +0100)]
move groups test to top of loop

4 years agogenerate ilang for each part mul test
Luke Kenneth Casson Leighton [Thu, 22 Aug 2019 01:08:23 +0000 (02:08 +0100)]
generate ilang for each part mul test

4 years agorename to next_groups
Luke Kenneth Casson Leighton [Thu, 22 Aug 2019 00:49:56 +0000 (01:49 +0100)]
rename to next_groups

4 years agomore resetless
Luke Kenneth Casson Leighton [Wed, 21 Aug 2019 16:53:30 +0000 (17:53 +0100)]
more resetless

4 years agorename self._intermediate_output
Luke Kenneth Casson Leighton [Wed, 21 Aug 2019 16:44:49 +0000 (17:44 +0100)]
rename self._intermediate_output

4 years agomove intermediate expanded a/b/o to locals
Luke Kenneth Casson Leighton [Wed, 21 Aug 2019 16:41:27 +0000 (17:41 +0100)]
move intermediate expanded a/b/o to locals