hwcomponents-dsent 1.0.3__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 (197) hide show
  1. hwcomponents_dsent-1.0.3/.github/workflows/publish.yaml +94 -0
  2. hwcomponents_dsent-1.0.3/.gitignore +68 -0
  3. hwcomponents_dsent-1.0.3/CLAUDE.md +27 -0
  4. hwcomponents_dsent-1.0.3/Makefile +26 -0
  5. hwcomponents_dsent-1.0.3/PKG-INFO +65 -0
  6. hwcomponents_dsent-1.0.3/README.md +51 -0
  7. hwcomponents_dsent-1.0.3/hwcomponents_dsent/__init__.py +6 -0
  8. hwcomponents_dsent-1.0.3/hwcomponents_dsent/_version.py +24 -0
  9. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/DSENT.cc +343 -0
  10. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/DSENT.h +69 -0
  11. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/LICENSE +19 -0
  12. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/README +374 -0
  13. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/configs/electrical-clos.cfg +84 -0
  14. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/configs/electrical-link.cfg +57 -0
  15. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/configs/electrical-mesh.cfg +81 -0
  16. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/configs/example.cfg +40 -0
  17. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/configs/photonic-clos.cfg +112 -0
  18. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/configs/photonic-link.cfg +75 -0
  19. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/configs/router.cfg +131 -0
  20. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/libutil/Assert.h +43 -0
  21. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/libutil/Calculator.cc +273 -0
  22. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/libutil/Calculator.h +125 -0
  23. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/libutil/Config.cc +118 -0
  24. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/libutil/Config.h +37 -0
  25. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/libutil/Exception.cc +38 -0
  26. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/libutil/Exception.h +50 -0
  27. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/libutil/LibUtil.h +58 -0
  28. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/libutil/Log.cc +107 -0
  29. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/libutil/Log.h +64 -0
  30. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/libutil/Map.h +263 -0
  31. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/libutil/MathUtil.cc +28 -0
  32. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/libutil/MathUtil.h +42 -0
  33. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/libutil/String.cc +368 -0
  34. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/libutil/String.h +239 -0
  35. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/main.cc +47 -0
  36. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/ElectricalModel.cc +892 -0
  37. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/ElectricalModel.h +265 -0
  38. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/EventInfo.cc +107 -0
  39. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/EventInfo.h +53 -0
  40. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/Model.cc +719 -0
  41. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/Model.h +244 -0
  42. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/ModelGen.cc +327 -0
  43. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/ModelGen.h +51 -0
  44. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/OpticalModel.cc +298 -0
  45. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/OpticalModel.h +164 -0
  46. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/PortInfo.cc +56 -0
  47. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/PortInfo.h +58 -0
  48. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/TransitionInfo.cc +91 -0
  49. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/TransitionInfo.h +71 -0
  50. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/BarrelShifter.cc +262 -0
  51. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/BarrelShifter.h +55 -0
  52. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/BroadcastHTree.cc +421 -0
  53. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/BroadcastHTree.h +75 -0
  54. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/DFFRAM.cc +342 -0
  55. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/DFFRAM.h +54 -0
  56. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/Decoder.cc +256 -0
  57. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/Decoder.h +54 -0
  58. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/DemuxTreeDeserializer.cc +399 -0
  59. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/DemuxTreeDeserializer.h +54 -0
  60. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/MatrixArbiter.cc +455 -0
  61. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/MatrixArbiter.h +54 -0
  62. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/Multiplexer.cc +368 -0
  63. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/Multiplexer.h +55 -0
  64. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/MultiplexerCrossbar.cc +235 -0
  65. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/MultiplexerCrossbar.h +59 -0
  66. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/MuxTreeSerializer.cc +247 -0
  67. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/MuxTreeSerializer.h +54 -0
  68. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/OR.cc +260 -0
  69. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/OR.h +57 -0
  70. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/RepeatedLink.cc +326 -0
  71. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/RepeatedLink.h +65 -0
  72. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/RippleAdder.cc +127 -0
  73. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/RippleAdder.h +51 -0
  74. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/SeparableAllocator.cc +291 -0
  75. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/SeparableAllocator.h +54 -0
  76. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/TestModel.cc +239 -0
  77. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/TestModel.h +53 -0
  78. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/router/Router.cc +557 -0
  79. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/router/Router.h +67 -0
  80. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/router/RouterInputPort.cc +222 -0
  81. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/router/RouterInputPort.h +54 -0
  82. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/router/RouterSwitchAllocator.cc +220 -0
  83. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/router/RouterSwitchAllocator.h +54 -0
  84. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/network/ElectricalClos.cc +510 -0
  85. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/network/ElectricalClos.h +58 -0
  86. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/network/ElectricalMesh.cc +317 -0
  87. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/network/ElectricalMesh.h +58 -0
  88. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/network/PhotonicClos.cc +533 -0
  89. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/network/PhotonicClos.h +58 -0
  90. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical/GatedLaserSource.cc +127 -0
  91. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical/GatedLaserSource.h +54 -0
  92. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical/LaserSource.cc +126 -0
  93. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical/LaserSource.h +54 -0
  94. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical/OpticalLinkBackendRx.cc +385 -0
  95. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical/OpticalLinkBackendRx.h +60 -0
  96. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical/OpticalLinkBackendTx.cc +376 -0
  97. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical/OpticalLinkBackendTx.h +60 -0
  98. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical/OpticalTestModel.cc +142 -0
  99. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical/OpticalTestModel.h +51 -0
  100. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical/RingDetector.cc +359 -0
  101. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical/RingDetector.h +75 -0
  102. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical/RingFilter.cc +98 -0
  103. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical/RingFilter.h +51 -0
  104. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical/RingModulator.cc +424 -0
  105. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical/RingModulator.h +75 -0
  106. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical/SWMRLink.cc +330 -0
  107. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical/SWMRLink.h +59 -0
  108. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical/SWSRLink.cc +349 -0
  109. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical/SWSRLink.h +59 -0
  110. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical/ThrottledLaserSource.cc +158 -0
  111. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical/ThrottledLaserSource.h +61 -0
  112. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical_graph/OpticalDetector.cc +53 -0
  113. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical_graph/OpticalDetector.h +66 -0
  114. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical_graph/OpticalFilter.cc +86 -0
  115. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical_graph/OpticalFilter.h +69 -0
  116. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical_graph/OpticalGraph.cc +237 -0
  117. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical_graph/OpticalGraph.h +83 -0
  118. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical_graph/OpticalLaser.cc +52 -0
  119. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical_graph/OpticalLaser.h +53 -0
  120. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical_graph/OpticalModulator.cc +75 -0
  121. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical_graph/OpticalModulator.h +72 -0
  122. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical_graph/OpticalNode.cc +117 -0
  123. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical_graph/OpticalNode.h +113 -0
  124. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical_graph/OpticalReceiver.h +46 -0
  125. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical_graph/OpticalTransmitter.h +49 -0
  126. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical_graph/OpticalWaveguide.cc +41 -0
  127. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical_graph/OpticalWaveguide.h +48 -0
  128. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical_graph/OpticalWavelength.cc +150 -0
  129. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical_graph/OpticalWavelength.h +78 -0
  130. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/ADDF.cc +692 -0
  131. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/ADDF.h +60 -0
  132. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/AND2.cc +293 -0
  133. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/AND2.h +53 -0
  134. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/BUF.cc +237 -0
  135. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/BUF.h +54 -0
  136. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/CellMacros.cc +498 -0
  137. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/CellMacros.h +78 -0
  138. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/DFFQ.cc +557 -0
  139. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/DFFQ.h +59 -0
  140. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/INV.cc +240 -0
  141. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/INV.h +55 -0
  142. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/LATQ.cc +401 -0
  143. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/LATQ.h +55 -0
  144. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/MUX2.cc +441 -0
  145. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/MUX2.h +55 -0
  146. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/NAND2.cc +288 -0
  147. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/NAND2.h +54 -0
  148. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/NOR2.cc +289 -0
  149. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/NOR2.h +54 -0
  150. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/OR2.cc +300 -0
  151. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/OR2.h +54 -0
  152. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/StdCell.cc +92 -0
  153. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/StdCell.h +74 -0
  154. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/StdCellLib.cc +201 -0
  155. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/StdCellLib.h +84 -0
  156. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/XOR2.cc +366 -0
  157. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/XOR2.h +55 -0
  158. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/timing_graph/ElectricalDelay.cc +76 -0
  159. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/timing_graph/ElectricalDelay.h +64 -0
  160. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/timing_graph/ElectricalDriver.cc +116 -0
  161. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/timing_graph/ElectricalDriver.h +78 -0
  162. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/timing_graph/ElectricalDriverMultiplier.cc +74 -0
  163. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/timing_graph/ElectricalDriverMultiplier.h +63 -0
  164. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/timing_graph/ElectricalLoad.cc +70 -0
  165. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/timing_graph/ElectricalLoad.h +64 -0
  166. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/timing_graph/ElectricalNet.cc +94 -0
  167. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/timing_graph/ElectricalNet.h +71 -0
  168. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/timing_graph/ElectricalTimingNode.cc +195 -0
  169. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/timing_graph/ElectricalTimingNode.h +125 -0
  170. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/timing_graph/ElectricalTimingOptimizer.cc +94 -0
  171. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/timing_graph/ElectricalTimingOptimizer.h +51 -0
  172. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/timing_graph/ElectricalTimingTree.cc +268 -0
  173. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/timing_graph/ElectricalTimingTree.h +94 -0
  174. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/tech/TechModel.cc +344 -0
  175. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/tech/TechModel.h +96 -0
  176. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/tech/tech_models/Bulk22LVT.model +199 -0
  177. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/tech/tech_models/Bulk32LVT.model +188 -0
  178. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/tech/tech_models/Bulk45LVT.model +188 -0
  179. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/tech/tech_models/Photonics.model +109 -0
  180. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/tech/tech_models/TG11LVT.model +201 -0
  181. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/util/CommonType.h +57 -0
  182. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/util/Constants.cc +41 -0
  183. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/util/Constants.h +42 -0
  184. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/util/Result.cc +270 -0
  185. hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/util/Result.h +126 -0
  186. hwcomponents_dsent-1.0.3/hwcomponents_dsent/hwcomponents_dsent.py +430 -0
  187. hwcomponents_dsent-1.0.3/hwcomponents_dsent.egg-info/PKG-INFO +65 -0
  188. hwcomponents_dsent-1.0.3/hwcomponents_dsent.egg-info/SOURCES.txt +195 -0
  189. hwcomponents_dsent-1.0.3/hwcomponents_dsent.egg-info/dependency_links.txt +1 -0
  190. hwcomponents_dsent-1.0.3/hwcomponents_dsent.egg-info/requires.txt +1 -0
  191. hwcomponents_dsent-1.0.3/hwcomponents_dsent.egg-info/scm_file_list.json +191 -0
  192. hwcomponents_dsent-1.0.3/hwcomponents_dsent.egg-info/scm_version.json +8 -0
  193. hwcomponents_dsent-1.0.3/hwcomponents_dsent.egg-info/top_level.txt +2 -0
  194. hwcomponents_dsent-1.0.3/license.txt +19 -0
  195. hwcomponents_dsent-1.0.3/pyproject.toml +38 -0
  196. hwcomponents_dsent-1.0.3/setup.cfg +4 -0
  197. hwcomponents_dsent-1.0.3/setup.py +73 -0
@@ -0,0 +1,94 @@
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
+ build-sdist:
13
+ name: Build sdist
14
+ runs-on: ubuntu-latest
15
+ steps:
16
+ - uses: actions/checkout@v4
17
+ with:
18
+ fetch-depth: 0
19
+ submodules: recursive
20
+ - name: Set up Python
21
+ uses: actions/setup-python@v5
22
+ with:
23
+ python-version: "3.12"
24
+ - name: Install dependencies
25
+ run: |
26
+ python -m pip install --upgrade pip
27
+ pip install build
28
+ - name: Build sdist
29
+ env:
30
+ PYTHONPATH: ${{ github.workspace }}
31
+ run: |
32
+ python -m build --sdist
33
+ - name: Upload sdist
34
+ uses: actions/upload-artifact@v4
35
+ with:
36
+ name: dist-sdist
37
+ path: dist/*.tar.gz
38
+
39
+ # The wheel ships a native dsent binary, so each platform needs its own
40
+ # py3-none-<platform> wheel. Wheels are built from the sdist so the version
41
+ # comes from its PKG-INFO rather than git (which is unavailable in the
42
+ # manylinux container). cibuildwheel builds Linux wheels in a manylinux
43
+ # container and repairs them to a tag PyPI accepts. Platforms without a
44
+ # wheel fall back to the sdist, which compiles dsent at install time.
45
+ build-wheels:
46
+ name: Build wheel on ${{ matrix.os }}
47
+ runs-on: ${{ matrix.os }}
48
+ needs: build-sdist
49
+ strategy:
50
+ matrix:
51
+ os: [ubuntu-latest, macos-latest]
52
+ steps:
53
+ - uses: actions/download-artifact@v4
54
+ with:
55
+ name: dist-sdist
56
+ path: sdist
57
+ - name: Locate sdist
58
+ id: sdist
59
+ shell: bash
60
+ run: echo "path=$(ls sdist/*.tar.gz)" >> "$GITHUB_OUTPUT"
61
+ - name: Build wheel
62
+ uses: pypa/cibuildwheel@v3.4
63
+ env:
64
+ CIBW_BUILD: "cp312-manylinux_x86_64 cp312-macosx_*"
65
+ CIBW_ARCHS_MACOS: native
66
+ CIBW_TEST_COMMAND: >-
67
+ python -c "from hwcomponents_dsent import Router;
68
+ print(Router(tech_node=45e-9, flit_width=64).route_flit())"
69
+ with:
70
+ package-dir: ${{ steps.sdist.outputs.path }}
71
+ output-dir: wheelhouse
72
+ - name: Upload wheel
73
+ uses: actions/upload-artifact@v4
74
+ with:
75
+ name: dist-${{ matrix.os }}
76
+ path: wheelhouse/*.whl
77
+
78
+ pypi-publish:
79
+ name: Publish to PyPI
80
+ runs-on: ubuntu-latest
81
+ needs: [build-wheels, build-sdist]
82
+ environment:
83
+ name: pypi
84
+ url: https://pypi.org/p/hwcomponents-dsent
85
+ permissions:
86
+ id-token: write
87
+ steps:
88
+ - uses: actions/download-artifact@v4
89
+ with:
90
+ pattern: dist-*
91
+ merge-multiple: true
92
+ path: dist
93
+ - name: Publish package distributions to PyPI
94
+ 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
+ hwcomponents_dsent/dsent_inputs_outputs
66
+ hwcomponents_dsent/_version.py
67
+ hwcomponents_dsent/dsent/dsent
68
+ .obj/
@@ -0,0 +1,27 @@
1
+ # CLAUDE.md
2
+
3
+ This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
+
5
+ ## Overview
6
+
7
+ `hwcomponents_dsent` is a plug-in for [HWComponents](https://accelergy-project.github.io/hwcomponents/) providing NoC `Router` and `NoCLink` models backed by DSENT. It is a sibling of `hwcomponents-cacti` and deliberately mirrors its structure (subprocess call + content-addressed on-disk cache + tech-node interpolation).
8
+
9
+ ## Build / install
10
+
11
+ ```bash
12
+ make build # compiles all hwcomponents_dsent/dsent/**/*.cc into hwcomponents_dsent/dsent/dsent (objects in .obj/)
13
+ make clean
14
+ pip install -e . # setup.py's build hook runs `make build`
15
+ hwc --list | grep -iE 'router|link'
16
+ ```
17
+
18
+ Python >= 3.12; `hwcomponents` must be importable at build time (setuptools-scm version scheme). No test suite; smoke-test with `python -c "from hwcomponents_dsent import Router; print(Router(tech_node=45e-9, flit_width=64).route_flit())"`.
19
+
20
+ ## Architecture
21
+
22
+ - **DSENT source** (`hwcomponents_dsent/dsent/`) is gem5's DSENT copy with its Python-2 C extension (`interface.cc`) and CMake file removed. `main.cc` is our standalone driver: `dsent <cfg> <out>` builds the model from the cfg, runs its `EvaluateString`, and writes each `print "name" expr;` result as `name\tvalue` to `<out>`. DSENT `ASSERT`s abort the process, which is why it runs as a subprocess rather than an extension.
23
+ - **DSENT builds the model from the cfg once** (parameters, then properties, then optional timing optimization to `1/Frequency`). All structural parameters must be in the cfg; nothing can be changed after build.
24
+ - **`_call_dsent`** formats a full cfg from a params dict plus an `evaluate` dict (output name → DSENT calculator expression like `$(Energy>>Router:WriteBuffer)`), hashes it, and caches results in `hwcomponents_dsent/dsent_inputs_outputs/` under an `fcntl` lock. Per-event energies (J), `NddPower` leakage (W), and `Area` (m²) come out in SI units; no conversion is done.
25
+ - **`_interp_tech_node`** interpolates between bulk 22/32/45nm tech models (TG11 only with `include_11nm_trigate=True`). Out-of-range scaling matches hwcomponents-cacti's intent. Scaling class is chosen by output-name prefix (`area*` → area, `leak*` → leakage), so name new outputs accordingly.
26
+ - **Clock power is leakage**: `Router` folds `DistributeClock` energy × frequency into `leak_power` (`self.clock_power`).
27
+ - `ActionCost.throughput` is actions/second: `frequency × n_ports` for router actions, `frequency` for link `send`. Latency is `pipeline_stages / frequency` (router) or `delay` (link, defaults to one cycle and also sets DSENT's repeater-sizing target).
@@ -0,0 +1,26 @@
1
+ .PHONY: build install clean
2
+
3
+ DSENT_DIR := hwcomponents_dsent/dsent
4
+ OBJ_DIR := .obj
5
+ DSENT_SRCS := $(shell find $(DSENT_DIR) -name '*.cc')
6
+ DSENT_OBJS := $(patsubst $(DSENT_DIR)/%.cc,$(OBJ_DIR)/%.o,$(DSENT_SRCS))
7
+ CXX ?= g++
8
+ CXXFLAGS ?= -O2 -std=c++11 -w
9
+ CXXFLAGS += -I$(DSENT_DIR)
10
+
11
+ build: $(DSENT_DIR)/dsent
12
+ test -x $(DSENT_DIR)/dsent
13
+
14
+ $(DSENT_DIR)/dsent: $(DSENT_OBJS)
15
+ $(CXX) $(CXXFLAGS) -o $@ $^
16
+
17
+ $(OBJ_DIR)/%.o: $(DSENT_DIR)/%.cc
18
+ @mkdir -p $(dir $@)
19
+ $(CXX) $(CXXFLAGS) -c -o $@ $<
20
+
21
+ install:
22
+ $(MAKE) build
23
+ pip3 install .
24
+
25
+ clean:
26
+ rm -rf $(OBJ_DIR) $(DSENT_DIR)/dsent
@@ -0,0 +1,65 @@
1
+ Metadata-Version: 2.4
2
+ Name: hwcomponents_dsent
3
+ Version: 1.0.3
4
+ Summary: A package for estimating the energy and area of on-chip network routers and links with DSENT
5
+ Author-email: Arunkumar Vaidyanathan <vaidyanathan@ice.rwth-aachen.de>
6
+ License-Expression: MIT
7
+ Keywords: accelerator,hardware,energy,estimation,DSENT,NoC
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-DSENT
16
+
17
+ This package connects [DSENT](https://github.com/gem5/gem5/tree/stable/ext/dsent) to HWComponents.
18
+ It provides models for electrical network-on-chip routers and links.
19
+
20
+ These models are for use with the HWComponents package, found at
21
+ https://accelergy-project.github.io/hwcomponents/.
22
+
23
+ ## Installation
24
+
25
+ ```bash
26
+ make build # compile the standalone DSENT executable
27
+ pip install .
28
+
29
+ # Check that the installation is successful
30
+ hwc --list | grep -iE 'router|link'
31
+ ```
32
+
33
+ ## Models
34
+
35
+ - `Router`: input-buffered virtual-channel router. Actions: `route_flit` (buffer write +
36
+ buffer read + switch arbitration + crossbar traversal), and the individual
37
+ `write_buffer`, `read_buffer`, `arbitrate`, `traverse_crossbar`. Clock-tree power is
38
+ activity-independent and is included in `leak_power`.
39
+ - `NoCLink`: repeated-wire link. Action: `send`.
40
+
41
+ ```python
42
+ from hwcomponents_dsent import Router, NoCLink
43
+
44
+ router = Router(tech_node=22e-9, flit_width=64, n_in_ports=5, n_out_ports=5)
45
+ link = NoCLink(tech_node=22e-9, width=64, length=1e-3)
46
+ print(router.route_flit(), router.leak_power, router.area)
47
+ print(link.send(), link.leak_power, link.area)
48
+ ```
49
+
50
+ DSENT ships 22, 32, and 45nm bulk technology models. Other nodes are linearly
51
+ interpolated or extrapolated. Pass `include_11nm_trigate=True` to also use DSENT's 11nm
52
+ tri-gate model.
53
+
54
+ ## Citation
55
+
56
+ ```bibtex
57
+ @inproceedings{sun2012dsent,
58
+ author={Sun, Chen and Chen, Chia-Hsin Owen and Kurian, George and Wei, Lan and Miller, Jason and Agarwal, Anant and Peh, Li-Shiuan and Stojanovic, Vladimir},
59
+ booktitle={2012 IEEE/ACM Sixth International Symposium on Networks-on-Chip (NOCS)},
60
+ title={DSENT - A Tool Connecting Emerging Photonics with Electronics for Opto-Electronic Networks-on-Chip Modeling},
61
+ year={2012},
62
+ pages={201-210},
63
+ doi={10.1109/NOCS.2012.31}
64
+ }
65
+ ```
@@ -0,0 +1,51 @@
1
+ # HWComponents-DSENT
2
+
3
+ This package connects [DSENT](https://github.com/gem5/gem5/tree/stable/ext/dsent) to HWComponents.
4
+ It provides models for electrical network-on-chip routers and links.
5
+
6
+ These models are for use with the HWComponents package, found at
7
+ https://accelergy-project.github.io/hwcomponents/.
8
+
9
+ ## Installation
10
+
11
+ ```bash
12
+ make build # compile the standalone DSENT executable
13
+ pip install .
14
+
15
+ # Check that the installation is successful
16
+ hwc --list | grep -iE 'router|link'
17
+ ```
18
+
19
+ ## Models
20
+
21
+ - `Router`: input-buffered virtual-channel router. Actions: `route_flit` (buffer write +
22
+ buffer read + switch arbitration + crossbar traversal), and the individual
23
+ `write_buffer`, `read_buffer`, `arbitrate`, `traverse_crossbar`. Clock-tree power is
24
+ activity-independent and is included in `leak_power`.
25
+ - `NoCLink`: repeated-wire link. Action: `send`.
26
+
27
+ ```python
28
+ from hwcomponents_dsent import Router, NoCLink
29
+
30
+ router = Router(tech_node=22e-9, flit_width=64, n_in_ports=5, n_out_ports=5)
31
+ link = NoCLink(tech_node=22e-9, width=64, length=1e-3)
32
+ print(router.route_flit(), router.leak_power, router.area)
33
+ print(link.send(), link.leak_power, link.area)
34
+ ```
35
+
36
+ DSENT ships 22, 32, and 45nm bulk technology models. Other nodes are linearly
37
+ interpolated or extrapolated. Pass `include_11nm_trigate=True` to also use DSENT's 11nm
38
+ tri-gate model.
39
+
40
+ ## Citation
41
+
42
+ ```bibtex
43
+ @inproceedings{sun2012dsent,
44
+ author={Sun, Chen and Chen, Chia-Hsin Owen and Kurian, George and Wei, Lan and Miller, Jason and Agarwal, Anant and Peh, Li-Shiuan and Stojanovic, Vladimir},
45
+ booktitle={2012 IEEE/ACM Sixth International Symposium on Networks-on-Chip (NOCS)},
46
+ title={DSENT - A Tool Connecting Emerging Photonics with Electronics for Opto-Electronic Networks-on-Chip Modeling},
47
+ year={2012},
48
+ pages={201-210},
49
+ doi={10.1109/NOCS.2012.31}
50
+ }
51
+ ```
@@ -0,0 +1,6 @@
1
+ from .hwcomponents_dsent import *
2
+
3
+ __all__ = [
4
+ "Router",
5
+ "NoCLink",
6
+ ]
@@ -0,0 +1,24 @@
1
+ # file generated by vcs-versioning
2
+ # don't change, don't track in version control
3
+ from __future__ import annotations
4
+
5
+ __all__ = [
6
+ "__version__",
7
+ "__version_tuple__",
8
+ "version",
9
+ "version_tuple",
10
+ "__commit_id__",
11
+ "commit_id",
12
+ ]
13
+
14
+ version: str
15
+ __version__: str
16
+ __version_tuple__: tuple[int | str, ...]
17
+ version_tuple: tuple[int | str, ...]
18
+ commit_id: str | None
19
+ __commit_id__: str | None
20
+
21
+ __version__ = version = '1.0.3'
22
+ __version_tuple__ = version_tuple = (1, 0, 3)
23
+
24
+ __commit_id__ = commit_id = 'g05a9fef7c'