March 2020 Archives by thread
Starting: Wed Mar 4 22:29:33 UTC 2020
Ending: Wed Mar 25 17:30:12 UTC 2020
Messages: 218
- [Cryptech-Commits] [core/platform/alpha] branch master updated (ca80f73 -> b1405d7)
git at cryptech.is
- [Cryptech-Commits] [core/platform/common] branch master updated (175bbe0 -> 8a43aa6)
git at cryptech.is
- [Cryptech-Commits] [sw/libhal] branch master updated (9e6edd6 -> c1ef4b3)
git at cryptech.is
- [Cryptech-Commits] [sw/stm32] branch master updated (2e735d0 -> 6b2513f)
git at cryptech.is
- [Cryptech-Commits] [sw/libhal] branch master updated (c1ef4b3 -> f012c32)
git at cryptech.is
- [Cryptech-Commits] [sw/stm32] branch master updated (6b2513f -> f09f1b8)
git at cryptech.is
- [Cryptech-Commits] [sw/thirdparty/libtfm] branch master updated: Add sandblast target
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] branch master created (now 465cdf0)
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 01/92: Randomized test vector generation scripts for ModExpNG.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 02/92: Don't track the test vector itself.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 03/92: Instructions on how to use the vector generation scripts.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 04/92: Added blinding support to test vector generation scripts.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 05/92: Updated readme file.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 06/92: ModExpNG ("Next Generation") math model.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 07/92: Added blinding into math model.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 08/92: Mutate blinding tuple.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 09/92: Added optional output of intermediate quantities for debugging. Reworked index rotation code for better readability.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 10/92: Simplified index calculation and accumulator clearing logic. Better debug printout of accumulators.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 11/92: * more debugging output * more precise modelling of DSP slice
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 12/92: Rewrote "square" recombination to match how it works in hardware.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 13/92: Same changes for "triangle" multiplication phase as for the "square" one (debugging output, simpler MAC clearing and index rotation logic).
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 14/92: Cosmetic fixes.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 15/92: Removed some boilerplate code, all the three multiplication flavours are now working consistently. Still need to rework recombination routines.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 16/92: Fixed 4096-bit test vector generation.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 17/92: Intermediate version to fix recombinaton overflow bug.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 18/92: * Added more debugging options: - intentionally trigger internal overflow handler - dump MAC inputs - dump intermediate numbers during the reduction phase
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 19/92: * Started conversion of the model to use micro-operations
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 20/92: * Added more micro-operations
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 21/92: * MASSIVE CLEANUP
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 22/92: * More cleanup (got rid of .wide. and .narrow.)
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 23/92: Moved to "modexpng_fpga_model" repo, this one was meant for Verilog.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 24/92: Started working on the pipelined Montgomery modular multiplier. Currently can do the "square" part of the multiplication, i.e. compute the twice larger intermediate product AB = A * B.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 25/92: Further work on the Montgomery modular multiplier. Can now to the "triangular" part of multiplication, i.e. compute the "magic" reduction coefficient Q = LSB(AB) * N_COEFF.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 26/92: Further work on the Montgomery modular multiplier. Added the third "rectangular" stage of the multiplication process, i.e. computation of how many copies of the modulus N to add to the intermediate product AB to zeroize the lower half: M = Q * N.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 27/92: Implemented the final stage of the Montgomery modular multiplication, i.e. addition of AB and M then reduction by right-shift.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 28/92: Major rewrite (different core hierarchy, buses, wrappers, etc).
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 29/92: Redesigned core architecture, unified bank structure. All storage blocks now have eight 4kbit entries and occupy one 36K BRAM tile.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 30/92: Redesigned storage modules, added top-level module, added I/O storage space.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 31/92: Reworked storage architecture (moved I/O memory to a separate module, since there's only one instance of input/output values, while storage manager has dual storage space for P and Q multipliers).
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 32/92: Expanded micro-operation parameters (added dedicated control bit to force the B input of the modular multiplier to 1, this is necessary to bring numbers out of Montgomery domain).
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 33/92: Added more micro-operations, also added "general worker" module. The worker is basically a block memory data mover, but it can also do some supporting operations required for the Garner's formula part of the exponentiation.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 34/92: Added more micro-operations, entire Montgomery exponentiation ladder works now.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 35/92: Refactored general worker module Added modular subtraction micro-operation
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 36/92: Added "MERGE_LH" micro-operation. To be able to do Garner's formula we need regular (not modular) multiplication. We're doing this by telling the modular multiplier to stop after the "square" step, which computes A*B. The problem is that the multiplier stores the lower part of the product in the internal bank L and the upper part in the internal bank H, but we need to be able to do operations on the product as a whole. MERGE_LH that combines the two halves of the product into one bank.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 37/92: Added the regular (not modular) addition operation required during the final step of the Garner's formula algorithm. Note, that the addition is "uneven" in the sense, that the first operand is full-size (as wide as the modulus), while the second one is only half the size. The adder internally banks the second input port during the second half of the addition.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 38/92: Entire CRT signature algorithm works by now.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 39/92: Redesigned the testbench. Core clock does not necessarily need to be twice faster than the bus clock now. It can be the same, or say four times faster.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 40/92: Added support for non-CRT mode. Further refactoring.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 41/92: Further work: - added core wrapper - fixed module resets across entire core (all the resets are now consistently active-low) - continued refactoring
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 42/92: Reworked testbench, clk_sys and clk_core can now have any ratio, not necessarily 1:2.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 43/92: Fixed all the testbenches to work with the latest RTL sources.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 44/92: Added simulation-only code to measure multiplier load.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 45/92: Fixed port width mismatch warning.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 46/92: Added readme file.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 47/92: Added demo driver code for STM32.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 48/92: Added missing copyright headers.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 49/92: Beautified the README.md, should look somewhat less nasty now.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 50/92: The uOP engine didn't compile at 180 MHz. The pipeline had two stages: FETCH and DECODE. Apparently one clock cycle is not enough to entirely decode an instruction, so decoding now takes two clock cycles (DECODE_1 and DECODE_2). This seems to solve the problem. If we run into more timing violations here, we can add an extra DECODE_3 cycle and register the currently combinatorial uop_opcode_* flags at DECODE_2. This fix increases the core's latency by 59/32 clock cycles (CRT/non-CRT mode) p [...]
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 51/92: Refactored reductor module.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 52/92: Removed the latch accidentally created while pipelining the uOP engine module. The FSM previously had four states encoded using two bits, so the next state logic didn't have a default case, since all the possible states were used. Addition of the fifth state required one more state bit, so the FSM now has five states out eight possible and a default case is thus necessary.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 53/92: Small change to the reductor module to try to get past 180 MHz. Previously BRAM outputs were going directry into a LUT-based ternary adder which was causing timing problems. Added a layer of flip-flops, so instead of BRAM -> LUT -> FF we have BRAM -> FF -> LUT -> FF. This increases core latency by (number_of_supporting_modular_multiplications + number_of_exponent_bits) ticks.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 54/92: Forgot to push minor cosmetic fix.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 55/92: Cosmetic fix.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 56/92: One more cosmetic fix.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 57/92: Had to rework the general worker module to reach 180 MHz core clock. The module is responsible for doing certain supporting operations (mostly moving operands between banks and doing some simple math operations, such as modular subtraction and regular addition). Depending on the particular operation, one of three bank address space sweep patterns was used: * one-pass (for things like carry propagation) * two-pass (for things like modular subtraction that produce intermediate values in [...]
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 58/92: Turns out, fabric addition and subtraction in the general worker module are actually in the critical paths of the ModExpNG core and are plaguing the place and route tools. I was barely able to achieve timing closure at 180 MHz even with the highest Map and PaR effort levels. This means that any further clock frequency increase is effectively impossible, moreover any small change in the design may prevent it from meeting timing constants. The obvious solution is to use DSP slices not only f [...]
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 59/92: Reworked modular subtraction micro-operation. Previously it used "two-pass" bank address space sweep, during the first pass (a-b) and (a-b+n) were computed, during the second pass either the former or the latter quantity was written to the output bank (depending on the very last borrow flag value). This is no longer possible, since the FSM now only generates one "interleaved" address space sweep. The solution is to split one complex modular subtraction operation into simpler sub-operations [...]
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 60/92: This commit modifies the REGULAR_ADD_UNEVEN micro-operation to use DSP slices for addition instead of fabric logic. This opcode is only necessary when in CRT mode and is executed once per entire exponentiation to recombine the two "easier" exponentiations. This was the final change necessary to get rid of using fabric math in the general worker module.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 61/92: * DSP slices now have two use modes: MULT and ADD/SUB * cosmetic rename of Verilog include file
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 62/92: Removed old DSP wrappers.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 63/92: Added two pairs of new wrappers.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 64/92: Cosmetic fix that only involves debug output during simulation.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 65/92: Updated microcode source to match the changes made to general worker module.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 66/92: Updated uOP engine to match the changes made to the general worker module (modular subtraction was split into three micro-operations instead of one).
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 67/92: For the new general worker module to work we need dynamic switching of DSP OPMODE, ALUMODE and CARRYINSEL ports, thus more defined constants.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 68/92: Tiny cosmetic typo fix ("dst" -> "dsp")
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 69/92: Added more meaningful constants to avoid certain hardcoded numbers.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 70/92: Refactored modular reductor module.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 71/92: Renumbered micro-operations.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 72/92: The I/O manager has to work in sync with the general worker module. Made the necessary changes to make it work after the general worker update. Also moved debug simulation-time code into a separate file.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 73/92: Update DSP wrapper instance names.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 74/92: Refactored MMM recombinator module, accomodated the changes in DSP slice wrapper names.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 75/92: Refactored the MMM module, now uses meaningful constant names from the include file, not hardcoded widths.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 76/92: Cosmetic change to easily switch tests on/off.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 77/92: Bump version number.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 78/92: Cosmetic rename of FSM states.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 79/92: * more consistent port names * optional two-stage pipeline for A&B ports
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 80/92: Accomodate the changes to DSP slice wrappers.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 81/92: This commit accomodates the changes made to DSP slice wrappers and also fixes the subtle math overflow bug introduced while switching to DSP-based partial multiplication product recombination.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 82/92: Uniform testbenches.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 83/92: Better handling of debug output (no need to manally adjust word count anymore).
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 84/92: Updated DSP slice wrappers for the new partial product recombination algorithm: - unified clock enable for A:B and C ports - A:B and C ports now always have fixed 1-cycle latency - added new Z multiplexor modes in the generic wrapper
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 85/92: Added new DSP slice OPMODEs for the new recombination algorithm.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 86/92: Adapted to the changes in the DSP slice wrappers.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 87/92: Improved debugging options: * flush console after each ladder iteration for smoother progress output * ability to truncate internal powering ladder loop at desired step (this will only work when using simulation mode, obviously)
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 88/92: New partial product recombination algorithm.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 89/92: Increment version number.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 90/92: More elegant way to do partial product recombination: * take advantage of the cascade paths between DSP slices * decrease latency of operation
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 91/92: Update STM32 demo driver.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] 92/92: Moved modexpng from user/shatov to core/math.
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] branch master updated: Increase NUM_MULTS to 32.
git at cryptech.is
- [Cryptech-Commits] [user/sra/build-tools] branch master updated: Python 2 -> 3
git at cryptech.is
- [Cryptech-Commits] [core/math/modexpng] branch master updated: Sadly, we can't meet timing in a general-purpose HSM design with NUM_MULTS=32, so back it off to 16 by default.
git at cryptech.is
- [Cryptech-Commits] [core/util/keywrap] branch master created (now 4333178)
git at cryptech.is
- [Cryptech-Commits] [core/platform/common] branch master updated (8a43aa6 -> 275951e)
git at cryptech.is
- [Cryptech-Commits] [core/platform/alpha] branch master updated: Prune target list to match projects currently in core.cfg.
git at cryptech.is
- [Cryptech-Commits] [sw/libhal] branch master updated: Reduce keywrap to 16 core blocks, to match how it's actually built now.
git at cryptech.is
Last message date:
Wed Mar 25 17:30:12 UTC 2020
Archived on: Wed Mar 25 17:30:15 UTC 2020
This archive was generated by
Pipermail 0.09 (Mailman edition).