[Cryptech-Commits] [core/platform/novena] 15/21: Comments.
git at cryptech.is
git at cryptech.is
Tue Sep 29 05:24:39 UTC 2015
This is an automated email from the git hooks/post-receive script.
sra at hactrn.net pushed a commit to branch config_core_selector_sra
in repository core/platform/novena.
commit fdd81bb1df1df3cad091ea0076a0e6207f0e8f3d
Author: Rob Austein <sra at hactrn.net>
Date: Sun Sep 27 20:36:19 2015 -0400
Comments.
---
config/config.py | 46 +++++++++++++++++++++++++++++++---------------
1 file changed, 31 insertions(+), 15 deletions(-)
diff --git a/config/config.py b/config/config.py
index 814826f..0ec1274 100755
--- a/config/config.py
+++ b/config/config.py
@@ -25,26 +25,36 @@ Generate core_selector.v for a set of cores.
# 9 bits of core selector [16:8]
# 8 bits of register selector [7:0]
#
-# Taking Pavel's and Paul's changes together, we want:
+# Taking Pavel's and Paul's changes together, we'd get:
#
# 7 bits of core selector [16:10]
# 10 bits of register selector [9:0]
#
-# Open issue: what effect does all this have on the sub-core muxing
-# within trng cores? trng core plus its (currently) four sub-cores
-# still takes up more than one new core slot even if trng uses the old
-# scheme internally. How many slots should we allocate, and what
-# addressing scheme is the trng core expecting to see?
-#
-# So perhaps a better plan would be to keep Paul's scheme and just
-# give modexps6 four core's worth of space, passing a 10 bit composite
-# address constructed in much the same way as the trng template
-# already does.
+# Except that this would waste space for most cores, and make things
+# very confusing for the TRNG cores. So, instead, we keep Paul's
+# two-level (no segment) scheme and handle modexps6 as a set of four
+# consecutive "cores" with a 10-bit composite register selector.
+
+# The modexps6 core also drags in a one clock cycle delay to other
+# cores, to compensate for the extra clock cycle consumed by the block
+# memories used in the modexps6 core.
-# Unrelated: Timing delays. Paul added extra registers to slow cores
-# other than modexps6 down by one clock cycle, to compensate for the
-# one cycle delay that seems to be built into the block memories that
-# modexps6 uses. Templates will need to reflect that somehow.
+# To Do:
+#
+# - Move reset-high/reset-low to a boolean variable in the config
+# file, simplify Core classes accordingly.
+#
+# - Consider automating the one-clock-cycle delay stuff by adding
+# another boolean flag to the config file. Default would be no
+# delay, if any included core sets the "I use block memories" flag,
+# all other cores would get the delay. Slightly tedious but
+# something we can calculate easily enough, and probably an
+# improvement over wiring in the delay when nothing needs it.
+#
+# - Rename script and its config file to something more meaningful.
+#
+# - Figure out whether this really belongs in the novena repository at
+# all, seems more generic than that.
def main():
"""
@@ -224,6 +234,11 @@ class TRNGCore(InvertedResetCore):
class ModExpS6Core(Core):
+ """
+ ModExpS6 core consumes as much space as four ordinary cores, and
+ uses different templates to handle the differences in timing and
+ addressing.
+ """
def assign_core_number(self, n):
n = super(ModExpS6Core, self).assign_core_number(n)
@@ -237,6 +252,7 @@ class ModExpS6Core(Core):
# Hook special classes in as handlers for the cores that require them.
+# Moving the reset-high/reset-low logic to the config file should simplify this.
Core.special_class.update(
trng = TRNGCore,
More information about the Commits
mailing list