digsim-logic-simulator 0.22.0__py3-none-any.whl

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 (107) hide show
  1. digsim/__init__.py +6 -0
  2. digsim/app/__main__.py +12 -0
  3. digsim/app/cli.py +68 -0
  4. digsim/app/gui/__init__.py +6 -0
  5. digsim/app/gui/_circuit_area.py +468 -0
  6. digsim/app/gui/_component_selection.py +154 -0
  7. digsim/app/gui/_main_window.py +163 -0
  8. digsim/app/gui/_top_bar.py +339 -0
  9. digsim/app/gui/_utils.py +26 -0
  10. digsim/app/gui/_warning_dialog.py +46 -0
  11. digsim/app/gui_objects/__init__.py +7 -0
  12. digsim/app/gui_objects/_bus_bit_object.py +94 -0
  13. digsim/app/gui_objects/_buzzer_object.py +97 -0
  14. digsim/app/gui_objects/_component_context_menu.py +79 -0
  15. digsim/app/gui_objects/_component_object.py +374 -0
  16. digsim/app/gui_objects/_component_port_item.py +63 -0
  17. digsim/app/gui_objects/_dip_switch_object.py +104 -0
  18. digsim/app/gui_objects/_gui_note_object.py +80 -0
  19. digsim/app/gui_objects/_gui_object_factory.py +80 -0
  20. digsim/app/gui_objects/_hexdigit_object.py +53 -0
  21. digsim/app/gui_objects/_image_objects.py +239 -0
  22. digsim/app/gui_objects/_label_object.py +97 -0
  23. digsim/app/gui_objects/_logic_analyzer_object.py +86 -0
  24. digsim/app/gui_objects/_seven_segment_object.py +131 -0
  25. digsim/app/gui_objects/_shortcut_objects.py +82 -0
  26. digsim/app/gui_objects/_yosys_object.py +32 -0
  27. digsim/app/gui_objects/images/AND.png +0 -0
  28. digsim/app/gui_objects/images/Analyzer.png +0 -0
  29. digsim/app/gui_objects/images/BUF.png +0 -0
  30. digsim/app/gui_objects/images/Buzzer.png +0 -0
  31. digsim/app/gui_objects/images/Clock.png +0 -0
  32. digsim/app/gui_objects/images/DFF.png +0 -0
  33. digsim/app/gui_objects/images/DIP_SWITCH.png +0 -0
  34. digsim/app/gui_objects/images/FlipFlop.png +0 -0
  35. digsim/app/gui_objects/images/IC.png +0 -0
  36. digsim/app/gui_objects/images/LED_OFF.png +0 -0
  37. digsim/app/gui_objects/images/LED_ON.png +0 -0
  38. digsim/app/gui_objects/images/MUX.png +0 -0
  39. digsim/app/gui_objects/images/NAND.png +0 -0
  40. digsim/app/gui_objects/images/NOR.png +0 -0
  41. digsim/app/gui_objects/images/NOT.png +0 -0
  42. digsim/app/gui_objects/images/ONE.png +0 -0
  43. digsim/app/gui_objects/images/OR.png +0 -0
  44. digsim/app/gui_objects/images/PB.png +0 -0
  45. digsim/app/gui_objects/images/Switch_OFF.png +0 -0
  46. digsim/app/gui_objects/images/Switch_ON.png +0 -0
  47. digsim/app/gui_objects/images/XNOR.png +0 -0
  48. digsim/app/gui_objects/images/XOR.png +0 -0
  49. digsim/app/gui_objects/images/YOSYS.png +0 -0
  50. digsim/app/gui_objects/images/ZERO.png +0 -0
  51. digsim/app/images/app_icon.png +0 -0
  52. digsim/app/model/__init__.py +6 -0
  53. digsim/app/model/_model.py +210 -0
  54. digsim/app/model/_model_components.py +162 -0
  55. digsim/app/model/_model_new_wire.py +57 -0
  56. digsim/app/model/_model_objects.py +155 -0
  57. digsim/app/model/_model_settings.py +35 -0
  58. digsim/app/model/_model_shortcuts.py +72 -0
  59. digsim/app/settings/__init__.py +8 -0
  60. digsim/app/settings/_component_settings.py +415 -0
  61. digsim/app/settings/_gui_settings.py +71 -0
  62. digsim/app/settings/_shortcut_dialog.py +39 -0
  63. digsim/circuit/__init__.py +7 -0
  64. digsim/circuit/_circuit.py +329 -0
  65. digsim/circuit/_waves_writer.py +61 -0
  66. digsim/circuit/components/__init__.py +26 -0
  67. digsim/circuit/components/_bus_bits.py +68 -0
  68. digsim/circuit/components/_button.py +44 -0
  69. digsim/circuit/components/_buzzer.py +45 -0
  70. digsim/circuit/components/_clock.py +54 -0
  71. digsim/circuit/components/_dip_switch.py +73 -0
  72. digsim/circuit/components/_flip_flops.py +99 -0
  73. digsim/circuit/components/_gates.py +246 -0
  74. digsim/circuit/components/_hexdigit.py +82 -0
  75. digsim/circuit/components/_ic.py +36 -0
  76. digsim/circuit/components/_label_wire.py +167 -0
  77. digsim/circuit/components/_led.py +18 -0
  78. digsim/circuit/components/_logic_analyzer.py +60 -0
  79. digsim/circuit/components/_mem64kbyte.py +42 -0
  80. digsim/circuit/components/_memstdout.py +37 -0
  81. digsim/circuit/components/_note.py +25 -0
  82. digsim/circuit/components/_on_off_switch.py +54 -0
  83. digsim/circuit/components/_seven_segment.py +28 -0
  84. digsim/circuit/components/_static_level.py +28 -0
  85. digsim/circuit/components/_static_value.py +44 -0
  86. digsim/circuit/components/_yosys_atoms.py +1353 -0
  87. digsim/circuit/components/_yosys_component.py +232 -0
  88. digsim/circuit/components/atoms/__init__.py +23 -0
  89. digsim/circuit/components/atoms/_component.py +280 -0
  90. digsim/circuit/components/atoms/_digsim_exception.py +8 -0
  91. digsim/circuit/components/atoms/_port.py +398 -0
  92. digsim/circuit/components/ic/74162.json +1331 -0
  93. digsim/circuit/components/ic/7448.json +834 -0
  94. digsim/storage_model/__init__.py +7 -0
  95. digsim/storage_model/_app.py +58 -0
  96. digsim/storage_model/_circuit.py +126 -0
  97. digsim/synth/__init__.py +6 -0
  98. digsim/synth/__main__.py +67 -0
  99. digsim/synth/_synthesis.py +156 -0
  100. digsim/utils/__init__.py +6 -0
  101. digsim/utils/_yosys_netlist.py +134 -0
  102. digsim_logic_simulator-0.22.0.dist-info/METADATA +140 -0
  103. digsim_logic_simulator-0.22.0.dist-info/RECORD +107 -0
  104. digsim_logic_simulator-0.22.0.dist-info/WHEEL +5 -0
  105. digsim_logic_simulator-0.22.0.dist-info/entry_points.txt +2 -0
  106. digsim_logic_simulator-0.22.0.dist-info/licenses/LICENSE.md +32 -0
  107. digsim_logic_simulator-0.22.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,140 @@
1
+ Metadata-Version: 2.4
2
+ Name: digsim-logic-simulator
3
+ Version: 0.22.0
4
+ Summary: Interactive Digital Logic Simulator
5
+ Author-email: Fredrik Andersson <freand@gmail.com>
6
+ Maintainer-email: Fredrik Andersson <freand@gmail.com>
7
+ Project-URL: homepage, https://github.com/freand76/digsim
8
+ Keywords: educational,simulation,digital
9
+ Classifier: Development Status :: 5 - Production/Stable
10
+ Classifier: Programming Language :: Python :: 3
11
+ Classifier: Programming Language :: Python :: 3.10
12
+ Classifier: Programming Language :: Python :: 3.11
13
+ Classifier: Programming Language :: Python :: 3.12
14
+ Classifier: Programming Language :: Python :: 3.13
15
+ Classifier: Programming Language :: Python :: 3.14
16
+ Classifier: Programming Language :: Python :: 3 :: Only
17
+ Requires-Python: >=3.10
18
+ Description-Content-Type: text/markdown
19
+ License-File: LICENSE.md
20
+ Requires-Dist: pyvcd==0.4.1
21
+ Requires-Dist: pyside6==6.10.1
22
+ Requires-Dist: pexpect==4.9.0
23
+ Requires-Dist: pydantic==2.12.5
24
+ Requires-Dist: qtawesome==1.4.0
25
+ Requires-Dist: yowasp-yosys==0.60.0.0.post1055
26
+ Dynamic: license-file
27
+
28
+ # DigSim - Interactive Digital Logic Simulator
29
+
30
+ ![Python Version from PEP 621 TOML](https://img.shields.io/python/required-version-toml?tomlFilePath=https%3A%2F%2Fraw.githubusercontent.com%2Ffreand76%2Fdigsim%2Fmain%2Fpyproject.toml)
31
+ ![PyPI - Version](https://img.shields.io/pypi/v/digsim-logic-simulator)
32
+ ![PyPI - Downloads](https://img.shields.io/pypi/dm/digsim-logic-simulator)
33
+
34
+ <p align="center">
35
+ <img alt="The DigSim Application" src="https://raw.githubusercontent.com/freand76/digsim/af1bf95eb16d1af19f26159a4c1e1b88565703d7/docs/images/screenshot_digsim_app.png" width=85%>
36
+ </p>
37
+
38
+ ## Introduction
39
+
40
+ DigSim is a python based framework for digital circuit simulation.
41
+ The main purpose of the software is to, in an educational way, play around with digital logic (simple gates and verilog designs).
42
+
43
+ When working with block design in Verilog/VHDL the simulation tools are normally fed with test stimuli (a very non-interactive way of working...)
44
+ A block design can be synthesized and tested on an FPGA (where there are possibilities for interactivity if buttons and LED/Hex digits are available),
45
+ but that often has a great cost in time (and sometimes money) leading to long turnaround time.
46
+
47
+ I started developing DigSim to make it easy to implement and visualize the functionality of simple verlog modules.
48
+ During development I tried to synthesize larger verilog designs, such as the classic [6502 CPU](https://en.wikipedia.org/wiki/MOS_Technology_6502),
49
+ and even if it is slower than many other simulators it is not entirely useless.
50
+
51
+ ### Features
52
+ * Create and simulate a circuit using python code
53
+ * Create and simulate a circuit **interactively** using the GUI
54
+ * Create new components using synthesized verilog code
55
+ * Save simulation results in VCD files, which can be opened in for example GTKWave.
56
+
57
+ ## Quickstart
58
+
59
+ ### Install from PyPi (Option 1)
60
+ ```
61
+ pip3 install digsim-logic-simulator
62
+ ```
63
+
64
+ ### Install from GitHub (Option 2)
65
+ ```
66
+ > git clone https://github.com/freand76/digsim.git
67
+ > cd digsim
68
+ > python3 -m pip install .
69
+ ```
70
+
71
+ ### Start Interactive GUI
72
+
73
+ **Prerequisites:** Install by using *Option 1* or *Option 2* above.
74
+
75
+ ```
76
+ > python3 -m digsim.app
77
+ ```
78
+
79
+ or
80
+
81
+ ```
82
+ > digsim-logic-simulator
83
+ ```
84
+
85
+ ### Start using uv
86
+
87
+ **Prerequisites:** Download and install [uv](https://docs.astral.sh/uv/)
88
+
89
+ ```
90
+ > uvx digsim-logic-simulator
91
+ ```
92
+
93
+ **Note: Ubuntu**
94
+
95
+ If your Ubuntu installation gives the folloing error message:
96
+
97
+ *qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.*
98
+ *This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.*
99
+
100
+ *Available platform plugins are: vnc, wayland, wayland-egl, eglfs, offscreen, xcb, minimal, linuxfb, vkkhrdisplay, minimalegl.*
101
+
102
+ Then the following package must be installed:
103
+ ```
104
+ > apt install libxcb-cursor0
105
+ ```
106
+
107
+ ### Start with example circuit (example circuits are available in the github repository)
108
+ ```
109
+ > python3 -m digsim.app --load example_circuits/counter_yosys_netlist.circuit
110
+ ```
111
+
112
+ ### Run example (examples are available in the github repository)
113
+ ```
114
+ > python3 examples/example_sr.py
115
+ ```
116
+
117
+ ### Look at waveforms
118
+ ```
119
+ > python3 examples/example_sr.py
120
+ > gtkwave sr.vcd
121
+ ```
122
+
123
+ ### Examples of writing pytest/python test benches for synthesized verilog code
124
+ ```
125
+ > pytest examples/pytest_tb
126
+ ```
127
+
128
+ ## Yosys synthesis helper tool
129
+
130
+ ```
131
+ > python3 -m digsim.synth synth -i <verilog file 1> <optional verilog file 2> -o <output_file.json> -t <verilog top_module>
132
+ ```
133
+
134
+ ## Documentation
135
+
136
+ [Documentation](https://github.com/freand76/digsim/blob/main/docs/documentation.md) on GitHub
137
+
138
+ ## Star History
139
+
140
+ [![Star History Chart](https://api.star-history.com/svg?repos=freand76/digsim&type=Date)](https://star-history.com/#freand76/digsim&Date)
@@ -0,0 +1,107 @@
1
+ digsim/__init__.py,sha256=cPP3o3Poil_rxQh3syOJd0MuqU4sPnudjaesG18GF8E,154
2
+ digsim/app/__main__.py,sha256=zqlL-Ap_HuVp31CIVsjBKqZjpZTM_BIRb9PHqy4Id_o,209
3
+ digsim/app/cli.py,sha256=j1J-nhmuAR5RCQUphEftyhPfYU3GtnQrM7gIRUTBY94,1903
4
+ digsim/app/gui/__init__.py,sha256=jLV8w5SIh4PadWA3UDnLk2strI3_xEIfQEt5Sb62YUc,170
5
+ digsim/app/gui/_circuit_area.py,sha256=zwQ2tVujriY2DdQI4Jy7anebh0Ul5od99HDDphZQTdo,16590
6
+ digsim/app/gui/_component_selection.py,sha256=LTVSA3xd85jqULn6GfrBnmfDeP_iYlj4_UjKUd_4FHQ,6590
7
+ digsim/app/gui/_main_window.py,sha256=2IIlcU8Dj_zGA2joHq525AcUe74Wv7oCDHekmZ_-n7M,5430
8
+ digsim/app/gui/_top_bar.py,sha256=JSP-aF5oFZ-1uHA5SNyRThpHLs9YVnTPA65h2EhxCN4,13067
9
+ digsim/app/gui/_utils.py,sha256=GMPIucfMQhXGwX91CGmeoRpxS8qwOfDLUI76fPJWk0I,665
10
+ digsim/app/gui/_warning_dialog.py,sha256=N9G2wyQTyiqMnTtbExMzHgdbCBA0epfhNWY4GVF6xH8,1496
11
+ digsim/app/gui_objects/__init__.py,sha256=VYR64j5VX8yavCXoPGtPMS4mJpJR6NSRxvXPuSdxFX0,248
12
+ digsim/app/gui_objects/_bus_bit_object.py,sha256=qKZg1SLds9LNq3DUTR7dtM_3gosrfhENopKd0gpqTMY,3059
13
+ digsim/app/gui_objects/_buzzer_object.py,sha256=f-Kgrf5r5iUZMHXy2kmzxDDA0ROMPAPNJbguMSrdEu4,3294
14
+ digsim/app/gui_objects/_component_context_menu.py,sha256=pPhvNYO5lR6J61_NKJt5HPBRiypSuMAIcbcWoZU4DIA,2824
15
+ digsim/app/gui_objects/_component_object.py,sha256=ntD34AEqaJovzDYMrlxOrdyjqprPU_urWUbznnBQNTM,13323
16
+ digsim/app/gui_objects/_component_port_item.py,sha256=ZbnQAX_BOTF3rxDQKKyX-wB29sHoF3QpoHv5010Cu8c,2104
17
+ digsim/app/gui_objects/_dip_switch_object.py,sha256=8-YJdkcg0UXxbkxmyq4Ep4ZezZOkxCw6tfQ5Yq3mOlE,3636
18
+ digsim/app/gui_objects/_gui_note_object.py,sha256=qPB0OBq6jxKlqH8yoV2wchDFqrJdjB3AP993hDj1Kcs,2592
19
+ digsim/app/gui_objects/_gui_object_factory.py,sha256=T9TeQVh-DHbOwnn2BtwI0gxnubgp0vUmT36O0b1grLk,2466
20
+ digsim/app/gui_objects/_hexdigit_object.py,sha256=0psnY8dMVZwGmoQeETbhgwilJOyjF8eqx2zaVwdWqVY,1935
21
+ digsim/app/gui_objects/_image_objects.py,sha256=WsWesxfRbGO1cSbXD7nikw7E-gx8A-af458Q52xk0dU,7677
22
+ digsim/app/gui_objects/_label_object.py,sha256=DrmgWW5ACJksd2P3lUUog7CRBj7RWzCkTfvhb6LQCxM,3585
23
+ digsim/app/gui_objects/_logic_analyzer_object.py,sha256=WK-EsthfXzfDDnGA8-wgq_7RhuKwdyQ_KWdXitov-Zk,3078
24
+ digsim/app/gui_objects/_seven_segment_object.py,sha256=KpCOQNmSQ5EX_WRbTACawfNo5fCZ4aWyZTcU_5yy6r0,4370
25
+ digsim/app/gui_objects/_shortcut_objects.py,sha256=8gKAAlv0AlBowDp726EsDBxj1KSwSJne74_bqz0jh08,2747
26
+ digsim/app/gui_objects/_yosys_object.py,sha256=iq8Zmw4tV_sJuULcKEu7mvvK_m19m2ymypLqCawnCyI,958
27
+ digsim/app/gui_objects/images/AND.png,sha256=d53gEcxIlfqmW-Q4Za3n5i_NmSEcjJqlbh8XxoSdR3o,12062
28
+ digsim/app/gui_objects/images/Analyzer.png,sha256=1OrkKsL6ktxKI12KzNJT7rgEi2X-jAqp6vrVuVthErY,1591
29
+ digsim/app/gui_objects/images/BUF.png,sha256=fd8DqEM3aht4cjoWuqsbHlTiQaFa9ddibe3iel1WYLo,12819
30
+ digsim/app/gui_objects/images/Buzzer.png,sha256=sdAQehr03pEpQXrm2RTqUqDpUI15WU1ohFf4fB90uvI,5856
31
+ digsim/app/gui_objects/images/Clock.png,sha256=NAsu1IKb2tiZ_oFs3C7t7Wzc3xzq-1PBLVm7NcT9whQ,3117
32
+ digsim/app/gui_objects/images/DFF.png,sha256=OalrTM4XbMouEeB0xXg8nPy3gZzMxwnvgtF149XsTl0,9038
33
+ digsim/app/gui_objects/images/DIP_SWITCH.png,sha256=8t2gdexuHn9Z3lUi7B7hNM71IxRMulgAn8T5TlFPqPM,16899
34
+ digsim/app/gui_objects/images/FlipFlop.png,sha256=PLCMrH0CBXU6jgDTPpGsgEAqmgNN3c5hvU1sjZzOU40,4452
35
+ digsim/app/gui_objects/images/IC.png,sha256=7YoAkD_5CrTIdmArjD_HjZyT9odAYuCwufDDpVC3Jsw,5493
36
+ digsim/app/gui_objects/images/LED_OFF.png,sha256=bk-X-R-l8CvdD-xat0zI5pc9S1t6j0Ewx4G_vMt1sRE,7075
37
+ digsim/app/gui_objects/images/LED_ON.png,sha256=YSYDNx8zjFoqEy9kuognaL8eL0acuVHV7b4ArlK_ol4,9389
38
+ digsim/app/gui_objects/images/MUX.png,sha256=d8Q0qUJIRCdFQbxAg_sc4MJG3F6QRTbCT4ysgkCm6DE,1912
39
+ digsim/app/gui_objects/images/NAND.png,sha256=W-dZPNg2Qh0M-FkA8Gbblh42EvMKtBI37IenZKDIbLE,11718
40
+ digsim/app/gui_objects/images/NOR.png,sha256=eFaignMSIiUPJnc8VkIQ9Yg1iF6qVjrM9sA50EGqp9g,15091
41
+ digsim/app/gui_objects/images/NOT.png,sha256=V1QoUHpBbEX2Tish4DIe_wImAVj-M9DL5QrNIKNo-nQ,12593
42
+ digsim/app/gui_objects/images/ONE.png,sha256=ftnpl7_gMTLc08k08Ka_QfnLv5H1u5AhPitZNPe_42E,1212
43
+ digsim/app/gui_objects/images/OR.png,sha256=54lsnUphLRwY9ioOOqAsRW0KRVTNOHZOPBKosXUTAOc,14870
44
+ digsim/app/gui_objects/images/PB.png,sha256=bhnhD-Ood9hSBFr-aia2iCPT_Q7VYBaEq076sqU3DBY,8468
45
+ digsim/app/gui_objects/images/Switch_OFF.png,sha256=ta11PvVIajT2gugj_SPK3mLn9_WaluqAK3t4aks9a-8,4752
46
+ digsim/app/gui_objects/images/Switch_ON.png,sha256=fVo6Vi89-Fv32SsyWcRL9N7eDwDrTe1_hX6_602BR5A,4819
47
+ digsim/app/gui_objects/images/XNOR.png,sha256=yoDcf5vn_OtcUnQQ3qSTLRqVTNBF_fmaGlpvXpWw_HE,14610
48
+ digsim/app/gui_objects/images/XOR.png,sha256=yHfL2LnWVeepTunrgUF3Z5m3dVpQ1iuNL6EGKI1TAKs,16118
49
+ digsim/app/gui_objects/images/YOSYS.png,sha256=etTO9jadU0amxQG7ySRjD6fME4HjrEEqXttM4XWDzxU,3117
50
+ digsim/app/gui_objects/images/ZERO.png,sha256=hXnZgEVO3T_zN5CiFhu6cIXr19LAu6SdvX-sIOq06E4,3459
51
+ digsim/app/images/app_icon.png,sha256=OfPoYA4o4Af79DTqQxSNLca0FdXRHEYteBK-xCQFEAw,16041
52
+ digsim/app/model/__init__.py,sha256=v7NoGYYBXUiDPwL_lDalLP0tgkIq_F5UCFUm-hVBy4U,164
53
+ digsim/app/model/_model.py,sha256=4bNiDWPUcppQBRsxsF_nkxe9pGuJ-NG9lBsiIb60NzM,6721
54
+ digsim/app/model/_model_components.py,sha256=nWIQ5Bgt61UF7pzqnBSjLW35nat_pQUIMiH-bLDHlk0,6262
55
+ digsim/app/model/_model_new_wire.py,sha256=cLzzM813638suuBf2BRe6rrqkyVKwLMqWBwo3bI0PYk,1873
56
+ digsim/app/model/_model_objects.py,sha256=b_0oTBj2S_ZHZ0FBC9Imv7eHpkOgLmuMZ-4HWrvSadY,5136
57
+ digsim/app/model/_model_settings.py,sha256=o6C6x5q7hKC_HgjdCJpl9FLIAL6uBV4O5Qx4E879AWI,1022
58
+ digsim/app/model/_model_shortcuts.py,sha256=PVQ9KJffS5CzUfH-DYCgzucHlXFy3zZAytuxI2bn2kA,2092
59
+ digsim/app/settings/__init__.py,sha256=MRLxBhuNUMYo-PHWo-xcoYwH_l4sU_RIWI_ONIU-qBs,313
60
+ digsim/app/settings/_component_settings.py,sha256=z89KfVfS5oLg6Wd6DhsFygvG6RBqRgXpyLiKl9gqOW8,16288
61
+ digsim/app/settings/_gui_settings.py,sha256=_Nfq8qGis--7dEgeDGgaY5xxBRALKDzn7jKfDiaSK-Q,2764
62
+ digsim/app/settings/_shortcut_dialog.py,sha256=SkuPoF6SlujBH7-xKT6n6jB507Fc1qRPzugFMrUDNJo,1461
63
+ digsim/circuit/__init__.py,sha256=mBQZEeYYYxEnWOdKcFlM_7-alC4nkEMbf55iqAVeGc0,221
64
+ digsim/circuit/_circuit.py,sha256=w9ha-5ymrGic5ZPkJRY_oL5ESNKwp-svjyNyLGeyJm8,11467
65
+ digsim/circuit/_waves_writer.py,sha256=ZedBa2TbWuq-zDc1MQyANmQOMDGGzNMSh4nKPuqXCkA,2092
66
+ digsim/circuit/components/__init__.py,sha256=5DXrkwFJ3C4xUsvjV7ahiRnwBZLNaadY88i4qOgcaqQ,1272
67
+ digsim/circuit/components/_bus_bits.py,sha256=Ds8dL_lMG2phX2rphe9jenSjDk4asDYddl5g9-IIcpg,1921
68
+ digsim/circuit/components/_button.py,sha256=5alsssihwR33iTv6HuN06fgVRftqwl5tRX05rqdSWY8,913
69
+ digsim/circuit/components/_buzzer.py,sha256=Vo2nPXmdrdAX1r4aXWWAuA6OyejPTRb7nyMCVQAfLFw,1130
70
+ digsim/circuit/components/_clock.py,sha256=21i0ViVn6GTGQUepUMTOSbLmcWAksGKmU4y7ZBmU3P8,1492
71
+ digsim/circuit/components/_dip_switch.py,sha256=biDG6SvepN5xyezC5BxJsq94yoMy2Xn92gBxPU7HIag,1812
72
+ digsim/circuit/components/_flip_flops.py,sha256=T6sHhV-hVCCKnFDOnL9A-t8vcSo1opQszv9EIsqZw2I,2947
73
+ digsim/circuit/components/_gates.py,sha256=K_aFT4GTo4JF_zoaNYiCRZfZEx4vEibMHZSCDImfPHQ,7167
74
+ digsim/circuit/components/_hexdigit.py,sha256=LB_RhWnaNqcaMKon66nlAVL_jkEqz_pyQ2FlW6Chapw,2264
75
+ digsim/circuit/components/_ic.py,sha256=8iUbuyQqM5glEcpDCJD2OdwSxr1TG5AtKOXU4I3qlWI,922
76
+ digsim/circuit/components/_label_wire.py,sha256=KWFtNy1Tp7PzMsDIfJHbLxpekQeuRW5h53haz6kzevE,5169
77
+ digsim/circuit/components/_led.py,sha256=7Ctvp7YI6U38W7X9XCbfbg0s5LI5Hz7UoeKtSxzTQrw,457
78
+ digsim/circuit/components/_logic_analyzer.py,sha256=A0UvmEwDpwc8vqIk44rI5l1_fsySDGxO4GsStGOByG0,1814
79
+ digsim/circuit/components/_mem64kbyte.py,sha256=6OdrCZW5L-qY7hvENxVVCHUnmyUTAfIacFOwv9v-tEw,1487
80
+ digsim/circuit/components/_memstdout.py,sha256=vqUlDx9E4azy4gpjcgTH3Ns2poiqcflNBIYHMg97LWs,1260
81
+ digsim/circuit/components/_note.py,sha256=apvXDTqegAtQ3XbWEEm3hEhFAakmPPrbveupqfwtrBo,609
82
+ digsim/circuit/components/_on_off_switch.py,sha256=GZAyUUCUpdHpXigqJnoDDZcq3HTKTOFdHO_IyM9eECc,1205
83
+ digsim/circuit/components/_seven_segment.py,sha256=WZnGw27ElQo__eV-M6bn-UYY17lTRgwTNWwReMJE8dY,802
84
+ digsim/circuit/components/_static_level.py,sha256=Y5tVEjwX2LVpc31iWop2qQDJPZR5NdvLq1D3o2Yo6p0,682
85
+ digsim/circuit/components/_static_value.py,sha256=48Jkj5qsDLOfvtYYNnKxoU9rVlIa9BzCJ89At9Dvyqg,1241
86
+ digsim/circuit/components/_yosys_atoms.py,sha256=NeH8XjjpoACHBfQRqR5RJxWorZhSjGk0t73cJOviSZw,37599
87
+ digsim/circuit/components/_yosys_component.py,sha256=EDcvFMNGVj-hxKUUNeWWQ74sFyA3vCxbd0MKX942S9w,8797
88
+ digsim/circuit/components/atoms/__init__.py,sha256=tQuxYg6mCz72GCJ1qognO0J3upTKmZR-VhH1IdKnbSg,514
89
+ digsim/circuit/components/atoms/_component.py,sha256=4_pbo25DbVoHdoDVok67NqltanTZwcj-8NH-Q4mKdOw,9255
90
+ digsim/circuit/components/atoms/_digsim_exception.py,sha256=vSBuRWVl5HXQBEqwKjnPm55LWGUdYar5NQCJAVyQ1xg,178
91
+ digsim/circuit/components/atoms/_port.py,sha256=6zqdzflqUYAJgoC-gtFb9eBYHgCX9mhUJD2-KqqDPPA,13009
92
+ digsim/circuit/components/ic/74162.json,sha256=VBgfDOT_lok7-JudUOI8GKFsaj7qqlFpm0orGYBNLiw,35767
93
+ digsim/circuit/components/ic/7448.json,sha256=4lmKGRP06g3NjkkK2On7htIQyuOlE7g7ZUr10OEiLcY,20651
94
+ digsim/storage_model/__init__.py,sha256=lubmO9_BCUtEahyW1yE7f3aGHngEevGIwf_0LeOB7Y8,289
95
+ digsim/storage_model/_app.py,sha256=JoI9C2w_90e6IyEaQENDxQtf2ag7obhMhLD-Jz_kI1Q,1617
96
+ digsim/storage_model/_circuit.py,sha256=VhQ96jZMbVjCE2XBQ8D0ABA8sG0SiI5oyc_GZZYfNfw,3978
97
+ digsim/synth/__init__.py,sha256=Y-uEO51auZrxHJ7mj61a0ou4c75XNVyDpYDrLHfee9w,185
98
+ digsim/synth/__main__.py,sha256=M8lMBUO6oHENospJCj43Ed40w0bX0_E6yL-_O8g9LWg,2178
99
+ digsim/synth/_synthesis.py,sha256=g2zw0M3E6xiYLwY2WOKi9-uJ5YtNeVwCpFviuXfhUHk,5197
100
+ digsim/utils/__init__.py,sha256=sUWzEcR3aTo8uDqi9oMDs04XLa-uUXFSgLuhkbSvaNs,196
101
+ digsim/utils/_yosys_netlist.py,sha256=CKx2V1Jcg1_ZzphSL25-iaTkSIJKEC9-GcX8FomkASw,4049
102
+ digsim_logic_simulator-0.22.0.dist-info/licenses/LICENSE.md,sha256=FrvohZfyfpH4xrvKdXiQ5hD7dUB7w4DcsRA3p-pOmLw,1693
103
+ digsim_logic_simulator-0.22.0.dist-info/METADATA,sha256=cOm9M17VmpGQAIIjueDK7O55xzkxreKfNl-igglXGho,4823
104
+ digsim_logic_simulator-0.22.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
105
+ digsim_logic_simulator-0.22.0.dist-info/entry_points.txt,sha256=Z-C6VY83KwN8ADP0Don6edzLcF31kvhgFvI05hwjwXk,63
106
+ digsim_logic_simulator-0.22.0.dist-info/top_level.txt,sha256=qpCMzQKADZHVqZIoQgFrv3qJ3u7PPU73gTCXQglqLa8,7
107
+ digsim_logic_simulator-0.22.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (80.9.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ digsim-logic-simulator = digsim.app.cli:main
@@ -0,0 +1,32 @@
1
+ The Clear BSD License
2
+
3
+ Copyright (c) 2023-2024, Fredrik Andersson
4
+ All rights reserved.
5
+
6
+ Redistribution and use in source and binary forms, with or without
7
+ modification, are permitted provided that the following conditions are met:
8
+
9
+ * Redistributions of source code must retain the above copyright notice, this
10
+ list of conditions and the following disclaimer.
11
+
12
+ * Redistributions in binary form must reproduce the above copyright notice,
13
+ this list of conditions and the following disclaimer in the documentation
14
+ and/or other materials provided with the distribution.
15
+
16
+ * Neither the name of the copyright holder nor the names of its
17
+ contributors may be used to endorse or promote products derived from
18
+ this software without specific prior written permission.
19
+
20
+ NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED BY THIS
21
+ LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
23
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
25
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
27
+ GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
30
+ OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
+
32
+ -------------------------------------------------------------------------------