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.
- hwcomponents_dsent-1.0.3/.github/workflows/publish.yaml +94 -0
- hwcomponents_dsent-1.0.3/.gitignore +68 -0
- hwcomponents_dsent-1.0.3/CLAUDE.md +27 -0
- hwcomponents_dsent-1.0.3/Makefile +26 -0
- hwcomponents_dsent-1.0.3/PKG-INFO +65 -0
- hwcomponents_dsent-1.0.3/README.md +51 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/__init__.py +6 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/_version.py +24 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/DSENT.cc +343 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/DSENT.h +69 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/LICENSE +19 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/README +374 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/configs/electrical-clos.cfg +84 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/configs/electrical-link.cfg +57 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/configs/electrical-mesh.cfg +81 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/configs/example.cfg +40 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/configs/photonic-clos.cfg +112 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/configs/photonic-link.cfg +75 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/configs/router.cfg +131 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/libutil/Assert.h +43 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/libutil/Calculator.cc +273 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/libutil/Calculator.h +125 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/libutil/Config.cc +118 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/libutil/Config.h +37 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/libutil/Exception.cc +38 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/libutil/Exception.h +50 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/libutil/LibUtil.h +58 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/libutil/Log.cc +107 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/libutil/Log.h +64 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/libutil/Map.h +263 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/libutil/MathUtil.cc +28 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/libutil/MathUtil.h +42 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/libutil/String.cc +368 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/libutil/String.h +239 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/main.cc +47 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/ElectricalModel.cc +892 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/ElectricalModel.h +265 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/EventInfo.cc +107 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/EventInfo.h +53 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/Model.cc +719 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/Model.h +244 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/ModelGen.cc +327 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/ModelGen.h +51 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/OpticalModel.cc +298 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/OpticalModel.h +164 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/PortInfo.cc +56 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/PortInfo.h +58 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/TransitionInfo.cc +91 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/TransitionInfo.h +71 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/BarrelShifter.cc +262 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/BarrelShifter.h +55 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/BroadcastHTree.cc +421 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/BroadcastHTree.h +75 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/DFFRAM.cc +342 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/DFFRAM.h +54 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/Decoder.cc +256 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/Decoder.h +54 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/DemuxTreeDeserializer.cc +399 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/DemuxTreeDeserializer.h +54 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/MatrixArbiter.cc +455 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/MatrixArbiter.h +54 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/Multiplexer.cc +368 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/Multiplexer.h +55 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/MultiplexerCrossbar.cc +235 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/MultiplexerCrossbar.h +59 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/MuxTreeSerializer.cc +247 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/MuxTreeSerializer.h +54 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/OR.cc +260 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/OR.h +57 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/RepeatedLink.cc +326 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/RepeatedLink.h +65 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/RippleAdder.cc +127 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/RippleAdder.h +51 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/SeparableAllocator.cc +291 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/SeparableAllocator.h +54 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/TestModel.cc +239 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/TestModel.h +53 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/router/Router.cc +557 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/router/Router.h +67 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/router/RouterInputPort.cc +222 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/router/RouterInputPort.h +54 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/router/RouterSwitchAllocator.cc +220 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/electrical/router/RouterSwitchAllocator.h +54 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/network/ElectricalClos.cc +510 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/network/ElectricalClos.h +58 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/network/ElectricalMesh.cc +317 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/network/ElectricalMesh.h +58 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/network/PhotonicClos.cc +533 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/network/PhotonicClos.h +58 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical/GatedLaserSource.cc +127 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical/GatedLaserSource.h +54 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical/LaserSource.cc +126 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical/LaserSource.h +54 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical/OpticalLinkBackendRx.cc +385 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical/OpticalLinkBackendRx.h +60 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical/OpticalLinkBackendTx.cc +376 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical/OpticalLinkBackendTx.h +60 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical/OpticalTestModel.cc +142 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical/OpticalTestModel.h +51 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical/RingDetector.cc +359 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical/RingDetector.h +75 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical/RingFilter.cc +98 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical/RingFilter.h +51 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical/RingModulator.cc +424 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical/RingModulator.h +75 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical/SWMRLink.cc +330 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical/SWMRLink.h +59 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical/SWSRLink.cc +349 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical/SWSRLink.h +59 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical/ThrottledLaserSource.cc +158 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical/ThrottledLaserSource.h +61 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical_graph/OpticalDetector.cc +53 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical_graph/OpticalDetector.h +66 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical_graph/OpticalFilter.cc +86 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical_graph/OpticalFilter.h +69 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical_graph/OpticalGraph.cc +237 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical_graph/OpticalGraph.h +83 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical_graph/OpticalLaser.cc +52 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical_graph/OpticalLaser.h +53 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical_graph/OpticalModulator.cc +75 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical_graph/OpticalModulator.h +72 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical_graph/OpticalNode.cc +117 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical_graph/OpticalNode.h +113 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical_graph/OpticalReceiver.h +46 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical_graph/OpticalTransmitter.h +49 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical_graph/OpticalWaveguide.cc +41 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical_graph/OpticalWaveguide.h +48 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical_graph/OpticalWavelength.cc +150 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/optical_graph/OpticalWavelength.h +78 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/ADDF.cc +692 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/ADDF.h +60 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/AND2.cc +293 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/AND2.h +53 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/BUF.cc +237 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/BUF.h +54 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/CellMacros.cc +498 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/CellMacros.h +78 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/DFFQ.cc +557 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/DFFQ.h +59 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/INV.cc +240 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/INV.h +55 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/LATQ.cc +401 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/LATQ.h +55 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/MUX2.cc +441 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/MUX2.h +55 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/NAND2.cc +288 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/NAND2.h +54 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/NOR2.cc +289 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/NOR2.h +54 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/OR2.cc +300 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/OR2.h +54 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/StdCell.cc +92 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/StdCell.h +74 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/StdCellLib.cc +201 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/StdCellLib.h +84 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/XOR2.cc +366 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/std_cells/XOR2.h +55 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/timing_graph/ElectricalDelay.cc +76 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/timing_graph/ElectricalDelay.h +64 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/timing_graph/ElectricalDriver.cc +116 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/timing_graph/ElectricalDriver.h +78 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/timing_graph/ElectricalDriverMultiplier.cc +74 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/timing_graph/ElectricalDriverMultiplier.h +63 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/timing_graph/ElectricalLoad.cc +70 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/timing_graph/ElectricalLoad.h +64 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/timing_graph/ElectricalNet.cc +94 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/timing_graph/ElectricalNet.h +71 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/timing_graph/ElectricalTimingNode.cc +195 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/timing_graph/ElectricalTimingNode.h +125 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/timing_graph/ElectricalTimingOptimizer.cc +94 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/timing_graph/ElectricalTimingOptimizer.h +51 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/timing_graph/ElectricalTimingTree.cc +268 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/model/timing_graph/ElectricalTimingTree.h +94 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/tech/TechModel.cc +344 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/tech/TechModel.h +96 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/tech/tech_models/Bulk22LVT.model +199 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/tech/tech_models/Bulk32LVT.model +188 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/tech/tech_models/Bulk45LVT.model +188 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/tech/tech_models/Photonics.model +109 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/tech/tech_models/TG11LVT.model +201 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/util/CommonType.h +57 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/util/Constants.cc +41 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/util/Constants.h +42 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/util/Result.cc +270 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/dsent/util/Result.h +126 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent/hwcomponents_dsent.py +430 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent.egg-info/PKG-INFO +65 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent.egg-info/SOURCES.txt +195 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent.egg-info/dependency_links.txt +1 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent.egg-info/requires.txt +1 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent.egg-info/scm_file_list.json +191 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent.egg-info/scm_version.json +8 -0
- hwcomponents_dsent-1.0.3/hwcomponents_dsent.egg-info/top_level.txt +2 -0
- hwcomponents_dsent-1.0.3/license.txt +19 -0
- hwcomponents_dsent-1.0.3/pyproject.toml +38 -0
- hwcomponents_dsent-1.0.3/setup.cfg +4 -0
- 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,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'
|