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.
Files changed (162) hide show
  1. hwcomponents_neurosim-1.0.20/.github/workflows/publish.yaml +43 -0
  2. hwcomponents_neurosim-1.0.20/.gitignore +68 -0
  3. hwcomponents_neurosim-1.0.20/.gitmodules +3 -0
  4. hwcomponents_neurosim-1.0.20/MANIFEST.in +2 -0
  5. hwcomponents_neurosim-1.0.20/Makefile +10 -0
  6. hwcomponents_neurosim-1.0.20/PKG-INFO +211 -0
  7. hwcomponents_neurosim-1.0.20/README.md +197 -0
  8. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/.git +1 -0
  9. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Documents/DNN NeuroSim V1.3 Manual.pdf +0 -0
  10. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/Adder.cpp +253 -0
  11. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/Adder.h +76 -0
  12. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/AdderTree.cpp +197 -0
  13. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/AdderTree.h +77 -0
  14. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/BitShifter.cpp +128 -0
  15. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/BitShifter.h +75 -0
  16. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/Buffer.cpp +224 -0
  17. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/Buffer.h +91 -0
  18. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/Bus.cpp +194 -0
  19. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/Bus.h +77 -0
  20. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/Chip.cpp +1370 -0
  21. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/Chip.h +77 -0
  22. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/Comparator.cpp +228 -0
  23. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/Comparator.h +76 -0
  24. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/CurrentSenseAmp.cpp +334 -0
  25. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/CurrentSenseAmp.h +85 -0
  26. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/DFF.cpp +190 -0
  27. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/DFF.h +75 -0
  28. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/DeMux.cpp +192 -0
  29. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/DeMux.h +75 -0
  30. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/DecoderDriver.cpp +281 -0
  31. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/DecoderDriver.h +80 -0
  32. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/Definition.h +50 -0
  33. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/FunctionUnit.cpp +117 -0
  34. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/FunctionUnit.h +67 -0
  35. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/HTree.cpp +430 -0
  36. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/HTree.h +79 -0
  37. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/InputParameter.h +53 -0
  38. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/LevelShifter.cpp +201 -0
  39. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/LevelShifter.h +87 -0
  40. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/MaxPooling.cpp +247 -0
  41. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/MaxPooling.h +78 -0
  42. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/MemCell.h +89 -0
  43. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/MultilevelSAEncoder.cpp +215 -0
  44. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/MultilevelSAEncoder.h +75 -0
  45. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/MultilevelSenseAmp.cpp +462 -0
  46. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/MultilevelSenseAmp.h +89 -0
  47. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/Mux.cpp +200 -0
  48. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/Mux.h +80 -0
  49. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/NetWork_DenseNet40.csv +40 -0
  50. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/NetWork_ResNet18.csv +21 -0
  51. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/NetWork_VGG8.csv +8 -0
  52. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/NewMux.cpp +185 -0
  53. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/NewMux.h +76 -0
  54. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/NewSwitchMatrix.cpp +204 -0
  55. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/NewSwitchMatrix.h +91 -0
  56. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/Param.cpp +263 -0
  57. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/Param.h +80 -0
  58. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/Precharger.cpp +173 -0
  59. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/Precharger.h +78 -0
  60. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/ProcessingUnit.cpp +695 -0
  61. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/ProcessingUnit.h +61 -0
  62. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/ReadCircuit.cpp +239 -0
  63. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/ReadCircuit.h +86 -0
  64. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/RowDecoder.cpp +470 -0
  65. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/RowDecoder.h +81 -0
  66. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/SRAMWriteDriver.cpp +168 -0
  67. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/SRAMWriteDriver.h +74 -0
  68. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/SarADC.cpp +231 -0
  69. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/SarADC.h +84 -0
  70. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/SenseAmp.cpp +161 -0
  71. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/SenseAmp.h +75 -0
  72. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/ShiftAdd.cpp +221 -0
  73. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/ShiftAdd.h +83 -0
  74. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/Sigmoid.cpp +224 -0
  75. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/Sigmoid.h +93 -0
  76. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/SramNewSA.cpp +124 -0
  77. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/SramNewSA.h +70 -0
  78. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/SubArray.cpp +1608 -0
  79. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/SubArray.h +195 -0
  80. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/SwitchMatrix.cpp +302 -0
  81. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/SwitchMatrix.h +89 -0
  82. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/Technology.cpp +1504 -0
  83. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/Technology.h +85 -0
  84. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/Tile.cpp +700 -0
  85. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/Tile.h +67 -0
  86. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/VoltageSenseAmp.cpp +133 -0
  87. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/VoltageSenseAmp.h +78 -0
  88. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/WLDecoderOutput.cpp +239 -0
  89. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/WLDecoderOutput.h +77 -0
  90. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/WLNewDecoderDriver.cpp +272 -0
  91. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/WLNewDecoderDriver.h +43 -0
  92. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/constant.h +91 -0
  93. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/formula.cpp +614 -0
  94. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/formula.h +83 -0
  95. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/main.cpp +549 -0
  96. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/makefile +67 -0
  97. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/NeuroSIM/typedef.h +102 -0
  98. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/__init__.py +1 -0
  99. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/inference.py +152 -0
  100. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/log/DenseNet40.pth +0 -0
  101. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/log/VGG8.pth +0 -0
  102. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/models/DenseNet.py +135 -0
  103. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/models/ResNet.py +409 -0
  104. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/models/VGG.py +94 -0
  105. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/models/__pycache__/DenseNet.cpython-35.pyc +0 -0
  106. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/models/__pycache__/ResNet.cpython-35.pyc +0 -0
  107. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/models/__pycache__/VGG.cpython-35.pyc +0 -0
  108. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/models/__pycache__/dataset.cpython-35.pyc +0 -0
  109. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/models/dataset.py +110 -0
  110. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/modules/__pycache__/floatrange_cpu_np_infer.cpython-35.pyc +0 -0
  111. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/modules/__pycache__/quantization_cpu_np_infer.cpython-35.pyc +0 -0
  112. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/modules/__pycache__/quantization_cpu_np_infer.cpython-37.pyc +0 -0
  113. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/modules/floatrange_cpu_np_infer.py +75 -0
  114. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/modules/quantization_cpu_np_infer.py +329 -0
  115. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/train.py +185 -0
  116. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/utee/__pycache__/QSGD.cpython-35.pyc +0 -0
  117. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/utee/__pycache__/float_quantizer.cpython-35.pyc +0 -0
  118. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/utee/__pycache__/hook.cpython-35.pyc +0 -0
  119. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/utee/__pycache__/make_path.cpython-35.pyc +0 -0
  120. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/utee/__pycache__/misc.cpython-35.pyc +0 -0
  121. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/utee/__pycache__/wage_initializer.cpython-35.pyc +0 -0
  122. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/utee/__pycache__/wage_quantizer.cpython-35.pyc +0 -0
  123. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/utee/__pycache__/wage_util.cpython-35.pyc +0 -0
  124. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/utee/float_quantizer.py +22 -0
  125. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/utee/hook.py +132 -0
  126. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/utee/make_path.py +27 -0
  127. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/utee/misc.py +239 -0
  128. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/utee/wage_initializer.py +45 -0
  129. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/utee/wage_quantizer.py +315 -0
  130. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/Inference_pytorch/utee/wage_util.py +13 -0
  131. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/DNN_NeuroSim_V1.3/README.md +88 -0
  132. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/__init__.py +13 -0
  133. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/_version.py +34 -0
  134. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/cells/nvmexplorer_PCM.cell +17 -0
  135. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/cells/nvmexplorer_RRAM.cell +26 -0
  136. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/cells/nvmexplorer_SRAM.cell +4 -0
  137. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/cells/nvmexplorer_sttram.cell +19 -0
  138. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/cells/nvsim_PCRAM.cell +30 -0
  139. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/cells/nvsim_RRAM.cell +37 -0
  140. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/cells/nvsim_STTRAM.cell +23 -0
  141. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/cells/nvsim_STTRAM_aggressive.cell +23 -0
  142. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/cells/placeholder.cell +25 -0
  143. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/default_config.cfg +53 -0
  144. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/drop_in/MultilevelSenseAmp.cpp +449 -0
  145. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/drop_in/Param.cpp +320 -0
  146. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/drop_in/Param.h +97 -0
  147. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/drop_in/SubArray.cpp +1630 -0
  148. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/drop_in/Technology.cpp +1520 -0
  149. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/drop_in/Technology.h +87 -0
  150. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/drop_in/main.cpp +658 -0
  151. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/drop_in/typedef.h +103 -0
  152. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/main.py +1529 -0
  153. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim/neurointerface.py +701 -0
  154. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim.egg-info/PKG-INFO +211 -0
  155. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim.egg-info/SOURCES.txt +160 -0
  156. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim.egg-info/dependency_links.txt +1 -0
  157. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim.egg-info/requires.txt +1 -0
  158. hwcomponents_neurosim-1.0.20/hwcomponents_neurosim.egg-info/top_level.txt +2 -0
  159. hwcomponents_neurosim-1.0.20/license.txt +19 -0
  160. hwcomponents_neurosim-1.0.20/pyproject.toml +43 -0
  161. hwcomponents_neurosim-1.0.20/setup.cfg +4 -0
  162. 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,3 @@
1
+ [submodule "hwcomponents_neurosim/DNN_NeuroSim_V1.3"]
2
+ path = hwcomponents_neurosim/DNN_NeuroSim_V1.3
3
+ url = https://github.com/neurosim/DNN_NeuroSim_V1.3.git
@@ -0,0 +1,2 @@
1
+ recursive-include hwcomponents_neurosim/DNN_NeuroSim_V1.3 *
2
+ recursive-include hwcomponents_neurosim/drop_in *
@@ -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