ieee754fpu.git
3 years agoadd TestReplMod, under development
Luke Kenneth Casson Leighton [Sat, 9 Oct 2021 16:14:56 +0000 (17:14 +0100)]
add TestReplMod, under development

3 years agoadd PartitionedRepl into PartitionedSignal.__Repl__
Luke Kenneth Casson Leighton [Tue, 5 Oct 2021 17:25:27 +0000 (18:25 +0100)]
add PartitionedRepl into PartitionedSignal.__Repl__
uses same auto-module-creation as PCat, PMux and PAssign

3 years agoshuffle order of functions (whitespace) to same order as ast.Value
Luke Kenneth Casson Leighton [Tue, 5 Oct 2021 17:20:52 +0000 (18:20 +0100)]
shuffle order of functions (whitespace) to same order as ast.Value

3 years agoadd PartitionedRepl first version, no unit test just demo
Luke Kenneth Casson Leighton [Tue, 5 Oct 2021 17:09:24 +0000 (18:09 +0100)]
add PartitionedRepl first version, no unit test just demo

3 years agowhoops accidentally removed bugreport link
Luke Kenneth Casson Leighton [Tue, 5 Oct 2021 16:45:55 +0000 (17:45 +0100)]
whoops accidentally removed bugreport link

3 years agoadd signed/unsigned functions and preliminary unit test
Luke Kenneth Casson Leighton [Tue, 5 Oct 2021 16:42:43 +0000 (17:42 +0100)]
add signed/unsigned functions and preliminary unit test

3 years agopull in unit test code for PartitionedSignal.matches to be adapted
Luke Kenneth Casson Leighton [Tue, 5 Oct 2021 12:57:32 +0000 (13:57 +0100)]
pull in unit test code for PartitionedSignal.matches to be adapted

3 years agobit of a reorder / reorg, to match up with current ast.Value function order
Luke Kenneth Casson Leighton [Tue, 5 Oct 2021 12:52:53 +0000 (13:52 +0100)]
bit of a reorder / reorg, to match up with current ast.Value function order
this makes it easier to ensure that all functions are there, easier to
read / find.

3 years agodisable mul and rmul in PartitionedSignal for now
Luke Kenneth Casson Leighton [Tue, 5 Oct 2021 12:34:45 +0000 (13:34 +0100)]
disable mul and rmul in PartitionedSignal for now

3 years agorewrite complex comprehensions as for loops
Jacob Lifshay [Mon, 4 Oct 2021 23:28:32 +0000 (16:28 -0700)]
rewrite complex comprehensions as for loops

3 years agoFix broken code caused by attempted removal of type annotations.
Jacob Lifshay [Mon, 4 Oct 2021 22:40:04 +0000 (15:40 -0700)]
Fix broken code caused by attempted removal of type annotations.

This partially reverts commit 0cdf4be4df5c0fbae476442c1a91b0e8140e2104.

3 years agoadd TODO comments
Luke Kenneth Casson Leighton [Sat, 2 Oct 2021 18:02:36 +0000 (19:02 +0100)]
add TODO comments
https://bugs.libre-soc.org/show_bug.cgi?id=718

3 years agoadd a PartitionedSignal.any() test and extend range of values tested
Luke Kenneth Casson Leighton [Sat, 2 Oct 2021 17:56:40 +0000 (18:56 +0100)]
add a PartitionedSignal.any() test and extend range of values tested
in horizontal logic operators

3 years agomake note about failing PartitionedAll
Luke Kenneth Casson Leighton [Sat, 2 Oct 2021 17:40:18 +0000 (18:40 +0100)]
make note about failing PartitionedAll
https://bugs.libre-soc.org/show_bug.cgi?id=176#c17

3 years agorevert to using self == Const(-1) for now in PartitionedSignal.all()
Luke Kenneth Casson Leighton [Sat, 2 Oct 2021 17:37:41 +0000 (18:37 +0100)]
revert to using self == Const(-1) for now in PartitionedSignal.all()

3 years agobit more sophisticated on the partsig horizontal test, use subTest to report
Luke Kenneth Casson Leighton [Sat, 2 Oct 2021 17:29:18 +0000 (18:29 +0100)]
bit more sophisticated on the partsig horizontal test, use subTest to report
function name and input value

3 years agoadd PartitionedSignal.all() and unit test, currently failing
Luke Kenneth Casson Leighton [Sat, 2 Oct 2021 17:26:41 +0000 (18:26 +0100)]
add PartitionedSignal.all() and unit test, currently failing

3 years agoadd PartitionedAll operator, based on PartitionedBase
Luke Kenneth Casson Leighton [Sat, 2 Oct 2021 17:17:19 +0000 (18:17 +0100)]
add PartitionedAll operator, based on PartitionedBase

3 years agoadd bool PartitionedSignal test
Luke Kenneth Casson Leighton [Sat, 2 Oct 2021 17:14:11 +0000 (18:14 +0100)]
add bool PartitionedSignal test

3 years agoremoving unnecessary type information which makes the code
Luke Kenneth Casson Leighton [Sat, 2 Oct 2021 09:39:43 +0000 (10:39 +0100)]
removing unnecessary type information which makes the code
completely unreadable, longer and more complex

3 years agoadd PartitionedSignalTester
Jacob Lifshay [Sat, 2 Oct 2021 02:10:55 +0000 (19:10 -0700)]
add PartitionedSignalTester

3 years agosplit out logical ops into PartitionedBase
Luke Kenneth Casson Leighton [Fri, 1 Oct 2021 21:00:19 +0000 (22:00 +0100)]
split out logical ops into PartitionedBase

3 years agoadd PartitionedBool class (based on PartitionedXOR)
Luke Kenneth Casson Leighton [Fri, 1 Oct 2021 16:33:09 +0000 (17:33 +0100)]
add PartitionedBool class (based on PartitionedXOR)
could very likely be combined but hey

3 years agoadd quick use/self-test to PartitionedXOR
Luke Kenneth Casson Leighton [Fri, 1 Oct 2021 16:03:25 +0000 (17:03 +0100)]
add quick use/self-test to PartitionedXOR

3 years agoadd PartitionedSignal XOR partsig test
Luke Kenneth Casson Leighton [Thu, 30 Sep 2021 22:24:29 +0000 (23:24 +0100)]
add PartitionedSignal XOR partsig test

3 years agopartsig unit test tidyup
Luke Kenneth Casson Leighton [Thu, 30 Sep 2021 18:12:25 +0000 (19:12 +0100)]
partsig unit test tidyup

3 years agotest names to go under a different fileset
Luke Kenneth Casson Leighton [Thu, 30 Sep 2021 18:09:06 +0000 (19:09 +0100)]
test names to go under a different fileset

3 years agoadd scalar test of PartitionedSignal.__Assign__
Luke Kenneth Casson Leighton [Thu, 30 Sep 2021 17:50:41 +0000 (18:50 +0100)]
add scalar test of PartitionedSignal.__Assign__
completes all 12 permutations needed

3 years agoadd six combinations of PartitionedSignal.__Assign__ test:
Luke Kenneth Casson Leighton [Thu, 30 Sep 2021 17:23:28 +0000 (18:23 +0100)]
add six combinations of PartitionedSignal.__Assign__ test:
* input width less, equal or greater to output width
* output signed or unsigned

3 years agorework partsig TestAssign to cope with different types of input,
Luke Kenneth Casson Leighton [Thu, 30 Sep 2021 15:10:21 +0000 (16:10 +0100)]
rework partsig TestAssign to cope with different types of input,
scalar/partitioned, lengths equal/greater/less, signed/unsigned

3 years agofix PartitionedAssign, PAssign, and PartitionedSignal.__Assign__
Luke Kenneth Casson Leighton [Thu, 30 Sep 2021 14:42:34 +0000 (15:42 +0100)]
fix PartitionedAssign, PAssign, and PartitionedSignal.__Assign__

preliminary unit test showed wiring was incorrect, as was the return
result from PAssign, which has to return Statements

3 years agocorrect test_partsig name, remove redundant code
Luke Kenneth Casson Leighton [Thu, 30 Sep 2021 13:59:28 +0000 (14:59 +0100)]
correct test_partsig name, remove redundant code

3 years agoremove PartitionedSignal.eq, expectation is to use PartitionedSignal.__Assign__
Luke Kenneth Casson Leighton [Thu, 30 Sep 2021 13:55:41 +0000 (14:55 +0100)]
remove PartitionedSignal.eq, expectation is to use PartitionedSignal.__Assign__
due to eq being removed, access to the underlying ".sig" is now
done using PartitionedSignal.lower()

3 years agowhitespace / comments
Luke Kenneth Casson Leighton [Thu, 30 Sep 2021 13:40:15 +0000 (14:40 +0100)]
whitespace / comments

3 years agoadd use of PartitionedAssign in PartitionedSignal, behind __Assign__
Luke Kenneth Casson Leighton [Wed, 29 Sep 2021 18:35:23 +0000 (19:35 +0100)]
add use of PartitionedAssign in PartitionedSignal, behind __Assign__
move to separate module due to recursive import issues

3 years agoadd support in PartitionedAssign for scalar signals
Luke Kenneth Casson Leighton [Wed, 29 Sep 2021 18:28:11 +0000 (19:28 +0100)]
add support in PartitionedAssign for scalar signals

3 years agoadd PartitionedAssign class for use in PartitionedSignal
Luke Kenneth Casson Leighton [Wed, 29 Sep 2021 18:10:48 +0000 (19:10 +0100)]
add PartitionedAssign class for use in PartitionedSignal

3 years agoadd PartitionedSignal.shape function
Luke Kenneth Casson Leighton [Wed, 29 Sep 2021 18:10:23 +0000 (19:10 +0100)]
add PartitionedSignal.shape function
(simply returns underlying self.sig.shape())

3 years agoadd PartitionedSignal.__len__ override, redirects to self.sig len
Luke Kenneth Casson Leighton [Wed, 29 Sep 2021 17:25:45 +0000 (18:25 +0100)]
add PartitionedSignal.__len__ override, redirects to self.sig len

3 years agoreduce part_mask in partsig tests to 3 (actual number of break points
Luke Kenneth Casson Leighton [Wed, 29 Sep 2021 16:13:45 +0000 (17:13 +0100)]
reduce part_mask in partsig tests to 3 (actual number of break points
not actual number of partitions), fix PartitionedSignal.like(),
needed to pass in PartitionPoints(other.partpoints)

3 years agoadd assert to check partition jump point size
Luke Kenneth Casson Leighton [Wed, 29 Sep 2021 16:12:51 +0000 (17:12 +0100)]
add assert to check partition jump point size

3 years agounit test for PartitionedSignal.__Cat__
Luke Kenneth Casson Leighton [Wed, 29 Sep 2021 15:43:50 +0000 (16:43 +0100)]
unit test for PartitionedSignal.__Cat__
decided also to change the mask to be the number of partition points
(not waste one bit)

3 years agomove PCat to separate module
Luke Kenneth Casson Leighton [Tue, 28 Sep 2021 18:50:41 +0000 (19:50 +0100)]
move PCat to separate module
(didnt help but hey), solve recursive import by moving import of
PartitionedCat into the PCat function

3 years agoadd PartitionedSignal.__Cat__ override
Luke Kenneth Casson Leighton [Tue, 28 Sep 2021 18:41:20 +0000 (19:41 +0100)]
add PartitionedSignal.__Cat__ override
calls and creates PartitionedCat module

3 years agocorrections to PartitionedCat after corrections to PartitionedSignal,
Luke Kenneth Casson Leighton [Tue, 28 Sep 2021 18:36:31 +0000 (19:36 +0100)]
corrections to PartitionedCat after corrections to PartitionedSignal,
using make_partitions2, off-by-one error

3 years agoadd PartitionedSignal.__Mux__ unit test
Luke Kenneth Casson Leighton [Tue, 28 Sep 2021 16:00:40 +0000 (17:00 +0100)]
add PartitionedSignal.__Mux__ unit test
split out from TestPartitionedSignal to reduce time and make it clear
what is being tested

3 years agoadd PartitionedSignal.__Mux__ using existing PMux function
Luke Kenneth Casson Leighton [Tue, 28 Sep 2021 14:17:15 +0000 (15:17 +0100)]
add PartitionedSignal.__Mux__ using existing PMux function

3 years agoderive PartitionedSignal from UserValue (temporarily) and add lower()
Luke Kenneth Casson Leighton [Mon, 27 Sep 2021 18:29:26 +0000 (19:29 +0100)]
derive PartitionedSignal from UserValue (temporarily) and add lower()

3 years agowhitespace
Luke Kenneth Casson Leighton [Mon, 27 Sep 2021 18:28:57 +0000 (19:28 +0100)]
whitespace

3 years agofix chunking to get correct order for PartitionedCat
Luke Kenneth Casson Leighton [Fri, 24 Sep 2021 19:17:34 +0000 (20:17 +0100)]
fix chunking to get correct order for PartitionedCat

3 years agoadd first cut at PartitionedSignal "Cat"
Luke Kenneth Casson Leighton [Fri, 24 Sep 2021 13:59:01 +0000 (14:59 +0100)]
add first cut at PartitionedSignal "Cat"

3 years agoRemove comment sign and add correct path for nmigen intersphinx.
R Veera Kumar [Sat, 5 Jun 2021 02:31:29 +0000 (08:01 +0530)]
Remove comment sign and add correct path for nmigen intersphinx.

3 years agoAdd Makefile modified for sphinx.
R Veera Kumar [Sat, 5 Jun 2021 02:14:27 +0000 (07:44 +0530)]
Add Makefile modified for sphinx.

3 years ago Initial addition of sphinx documentation system.
R Veera Kumar [Sat, 5 Jun 2021 02:04:00 +0000 (07:34 +0530)]
Initial addition of sphinx documentation system.

    Add run of sphinx-quickstart and manual modifications of files.

3 years agocorrections to setup.py for classifier, for pypi upload
Luke Kenneth Casson Leighton [Mon, 12 Apr 2021 00:05:34 +0000 (01:05 +0100)]
corrections to setup.py for classifier, for pypi upload

3 years agoupdate for upload to pypi
Luke Kenneth Casson Leighton [Mon, 12 Apr 2021 00:03:16 +0000 (01:03 +0100)]
update for upload to pypi

3 years agoConvert add and sub to return PartitionedSignal
Cesar Strauss [Sat, 23 Jan 2021 22:33:44 +0000 (19:33 -0300)]
Convert add and sub to return PartitionedSignal

Adjust the test suite accordingly.

3 years agoRevert order of operations in PartitionedSignal.implies()
Cesar Strauss [Sat, 23 Jan 2021 21:16:04 +0000 (18:16 -0300)]
Revert order of operations in PartitionedSignal.implies()

Now that all bitwise logic operations return PartitionedSignal, the
original order of operations will work.

3 years agoClarify comment about operations returning plain Signals
Cesar Strauss [Sat, 23 Jan 2021 21:09:28 +0000 (18:09 -0300)]
Clarify comment about operations returning plain Signals

Possibly not all Signal results will be ported to PartitionedSignal. For
instance, comparison operations.

3 years agoConvert all bitwise logical ops to return PartitionedSignal
Cesar Strauss [Sat, 23 Jan 2021 20:58:41 +0000 (17:58 -0300)]
Convert all bitwise logical ops to return PartitionedSignal

3 years agoAlso copy the module in PartotionSignal.like()
Cesar Strauss [Sat, 23 Jan 2021 20:46:29 +0000 (17:46 -0300)]
Also copy the module in PartotionSignal.like()

3 years agoReturn a PartitionedSignal from the bitwise "not" operation
Cesar Strauss [Sat, 23 Jan 2021 20:39:49 +0000 (17:39 -0300)]
Return a PartitionedSignal from the bitwise "not" operation

Adjust the proof to accommodate such operations.

3 years agoImplement PartitionedSignal.like()
Cesar Strauss [Sat, 23 Jan 2021 20:31:39 +0000 (17:31 -0300)]
Implement PartitionedSignal.like()

3 years agoUse z3 solver instead of yices2 when convenient
Cesar Strauss [Sat, 23 Jan 2021 09:55:03 +0000 (06:55 -0300)]
Use z3 solver instead of yices2 when convenient

3 years agoAdd tests for bitwise logical operators
Cesar Strauss [Wed, 20 Jan 2021 10:35:01 +0000 (07:35 -0300)]
Add tests for bitwise logical operators

3 years agoReverse order of operations in implies()
Cesar Strauss [Wed, 20 Jan 2021 10:29:35 +0000 (07:29 -0300)]
Reverse order of operations in implies()

Put the negation last, since it returns a Signal, and then Signal OR
was being called instead of PartitionedSignal OR.

3 years agoDo not register carry-out on the PartitionedAdder
Cesar Strauss [Mon, 18 Jan 2021 08:59:44 +0000 (05:59 -0300)]
Do not register carry-out on the PartitionedAdder

The user of this module can register it if needed.

3 years agoFix PartitionedSignal.neg and its test case
Cesar Strauss [Sun, 17 Jan 2021 21:45:47 +0000 (18:45 -0300)]
Fix PartitionedSignal.neg and its test case

For some reason, neg(a) was returning (a - 1) instead of (-a).
Implemented it as (0 - a).
For the test case, shifted down the input, negated it and shifted it
back again. Could have done it also by (0 - a), but this way it is more
independent of the implementation.
Added a formal proof.

3 years agoAllow the proof driver to check operations with integer output
Cesar Strauss [Sun, 17 Jan 2021 17:00:27 +0000 (14:00 -0300)]
Allow the proof driver to check operations with integer output

The "part_out" parameter tells the driver whether the output of the
operation is supposed to be arithmetic or boolean.

Added checks for addition and subtraction, without carry.

3 years agoUse RipleLSB in PartitionedXOR, and invert outputs ls180-24jan2020
Cesar Strauss [Sat, 16 Jan 2021 20:37:35 +0000 (17:37 -0300)]
Use RipleLSB in PartitionedXOR, and invert outputs

The combiner was built to give inverted outputs, since it was designed
for ORing "not equals" signals, instead of ANDing equals signals.

Use 4-bit partitions when checking, 8-bit takes a long time for some
reason.

3 years agoadd first cut at formal proof for PartitionedXOR
Luke Kenneth Casson Leighton [Sat, 16 Jan 2021 19:07:41 +0000 (19:07 +0000)]
add first cut at formal proof for PartitionedXOR

3 years agoadd PartitionedXOR to PartitionedSignal (xor operator)
Luke Kenneth Casson Leighton [Sat, 16 Jan 2021 19:02:25 +0000 (19:02 +0000)]
add PartitionedXOR to PartitionedSignal (xor operator)

3 years agoCheck PartitionedSignal.any().
Cesar Strauss [Sat, 16 Jan 2021 19:00:28 +0000 (16:00 -0300)]
Check PartitionedSignal.any().

3 years agoadd first cut (untested) of PartitionedXOR
Luke Kenneth Casson Leighton [Sat, 16 Jan 2021 18:51:34 +0000 (18:51 +0000)]
add first cut (untested) of PartitionedXOR

3 years agoconvert EQCombiner to general-purpose, create XORCombiner
Luke Kenneth Casson Leighton [Sat, 16 Jan 2021 18:45:10 +0000 (18:45 +0000)]
convert EQCombiner to general-purpose, create XORCombiner

3 years agoadd partitioned signal any() operator
Luke Kenneth Casson Leighton [Sat, 16 Jan 2021 18:40:50 +0000 (18:40 +0000)]
add partitioned signal any() operator

3 years agoAllow a variable number of operands in the proof driver
Cesar Strauss [Sat, 16 Jan 2021 17:06:41 +0000 (14:06 -0300)]
Allow a variable number of operands in the proof driver

It can now check unary operations, as well as binary.

Check the "all" method by defining an operation that applies it to
its argument.

3 years agoApparently PartitionedEqGtGe is already conformant
Cesar Strauss [Mon, 11 Jan 2021 19:28:38 +0000 (16:28 -0300)]
Apparently PartitionedEqGtGe is already conformant

3 years agoImplement checks for all the rest of the comparison operarions
Cesar Strauss [Sun, 10 Jan 2021 22:02:01 +0000 (19:02 -0300)]
Implement checks for all the rest of the comparison operarions

3 years agoGenerate and check expected values for all possible partition sizes
Cesar Strauss [Sun, 10 Jan 2021 21:42:58 +0000 (18:42 -0300)]
Generate and check expected values for all possible partition sizes

3 years agoGenerate shifted down input and outputs
Cesar Strauss [Sun, 10 Jan 2021 21:33:10 +0000 (18:33 -0300)]
Generate shifted down input and outputs

3 years agoUse styles in write_gtkw to simplify the trace description
Cesar Strauss [Sun, 10 Jan 2021 21:18:17 +0000 (18:18 -0300)]
Use styles in write_gtkw to simplify the trace description

3 years agoAdd the Gate Generator to the ComparisonOpDriver
Cesar Strauss [Sun, 10 Jan 2021 20:56:29 +0000 (17:56 -0300)]
Add the Gate Generator to the ComparisonOpDriver

3 years agoFactor-out the code to make equally spaced partition points
Cesar Strauss [Sun, 10 Jan 2021 20:28:23 +0000 (17:28 -0300)]
Factor-out the code to make equally spaced partition points

3 years agoStart proof for PartitionedSignal equals operator
Cesar Strauss [Sun, 10 Jan 2021 19:43:57 +0000 (16:43 -0300)]
Start proof for PartitionedSignal equals operator

The idea is to make use of operator.* to abstract away the operation.
Start with binary comparison operators.

3 years agoUpdate Simulator interface to current nMigen
Cesar Strauss [Sun, 10 Jan 2021 18:32:48 +0000 (15:32 -0300)]
Update Simulator interface to current nMigen

3 years agoUse len(sig) instead of sig.shape()[0]
Cesar Strauss [Sun, 10 Jan 2021 17:47:26 +0000 (14:47 -0300)]
Use len(sig) instead of sig.shape()[0]

In latest nMigen, Shape is no longer a tuple. On the other hand,
len(sig) worked since the last stable nMigen release, so it should not
break for anyone.

3 years agoUse the correct class name
Cesar Strauss [Sat, 9 Jan 2021 17:29:53 +0000 (14:29 -0300)]
Use the correct class name

3 years agoCheck all possible opcodes for PartitionedEqGtGe
Cesar Strauss [Sat, 9 Jan 2021 17:23:03 +0000 (14:23 -0300)]
Check all possible opcodes for PartitionedEqGtGe

3 years agoFormal verification of PartitionedEqGtGe (EQ only)
Cesar Strauss [Sat, 9 Jan 2021 16:55:25 +0000 (13:55 -0300)]
Formal verification of PartitionedEqGtGe (EQ only)

Fix operation at EQ to begin with.
Code is mostly identical to the PartitionedEq proof.

3 years agoPost-process PartitionedEq to ripple the LSB
Cesar Strauss [Sat, 9 Jan 2021 14:41:18 +0000 (11:41 -0300)]
Post-process PartitionedEq to ripple the LSB

This needs to be removed once PartitionedEq is compliant.

3 years agoImplement formal verification of PartitionedEq based on GateGenerator
Cesar Strauss [Sat, 9 Jan 2021 13:56:28 +0000 (10:56 -0300)]
Implement formal verification of PartitionedEq based on GateGenerator

3 years agoCalculate the expected value, test and assert
Cesar Strauss [Fri, 8 Jan 2021 21:35:10 +0000 (18:35 -0300)]
Calculate the expected value, test and assert

3 years agoSplit-out the gate generator from the proof
Cesar Strauss [Fri, 8 Jan 2021 21:17:02 +0000 (18:17 -0300)]
Split-out the gate generator from the proof

This reduces repetition among partition proofs.

3 years agoCompare the expected output for all partition sizes
Cesar Strauss [Thu, 7 Jan 2021 22:34:20 +0000 (19:34 -0300)]
Compare the expected output for all partition sizes

Optimize for the case where the partition points are equally spaced,
so the possible partition sizes are just multiple of the smaller one.
Otherwise, all combinations of start and end points would have to be
considered.

3 years agoGenerate shifted down outputs
Cesar Strauss [Wed, 6 Jan 2021 09:41:24 +0000 (06:41 -0300)]
Generate shifted down outputs

Align the start of any selected partition to zero, so it can easily be
checked with the expected value.
For partitioned operations with inputs, it is also necessary to generate
shifted down versions of each input.

3 years agoGenerate the bit pattern of gates corresponding to a partition
Cesar Strauss [Tue, 5 Jan 2021 20:32:40 +0000 (17:32 -0300)]
Generate the bit pattern of gates corresponding to a partition

Use Assume to constraint the pattern to conform to the given offset
and width. For each bit it is:
1) one if on the partition boundary
2) zero if it's inside the partition
3) don't care, otherwise

3 years agoWork only with nibbles on the ascending cascade
Cesar Strauss [Mon, 4 Jan 2021 21:38:51 +0000 (18:38 -0300)]
Work only with nibbles on the ascending cascade

3 years agoFill the second nibble of the pattern
Cesar Strauss [Mon, 4 Jan 2021 21:08:37 +0000 (18:08 -0300)]
Fill the second nibble of the pattern

It should encode the length of the partition.
The first nibble encodes the position within the partition.

3 years agoRestart the pattern at partition boundaries
Cesar Strauss [Mon, 4 Jan 2021 20:26:35 +0000 (17:26 -0300)]
Restart the pattern at partition boundaries