hwcomponents-neurosim 1.0.20__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- hwcomponents_neurosim-1.0.20/.github/workflows/publish.yaml +43 -0
- hwcomponents_neurosim-1.0.20/.gitignore +68 -0
- hwcomponents_neurosim-1.0.20/.gitmodules +3 -0
- hwcomponents_neurosim-1.0.20/MANIFEST.in +2 -0
- hwcomponents_neurosim-1.0.20/Makefile +10 -0
- hwcomponents_neurosim-1.0.20/PKG-INFO +211 -0
- hwcomponents_neurosim-1.0.20/README.md +197 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/.git +1 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Documents/DNN NeuroSim V1.3 Manual.pdf +0 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/Adder.cpp +253 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/Adder.h +76 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/AdderTree.cpp +197 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/AdderTree.h +77 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/BitShifter.cpp +128 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/BitShifter.h +75 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/Buffer.cpp +224 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/Buffer.h +91 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/Bus.cpp +194 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/Bus.h +77 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/Chip.cpp +1370 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/Chip.h +77 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/Comparator.cpp +228 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/Comparator.h +76 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/CurrentSenseAmp.cpp +334 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/CurrentSenseAmp.h +85 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/DFF.cpp +190 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/DFF.h +75 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/DeMux.cpp +192 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/DeMux.h +75 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/DecoderDriver.cpp +281 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/DecoderDriver.h +80 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/Definition.h +50 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/FunctionUnit.cpp +117 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/FunctionUnit.h +67 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/HTree.cpp +430 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/HTree.h +79 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/InputParameter.h +53 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/LevelShifter.cpp +201 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/LevelShifter.h +87 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/MaxPooling.cpp +247 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/MaxPooling.h +78 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/MemCell.h +89 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/MultilevelSAEncoder.cpp +215 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/MultilevelSAEncoder.h +75 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/MultilevelSenseAmp.cpp +462 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/MultilevelSenseAmp.h +89 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/Mux.cpp +200 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/Mux.h +80 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/NetWork_DenseNet40.csv +40 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/NetWork_ResNet18.csv +21 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/NetWork_VGG8.csv +8 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/NewMux.cpp +185 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/NewMux.h +76 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/NewSwitchMatrix.cpp +204 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/NewSwitchMatrix.h +91 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/Param.cpp +263 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/Param.h +80 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/Precharger.cpp +173 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/Precharger.h +78 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/ProcessingUnit.cpp +695 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/ProcessingUnit.h +61 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/ReadCircuit.cpp +239 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/ReadCircuit.h +86 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/RowDecoder.cpp +470 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/RowDecoder.h +81 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/SRAMWriteDriver.cpp +168 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/SRAMWriteDriver.h +74 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/SarADC.cpp +231 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/SarADC.h +84 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/SenseAmp.cpp +161 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/SenseAmp.h +75 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/ShiftAdd.cpp +221 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/ShiftAdd.h +83 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/Sigmoid.cpp +224 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/Sigmoid.h +93 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/SramNewSA.cpp +124 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/SramNewSA.h +70 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/SubArray.cpp +1608 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/SubArray.h +195 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/SwitchMatrix.cpp +302 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/SwitchMatrix.h +89 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/Technology.cpp +1504 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/Technology.h +85 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/Tile.cpp +700 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/Tile.h +67 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/VoltageSenseAmp.cpp +133 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/VoltageSenseAmp.h +78 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/WLDecoderOutput.cpp +239 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/WLDecoderOutput.h +77 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/WLNewDecoderDriver.cpp +272 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/WLNewDecoderDriver.h +43 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/constant.h +91 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/formula.cpp +614 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/formula.h +83 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/main.cpp +549 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/makefile +67 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/typedef.h +102 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/__init__.py +1 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/inference.py +152 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/log/DenseNet40.pth +0 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/log/VGG8.pth +0 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/models/DenseNet.py +135 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/models/ResNet.py +409 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/models/VGG.py +94 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/models/__pycache__/DenseNet.cpython-35.pyc +0 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/models/__pycache__/ResNet.cpython-35.pyc +0 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/models/__pycache__/VGG.cpython-35.pyc +0 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/models/__pycache__/dataset.cpython-35.pyc +0 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/models/dataset.py +110 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/modules/__pycache__/floatrange_cpu_np_infer.cpython-35.pyc +0 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/modules/__pycache__/quantization_cpu_np_infer.cpython-35.pyc +0 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/modules/__pycache__/quantization_cpu_np_infer.cpython-37.pyc +0 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/modules/floatrange_cpu_np_infer.py +75 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/modules/quantization_cpu_np_infer.py +329 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/train.py +185 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/utee/__pycache__/QSGD.cpython-35.pyc +0 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/utee/__pycache__/float_quantizer.cpython-35.pyc +0 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/utee/__pycache__/hook.cpython-35.pyc +0 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/utee/__pycache__/make_path.cpython-35.pyc +0 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/utee/__pycache__/misc.cpython-35.pyc +0 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/utee/__pycache__/wage_initializer.cpython-35.pyc +0 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/utee/__pycache__/wage_quantizer.cpython-35.pyc +0 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/utee/__pycache__/wage_util.cpython-35.pyc +0 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/utee/float_quantizer.py +22 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/utee/hook.py +132 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/utee/make_path.py +27 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/utee/misc.py +239 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/utee/wage_initializer.py +45 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/utee/wage_quantizer.py +315 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/utee/wage_util.py +13 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/README.md +88 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/__init__.py +13 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/_version.py +34 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/cells/nvmexplorer_PCM.cell +17 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/cells/nvmexplorer_RRAM.cell +26 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/cells/nvmexplorer_SRAM.cell +4 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/cells/nvmexplorer_sttram.cell +19 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/cells/nvsim_PCRAM.cell +30 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/cells/nvsim_RRAM.cell +37 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/cells/nvsim_STTRAM.cell +23 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/cells/nvsim_STTRAM_aggressive.cell +23 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/cells/placeholder.cell +25 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/default_config.cfg +53 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/drop_in/MultilevelSenseAmp.cpp +449 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/drop_in/Param.cpp +320 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/drop_in/Param.h +97 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/drop_in/SubArray.cpp +1630 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/drop_in/Technology.cpp +1520 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/drop_in/Technology.h +87 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/drop_in/main.cpp +658 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/drop_in/typedef.h +103 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/main.py +1529 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/neurointerface.py +701 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim.egg-info/PKG-INFO +211 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim.egg-info/SOURCES.txt +160 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim.egg-info/dependency_links.txt +1 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim.egg-info/requires.txt +1 -0
- hwcomponents_neurosim-1.0.20/hwcomponents_neurosim.egg-info/top_level.txt +2 -0
- hwcomponents_neurosim-1.0.20/license.txt +19 -0
- hwcomponents_neurosim-1.0.20/pyproject.toml +43 -0
- hwcomponents_neurosim-1.0.20/setup.cfg +4 -0
- hwcomponents_neurosim-1.0.20/setup.py +47 -0
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
name: Upload Python Package to PyPI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
- master
|
|
8
|
+
release:
|
|
9
|
+
types: [created]
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
pypi-publish:
|
|
13
|
+
name: Publish package to PyPI
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
environment:
|
|
16
|
+
name: pypi
|
|
17
|
+
url: https://pypi.org/p/hwcomponents-neurosim
|
|
18
|
+
permissions:
|
|
19
|
+
id-token: write
|
|
20
|
+
steps:
|
|
21
|
+
- uses: actions/checkout@v4
|
|
22
|
+
with:
|
|
23
|
+
fetch-depth: 0 # Fetch all history and tags for setuptools-scm
|
|
24
|
+
submodules: recursive # Check out all submodules
|
|
25
|
+
- name: Initialize and update submodules
|
|
26
|
+
run: |
|
|
27
|
+
git submodule update --init --recursive
|
|
28
|
+
- name: Set up Python
|
|
29
|
+
uses: actions/setup-python@v4
|
|
30
|
+
with:
|
|
31
|
+
python-version: "3.12"
|
|
32
|
+
- name: Install dependencies
|
|
33
|
+
run: |
|
|
34
|
+
python -m pip install --upgrade pip
|
|
35
|
+
pip install build
|
|
36
|
+
- name: Build package
|
|
37
|
+
working-directory: .
|
|
38
|
+
env:
|
|
39
|
+
PYTHONPATH: ${{ github.workspace }}
|
|
40
|
+
run: |
|
|
41
|
+
python -m build
|
|
42
|
+
- name: Publish package distributions to PyPI
|
|
43
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Python bytecode
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
|
|
6
|
+
# Distribution / packaging
|
|
7
|
+
dist/
|
|
8
|
+
build/
|
|
9
|
+
*.egg-info/
|
|
10
|
+
*.egg
|
|
11
|
+
|
|
12
|
+
# Virtual environments
|
|
13
|
+
venv/
|
|
14
|
+
env/
|
|
15
|
+
.env/
|
|
16
|
+
.venv/
|
|
17
|
+
ENV/
|
|
18
|
+
|
|
19
|
+
# IDE specific files
|
|
20
|
+
.idea/
|
|
21
|
+
.vscode/
|
|
22
|
+
*.swp
|
|
23
|
+
*.swo
|
|
24
|
+
.DS_Store
|
|
25
|
+
|
|
26
|
+
# Jupyter Notebook
|
|
27
|
+
.ipynb_checkpoints
|
|
28
|
+
|
|
29
|
+
# Testing
|
|
30
|
+
.coverage
|
|
31
|
+
htmlcov/
|
|
32
|
+
.pytest_cache/
|
|
33
|
+
.tox/
|
|
34
|
+
nosetests.xml
|
|
35
|
+
coverage.xml
|
|
36
|
+
*.cover
|
|
37
|
+
|
|
38
|
+
# mypy
|
|
39
|
+
.mypy_cache/
|
|
40
|
+
.dmypy.json
|
|
41
|
+
dmypy.json
|
|
42
|
+
|
|
43
|
+
# pip
|
|
44
|
+
pip-log.txt
|
|
45
|
+
pip-delete-this-directory.txt
|
|
46
|
+
|
|
47
|
+
# Logs
|
|
48
|
+
*.log
|
|
49
|
+
logs/
|
|
50
|
+
|
|
51
|
+
# Local development settings
|
|
52
|
+
.env
|
|
53
|
+
.env.local
|
|
54
|
+
.env.*.local
|
|
55
|
+
|
|
56
|
+
# Documentation
|
|
57
|
+
docs/_build/
|
|
58
|
+
site/
|
|
59
|
+
|
|
60
|
+
# Temporary files
|
|
61
|
+
*.tmp
|
|
62
|
+
*.bak
|
|
63
|
+
*.swp
|
|
64
|
+
*~
|
|
65
|
+
*.o
|
|
66
|
+
|
|
67
|
+
# NeuroSim
|
|
68
|
+
hwcomponents_neurosim/NeuroSim/*
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
build:
|
|
2
|
+
cd hwcomponents_neurosim && rm -rf NeuroSim
|
|
3
|
+
cd hwcomponents_neurosim && mkdir NeuroSim
|
|
4
|
+
cp -r hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/* hwcomponents_neurosim/NeuroSim/
|
|
5
|
+
cd hwcomponents_neurosim && cp -rf drop_in/* ./NeuroSim/
|
|
6
|
+
cd hwcomponents_neurosim && cd NeuroSim ; make
|
|
7
|
+
|
|
8
|
+
install:
|
|
9
|
+
make
|
|
10
|
+
pip install .
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: hwcomponents-neurosim
|
|
3
|
+
Version: 1.0.20
|
|
4
|
+
Summary: A package for estimating the energy and area of NeuroSim components
|
|
5
|
+
Author-email: Tanner Andrulis <andrulis@mit.edu>
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Keywords: hardware,energy,estimation,analog,adc,neurosim,pim,processing-in-memory,cim
|
|
8
|
+
Classifier: Development Status :: 3 - Alpha
|
|
9
|
+
Classifier: Programming Language :: Python :: 3
|
|
10
|
+
Classifier: Topic :: Scientific/Engineering :: Electronic Design Automation (EDA)
|
|
11
|
+
Requires-Python: >=3.12
|
|
12
|
+
Description-Content-Type: text/markdown
|
|
13
|
+
Requires-Dist: hwcomponents
|
|
14
|
+
|
|
15
|
+
# HWComponents-NeuroSim
|
|
16
|
+
HWComponents-NeuroSim provides energy, area, and leakage models for NeuroSim[1]
|
|
17
|
+
components. It enables estimation for analog Compute-In-Memory (CiM) Array
|
|
18
|
+
components and various peripheral components.
|
|
19
|
+
|
|
20
|
+
We also allow conversions for NVMExplorer[2]/NVSim[3] style cell files to
|
|
21
|
+
Neurosim processing-in-memory / compute-in-memory arrays.
|
|
22
|
+
|
|
23
|
+
These models are for use with the HWComponents package, found at
|
|
24
|
+
https://accelergy-project.github.io/hwcomponents/.
|
|
25
|
+
|
|
26
|
+
## CiM Array Model
|
|
27
|
+
We encourage you read section 6 of the NeuroSim Manual in the
|
|
28
|
+
DNN_NeuroSim_V1.3/Documents folder.
|
|
29
|
+
|
|
30
|
+
We model CiM array energy/area with four pieces:
|
|
31
|
+
|
|
32
|
+
- Row Activation: This is the path for inputs to activate a array. An input
|
|
33
|
+
voltage will actiavte a wordline, or row of memory cells. Multiple input
|
|
34
|
+
voltages or longer-duration inputs can feed higher resolution inputs.
|
|
35
|
+
- Column Activation: This is the path for outputs to be read out of a array.
|
|
36
|
+
Once input voltages have activated a wordline, they will feed current onto
|
|
37
|
+
bitlines, or columns. Column activation is the energy required to get this
|
|
38
|
+
current out and to precharge the wordline before reading.
|
|
39
|
+
- Analog-Digital-Conversion: This is the circuit that reads an analog value
|
|
40
|
+
from the array and converts to a digital signal for output processing.
|
|
41
|
+
- Cell: This a memory cells in the array.
|
|
42
|
+
|
|
43
|
+
In short: An input activates a row, an output activates a column, a
|
|
44
|
+
multiplication activates a cell, and an output read takes an ADC conversion.
|
|
45
|
+
|
|
46
|
+
## Installing
|
|
47
|
+
|
|
48
|
+
Install from PyPI:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
pip install hwcomponents-neurosim
|
|
52
|
+
|
|
53
|
+
# Check that the installation is successful
|
|
54
|
+
hwc --list | grep array_col_drivers
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Creating Custom Cells
|
|
58
|
+
Cell files must follow the NVMExplorer[2]/NVSim[3] format. See the cells/
|
|
59
|
+
directory for references. CiM arrays can be created with any user-defined
|
|
60
|
+
cell.
|
|
61
|
+
|
|
62
|
+
## CiM Components
|
|
63
|
+
We support four components for estimating CiM array energy.
|
|
64
|
+
|
|
65
|
+
- array_row_drivers: These activate rows.
|
|
66
|
+
- array_col_drivers: These activate columns.
|
|
67
|
+
- array_adc: These read out analog values into digital signals.
|
|
68
|
+
- memory_cell: This is a cell in a array.
|
|
69
|
+
|
|
70
|
+
### CiM Component Arguments
|
|
71
|
+
CiM components take the following arguments.
|
|
72
|
+
- tech_node: The technology node in m
|
|
73
|
+
- row: The number of rows in the array
|
|
74
|
+
- cols: The number of columns in the array
|
|
75
|
+
- cols_active_at_once: The number of columns to be activated at a single time
|
|
76
|
+
- cell_config: The path to a NVMExplorer[2]/NVSim[3] cell file, or a sample
|
|
77
|
+
cell to use.
|
|
78
|
+
- average_input_value: A value between 0 and 1 reflecting the average input
|
|
79
|
+
being sent on rows. For example, if inputs are encoded as values from 0-4
|
|
80
|
+
with an average of 3, average_input_value is 0.75.
|
|
81
|
+
- average_cell_value: Like average_input_value, but with encoded weights. For
|
|
82
|
+
example, if weights are encoded as values from 1-10 with an average of 7,
|
|
83
|
+
average_cell_value is 0.7.
|
|
84
|
+
- sequential: A binary value. If true, rows are addressed and accessed one at a
|
|
85
|
+
time. Otherwise, rows are to be activated in large blocks and not addressed.
|
|
86
|
+
Setting this to TRUE can simulate a CiM memory.
|
|
87
|
+
- adc_resolution: This is the number of bits of the ADC used for readout. ADC
|
|
88
|
+
is a flash ADC. To exclude the ADC and use your own, set adc_resolution to 0.
|
|
89
|
+
- read_pulse_width: Number of ns each read pulse lasts.
|
|
90
|
+
- voltage_dac_bits: Number of bits resolution for a voltage-based DAC on each
|
|
91
|
+
row. Voltage DACs use a row switch connected to a power rail for each
|
|
92
|
+
possible input value.
|
|
93
|
+
- temporal_dac_bits: Number of bits resolution for a temporal DAC on each row.
|
|
94
|
+
Temporal DACs enode inputs as an amount of time the row stays high.
|
|
95
|
+
|
|
96
|
+
## Peripheral Components
|
|
97
|
+
We support other digital components from NeuroSim. These components are useful
|
|
98
|
+
in many places-- not just CiM!
|
|
99
|
+
|
|
100
|
+
### Integer Adder
|
|
101
|
+
Yep, it adds integers.
|
|
102
|
+
|
|
103
|
+
Class:
|
|
104
|
+
- intadder
|
|
105
|
+
|
|
106
|
+
Required parameters:
|
|
107
|
+
- tech_node: The technology node in m
|
|
108
|
+
- n_bits: Number of bits to add
|
|
109
|
+
|
|
110
|
+
Actions:
|
|
111
|
+
- add
|
|
112
|
+
|
|
113
|
+
### Integer Shift-Add
|
|
114
|
+
An adder + a shift register to accumulate variable-precision values.
|
|
115
|
+
|
|
116
|
+
Class:
|
|
117
|
+
- shift_add
|
|
118
|
+
|
|
119
|
+
Required parameters:
|
|
120
|
+
- tech_node: The technology node in m
|
|
121
|
+
- n_bits: Number of bits to add
|
|
122
|
+
- shift_register_n_bits: Number of bits in the shift register
|
|
123
|
+
|
|
124
|
+
Actions:
|
|
125
|
+
- shift_add
|
|
126
|
+
|
|
127
|
+
### Integer Adder-Tree
|
|
128
|
+
A tree of adders to accmulate many values. Each level of the tree adds with
|
|
129
|
+
higher n_bits to ensure no overflow.
|
|
130
|
+
|
|
131
|
+
Class:
|
|
132
|
+
- intadder_tree
|
|
133
|
+
|
|
134
|
+
Required parameters:
|
|
135
|
+
- tech_node: The technology node in m
|
|
136
|
+
- n_bits: Number of bits of a leaf adder. This is the minimum n_bits in the
|
|
137
|
+
tree. Each additional level will add a bit.
|
|
138
|
+
- n_adder_tree_inputs: Number of values to add
|
|
139
|
+
|
|
140
|
+
Actions:
|
|
141
|
+
- add
|
|
142
|
+
|
|
143
|
+
### Integer Max-Pool
|
|
144
|
+
A max-pooling unit that finds and outputs the maximum a set of values.
|
|
145
|
+
|
|
146
|
+
Class:
|
|
147
|
+
- max_pool
|
|
148
|
+
|
|
149
|
+
Required parameters:
|
|
150
|
+
- tech_node: The technology node in m
|
|
151
|
+
- n_bits: Number of bits for each input value
|
|
152
|
+
- pool_window: Number of values to compare
|
|
153
|
+
|
|
154
|
+
Actions:
|
|
155
|
+
- max_pool
|
|
156
|
+
|
|
157
|
+
### Multiplexer
|
|
158
|
+
An n-bit multiplexer
|
|
159
|
+
|
|
160
|
+
Class:
|
|
161
|
+
- mux
|
|
162
|
+
|
|
163
|
+
Required parameters:
|
|
164
|
+
- tech_node: The technology node in m
|
|
165
|
+
- n_bits: Number of bits for each input value
|
|
166
|
+
- n_inputs: Number of inputs to the mux
|
|
167
|
+
|
|
168
|
+
Actions:
|
|
169
|
+
- max_pool
|
|
170
|
+
|
|
171
|
+
### Flip-flop
|
|
172
|
+
A digital flip flop
|
|
173
|
+
|
|
174
|
+
Class:
|
|
175
|
+
- flip_flop
|
|
176
|
+
|
|
177
|
+
Required parameters:
|
|
178
|
+
- tech_node: The technology node in m
|
|
179
|
+
- n_bits: Number of flip flop bits
|
|
180
|
+
|
|
181
|
+
Actions:
|
|
182
|
+
- max_pool
|
|
183
|
+
|
|
184
|
+
### NOT, NAND, and NOR gates
|
|
185
|
+
Logic gates
|
|
186
|
+
|
|
187
|
+
Class:
|
|
188
|
+
- not_gate
|
|
189
|
+
- nand_gate
|
|
190
|
+
- nor_gate
|
|
191
|
+
|
|
192
|
+
Required parameters:
|
|
193
|
+
- tech_node: The technology node in m
|
|
194
|
+
|
|
195
|
+
Actions:
|
|
196
|
+
- read
|
|
197
|
+
|
|
198
|
+
### References
|
|
199
|
+
[1]X. Peng, S. Huang, Y. Luo, X. Sun, and S. Yu, “DNN+NeuroSim: An End-to-End
|
|
200
|
+
Benchmarking Framework for Compute-in-Memory Accelerators with Versatile Device
|
|
201
|
+
Technologies,” in 2019 IEEE International Electron Devices Meeting (IEDM), Dec.
|
|
202
|
+
2019, p. 32.5.1-32.5.4. doi: 10.1109/IEDM19573.2019.8993491.
|
|
203
|
+
|
|
204
|
+
[2]L. Pentecost, A. Hankin, M. Donato, M. Hempstead, G.-Y. Wei, and D. Brooks,
|
|
205
|
+
NVMExplorer: A Framework for Cross-Stack Comparisons of Embedded Non-Volatile
|
|
206
|
+
Memories. 2021.
|
|
207
|
+
|
|
208
|
+
[3]X. Dong, C. Xu, Y. Xie, and N. P. Jouppi, “NVSim: A Circuit-Level
|
|
209
|
+
Performance, Energy, and Area Model for Emerging Nonvolatile Memory,” IEEE
|
|
210
|
+
Transactions on Computer-Aided Design of Integrated Circuits and Systems, vol.
|
|
211
|
+
31, no. 7, pp. 994–1007, Jul. 2012, doi: 10.1109/TCAD.2012.2185930.
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
# HWComponents-NeuroSim
|
|
2
|
+
HWComponents-NeuroSim provides energy, area, and leakage models for NeuroSim[1]
|
|
3
|
+
components. It enables estimation for analog Compute-In-Memory (CiM) Array
|
|
4
|
+
components and various peripheral components.
|
|
5
|
+
|
|
6
|
+
We also allow conversions for NVMExplorer[2]/NVSim[3] style cell files to
|
|
7
|
+
Neurosim processing-in-memory / compute-in-memory arrays.
|
|
8
|
+
|
|
9
|
+
These models are for use with the HWComponents package, found at
|
|
10
|
+
https://accelergy-project.github.io/hwcomponents/.
|
|
11
|
+
|
|
12
|
+
## CiM Array Model
|
|
13
|
+
We encourage you read section 6 of the NeuroSim Manual in the
|
|
14
|
+
DNN_NeuroSim_V1.3/Documents folder.
|
|
15
|
+
|
|
16
|
+
We model CiM array energy/area with four pieces:
|
|
17
|
+
|
|
18
|
+
- Row Activation: This is the path for inputs to activate a array. An input
|
|
19
|
+
voltage will actiavte a wordline, or row of memory cells. Multiple input
|
|
20
|
+
voltages or longer-duration inputs can feed higher resolution inputs.
|
|
21
|
+
- Column Activation: This is the path for outputs to be read out of a array.
|
|
22
|
+
Once input voltages have activated a wordline, they will feed current onto
|
|
23
|
+
bitlines, or columns. Column activation is the energy required to get this
|
|
24
|
+
current out and to precharge the wordline before reading.
|
|
25
|
+
- Analog-Digital-Conversion: This is the circuit that reads an analog value
|
|
26
|
+
from the array and converts to a digital signal for output processing.
|
|
27
|
+
- Cell: This a memory cells in the array.
|
|
28
|
+
|
|
29
|
+
In short: An input activates a row, an output activates a column, a
|
|
30
|
+
multiplication activates a cell, and an output read takes an ADC conversion.
|
|
31
|
+
|
|
32
|
+
## Installing
|
|
33
|
+
|
|
34
|
+
Install from PyPI:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
pip install hwcomponents-neurosim
|
|
38
|
+
|
|
39
|
+
# Check that the installation is successful
|
|
40
|
+
hwc --list | grep array_col_drivers
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Creating Custom Cells
|
|
44
|
+
Cell files must follow the NVMExplorer[2]/NVSim[3] format. See the cells/
|
|
45
|
+
directory for references. CiM arrays can be created with any user-defined
|
|
46
|
+
cell.
|
|
47
|
+
|
|
48
|
+
## CiM Components
|
|
49
|
+
We support four components for estimating CiM array energy.
|
|
50
|
+
|
|
51
|
+
- array_row_drivers: These activate rows.
|
|
52
|
+
- array_col_drivers: These activate columns.
|
|
53
|
+
- array_adc: These read out analog values into digital signals.
|
|
54
|
+
- memory_cell: This is a cell in a array.
|
|
55
|
+
|
|
56
|
+
### CiM Component Arguments
|
|
57
|
+
CiM components take the following arguments.
|
|
58
|
+
- tech_node: The technology node in m
|
|
59
|
+
- row: The number of rows in the array
|
|
60
|
+
- cols: The number of columns in the array
|
|
61
|
+
- cols_active_at_once: The number of columns to be activated at a single time
|
|
62
|
+
- cell_config: The path to a NVMExplorer[2]/NVSim[3] cell file, or a sample
|
|
63
|
+
cell to use.
|
|
64
|
+
- average_input_value: A value between 0 and 1 reflecting the average input
|
|
65
|
+
being sent on rows. For example, if inputs are encoded as values from 0-4
|
|
66
|
+
with an average of 3, average_input_value is 0.75.
|
|
67
|
+
- average_cell_value: Like average_input_value, but with encoded weights. For
|
|
68
|
+
example, if weights are encoded as values from 1-10 with an average of 7,
|
|
69
|
+
average_cell_value is 0.7.
|
|
70
|
+
- sequential: A binary value. If true, rows are addressed and accessed one at a
|
|
71
|
+
time. Otherwise, rows are to be activated in large blocks and not addressed.
|
|
72
|
+
Setting this to TRUE can simulate a CiM memory.
|
|
73
|
+
- adc_resolution: This is the number of bits of the ADC used for readout. ADC
|
|
74
|
+
is a flash ADC. To exclude the ADC and use your own, set adc_resolution to 0.
|
|
75
|
+
- read_pulse_width: Number of ns each read pulse lasts.
|
|
76
|
+
- voltage_dac_bits: Number of bits resolution for a voltage-based DAC on each
|
|
77
|
+
row. Voltage DACs use a row switch connected to a power rail for each
|
|
78
|
+
possible input value.
|
|
79
|
+
- temporal_dac_bits: Number of bits resolution for a temporal DAC on each row.
|
|
80
|
+
Temporal DACs enode inputs as an amount of time the row stays high.
|
|
81
|
+
|
|
82
|
+
## Peripheral Components
|
|
83
|
+
We support other digital components from NeuroSim. These components are useful
|
|
84
|
+
in many places-- not just CiM!
|
|
85
|
+
|
|
86
|
+
### Integer Adder
|
|
87
|
+
Yep, it adds integers.
|
|
88
|
+
|
|
89
|
+
Class:
|
|
90
|
+
- intadder
|
|
91
|
+
|
|
92
|
+
Required parameters:
|
|
93
|
+
- tech_node: The technology node in m
|
|
94
|
+
- n_bits: Number of bits to add
|
|
95
|
+
|
|
96
|
+
Actions:
|
|
97
|
+
- add
|
|
98
|
+
|
|
99
|
+
### Integer Shift-Add
|
|
100
|
+
An adder + a shift register to accumulate variable-precision values.
|
|
101
|
+
|
|
102
|
+
Class:
|
|
103
|
+
- shift_add
|
|
104
|
+
|
|
105
|
+
Required parameters:
|
|
106
|
+
- tech_node: The technology node in m
|
|
107
|
+
- n_bits: Number of bits to add
|
|
108
|
+
- shift_register_n_bits: Number of bits in the shift register
|
|
109
|
+
|
|
110
|
+
Actions:
|
|
111
|
+
- shift_add
|
|
112
|
+
|
|
113
|
+
### Integer Adder-Tree
|
|
114
|
+
A tree of adders to accmulate many values. Each level of the tree adds with
|
|
115
|
+
higher n_bits to ensure no overflow.
|
|
116
|
+
|
|
117
|
+
Class:
|
|
118
|
+
- intadder_tree
|
|
119
|
+
|
|
120
|
+
Required parameters:
|
|
121
|
+
- tech_node: The technology node in m
|
|
122
|
+
- n_bits: Number of bits of a leaf adder. This is the minimum n_bits in the
|
|
123
|
+
tree. Each additional level will add a bit.
|
|
124
|
+
- n_adder_tree_inputs: Number of values to add
|
|
125
|
+
|
|
126
|
+
Actions:
|
|
127
|
+
- add
|
|
128
|
+
|
|
129
|
+
### Integer Max-Pool
|
|
130
|
+
A max-pooling unit that finds and outputs the maximum a set of values.
|
|
131
|
+
|
|
132
|
+
Class:
|
|
133
|
+
- max_pool
|
|
134
|
+
|
|
135
|
+
Required parameters:
|
|
136
|
+
- tech_node: The technology node in m
|
|
137
|
+
- n_bits: Number of bits for each input value
|
|
138
|
+
- pool_window: Number of values to compare
|
|
139
|
+
|
|
140
|
+
Actions:
|
|
141
|
+
- max_pool
|
|
142
|
+
|
|
143
|
+
### Multiplexer
|
|
144
|
+
An n-bit multiplexer
|
|
145
|
+
|
|
146
|
+
Class:
|
|
147
|
+
- mux
|
|
148
|
+
|
|
149
|
+
Required parameters:
|
|
150
|
+
- tech_node: The technology node in m
|
|
151
|
+
- n_bits: Number of bits for each input value
|
|
152
|
+
- n_inputs: Number of inputs to the mux
|
|
153
|
+
|
|
154
|
+
Actions:
|
|
155
|
+
- max_pool
|
|
156
|
+
|
|
157
|
+
### Flip-flop
|
|
158
|
+
A digital flip flop
|
|
159
|
+
|
|
160
|
+
Class:
|
|
161
|
+
- flip_flop
|
|
162
|
+
|
|
163
|
+
Required parameters:
|
|
164
|
+
- tech_node: The technology node in m
|
|
165
|
+
- n_bits: Number of flip flop bits
|
|
166
|
+
|
|
167
|
+
Actions:
|
|
168
|
+
- max_pool
|
|
169
|
+
|
|
170
|
+
### NOT, NAND, and NOR gates
|
|
171
|
+
Logic gates
|
|
172
|
+
|
|
173
|
+
Class:
|
|
174
|
+
- not_gate
|
|
175
|
+
- nand_gate
|
|
176
|
+
- nor_gate
|
|
177
|
+
|
|
178
|
+
Required parameters:
|
|
179
|
+
- tech_node: The technology node in m
|
|
180
|
+
|
|
181
|
+
Actions:
|
|
182
|
+
- read
|
|
183
|
+
|
|
184
|
+
### References
|
|
185
|
+
[1]X. Peng, S. Huang, Y. Luo, X. Sun, and S. Yu, “DNN+NeuroSim: An End-to-End
|
|
186
|
+
Benchmarking Framework for Compute-in-Memory Accelerators with Versatile Device
|
|
187
|
+
Technologies,” in 2019 IEEE International Electron Devices Meeting (IEDM), Dec.
|
|
188
|
+
2019, p. 32.5.1-32.5.4. doi: 10.1109/IEDM19573.2019.8993491.
|
|
189
|
+
|
|
190
|
+
[2]L. Pentecost, A. Hankin, M. Donato, M. Hempstead, G.-Y. Wei, and D. Brooks,
|
|
191
|
+
NVMExplorer: A Framework for Cross-Stack Comparisons of Embedded Non-Volatile
|
|
192
|
+
Memories. 2021.
|
|
193
|
+
|
|
194
|
+
[3]X. Dong, C. Xu, Y. Xie, and N. P. Jouppi, “NVSim: A Circuit-Level
|
|
195
|
+
Performance, Energy, and Area Model for Emerging Nonvolatile Memory,” IEEE
|
|
196
|
+
Transactions on Computer-Aided Design of Integrated Circuits and Systems, vol.
|
|
197
|
+
31, no. 7, pp. 994–1007, Jul. 2012, doi: 10.1109/TCAD.2012.2185930.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
gitdir: ../../.git/modules/hwcomponents_neurosim/DNN_NeuroSim_V1.3
|