Add comments for VectorAssembler
authorDaniel Benusovich <flyingmonkeys1996@gmail.com>
Sat, 9 Mar 2019 03:51:52 +0000 (19:51 -0800)
committerDaniel Benusovich <flyingmonkeys1996@gmail.com>
Sat, 9 Mar 2019 03:51:52 +0000 (19:51 -0800)
TLB/src/VectorAssembler.py
TLB/test/test_vector_assembler.py

index 517dc51edefcfabfab09f1212517aeaba6998668..a0b0e85978e7ccda312ab31a2b282d65dbb88d10 100644 (file)
@@ -2,7 +2,19 @@ from nmigen import Array, Module, Signal
 from nmigen.cli import main 
 
 class VectorAssembler():
+    """ Vector Assembler
+    
+        The purpose of this module is to take a generic number of inputs
+        and cleanly combine them into one vector. While this is very much 
+        possible through raw code it may result in a very unfortunate sight
+        in a yosys graph. Thus this class was born! No more will ugly loops 
+        exist in my graphs! Get outta here ya goddam Lochness Monster. 
+    """
     def __init__(self, width):
+        """ Arguments:
+            * width: (bit count) The desiered size of the output vector
+        
+        """
         # Internal
         self.width = width
         
index 8e07c9c7bcfc004bcb1508a38b1306c89ae88a27..49d48c470ae796802c1d011d455163fb16dff79d 100644 (file)
@@ -7,21 +7,36 @@ from nmigen.compat.sim import run_simulation
 from test_helper import assert_eq, assert_ne, assert_op
 from VectorAssembler import VectorAssembler
 
+# Constant that defines size of output 
+# Dont change this unless you change the input vectors to match!
 assembler_size = 4
 
+# This function allows for the easy setting of values to the VectorAssembler
+# Arguments:
+#   dut: The CamEntry being tested
+#   input: The array of single bits to be written
 def set_assembler(dut, input):
     assert len(input) == assembler_size
     for index in range(assembler_size):
+        # Make sure we start from the beginning of the array
+        # at least the side that makes sense from a human standpoint
+        # of reading bits
         input_index = assembler_size - index - 1
         yield dut.input[index].eq(input[input_index])
     yield
     
+# Checks the data state of the CAM entry
+# Arguments:
+#   dut: The CamEntry being tested
+#   o (Output): The expected output
+#   op (Operation): (0 => ==), (1 => !=)
 def check_output(dut, o, op):
     out_o = yield dut.o
     assert_op("Output", out_o, o, op)
     
-
 def testbench(dut):
+    # Input should but bit readable from left to right
+    # with Little Endian notation
     input = [1, 1, 0, 0]
     output = 12
     yield from set_assembler(dut, input)