digsim-logic-simulator 0.12.0__py3-none-any.whl → 0.14.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.

Potentially problematic release.


This version of digsim-logic-simulator might be problematic. Click here for more details.

Files changed (74) hide show
  1. digsim/__init__.py +1 -1
  2. digsim/app/__main__.py +17 -13
  3. digsim/app/gui/__init__.py +1 -1
  4. digsim/app/gui/_circuit_area.py +32 -21
  5. digsim/app/gui/_component_selection.py +3 -1
  6. digsim/app/gui/_main_window.py +1 -1
  7. digsim/app/gui/_top_bar.py +1 -1
  8. digsim/app/gui/_utils.py +1 -1
  9. digsim/app/gui_objects/__init__.py +2 -2
  10. digsim/app/gui_objects/_bus_bit_object.py +1 -1
  11. digsim/app/gui_objects/_buzzer_object.py +7 -7
  12. digsim/app/gui_objects/_component_context_menu.py +2 -2
  13. digsim/app/gui_objects/_component_object.py +11 -10
  14. digsim/app/gui_objects/_component_port_item.py +1 -3
  15. digsim/app/gui_objects/_dip_switch_object.py +6 -5
  16. digsim/app/gui_objects/_gui_note_object.py +11 -12
  17. digsim/app/gui_objects/_gui_object_factory.py +2 -2
  18. digsim/app/gui_objects/_hexdigit_object.py +1 -1
  19. digsim/app/gui_objects/_image_objects.py +8 -6
  20. digsim/app/gui_objects/_label_object.py +4 -3
  21. digsim/app/gui_objects/_logic_analyzer_object.py +19 -10
  22. digsim/app/gui_objects/_seven_segment_object.py +11 -4
  23. digsim/app/gui_objects/_shortcut_objects.py +4 -3
  24. digsim/app/gui_objects/_yosys_object.py +1 -1
  25. digsim/app/model/__init__.py +1 -1
  26. digsim/app/model/_model.py +8 -4
  27. digsim/app/model/_model_components.py +2 -5
  28. digsim/app/model/_model_new_wire.py +3 -2
  29. digsim/app/model/_model_objects.py +2 -6
  30. digsim/app/model/_model_settings.py +2 -2
  31. digsim/app/model/_model_shortcuts.py +1 -15
  32. digsim/app/settings/__init__.py +1 -1
  33. digsim/app/settings/_component_settings.py +2 -2
  34. digsim/app/settings/_gui_settings.py +1 -1
  35. digsim/app/settings/_shortcut_dialog.py +4 -5
  36. digsim/circuit/__init__.py +1 -1
  37. digsim/circuit/_circuit.py +52 -38
  38. digsim/circuit/components/__init__.py +1 -1
  39. digsim/circuit/components/_bus_bits.py +1 -1
  40. digsim/circuit/components/_button.py +2 -6
  41. digsim/circuit/components/_buzzer.py +1 -1
  42. digsim/circuit/components/_clock.py +1 -1
  43. digsim/circuit/components/_dip_switch.py +1 -1
  44. digsim/circuit/components/_flip_flops.py +1 -1
  45. digsim/circuit/components/_hexdigit.py +1 -1
  46. digsim/circuit/components/_ic.py +1 -1
  47. digsim/circuit/components/_label_wire.py +1 -1
  48. digsim/circuit/components/_led.py +1 -1
  49. digsim/circuit/components/_logic_analyzer.py +1 -1
  50. digsim/circuit/components/_mem64kbyte.py +1 -1
  51. digsim/circuit/components/_memstdout.py +1 -1
  52. digsim/circuit/components/_note.py +1 -1
  53. digsim/circuit/components/_on_off_switch.py +1 -1
  54. digsim/circuit/components/_seven_segment.py +1 -1
  55. digsim/circuit/components/_static_level.py +1 -1
  56. digsim/circuit/components/_static_value.py +1 -1
  57. digsim/circuit/components/_yosys_component.py +2 -2
  58. digsim/circuit/components/atoms/__init__.py +1 -0
  59. digsim/circuit/components/atoms/_component.py +14 -4
  60. digsim/circuit/components/atoms/_digsim_exception.py +1 -1
  61. digsim/circuit/components/atoms/_port.py +45 -29
  62. digsim/storage_model/_app.py +8 -3
  63. digsim/storage_model/_circuit.py +16 -8
  64. digsim/synth/__init__.py +1 -1
  65. digsim/synth/__main__.py +3 -3
  66. digsim/synth/_synthesis.py +6 -3
  67. digsim/utils/__init__.py +1 -1
  68. digsim/utils/_yosys_netlist.py +10 -4
  69. {digsim_logic_simulator-0.12.0.dist-info → digsim_logic_simulator-0.14.0.dist-info}/METADATA +4 -5
  70. digsim_logic_simulator-0.14.0.dist-info/RECORD +105 -0
  71. digsim_logic_simulator-0.12.0.dist-info/RECORD +0 -105
  72. {digsim_logic_simulator-0.12.0.dist-info → digsim_logic_simulator-0.14.0.dist-info}/WHEEL +0 -0
  73. {digsim_logic_simulator-0.12.0.dist-info → digsim_logic_simulator-0.14.0.dist-info}/licenses/LICENSE.md +0 -0
  74. {digsim_logic_simulator-0.12.0.dist-info → digsim_logic_simulator-0.14.0.dist-info}/top_level.txt +0 -0
@@ -6,10 +6,14 @@
6
6
  from __future__ import annotations
7
7
 
8
8
  import abc
9
+ from typing import Literal, Optional, Union
9
10
 
10
11
  from ._digsim_exception import DigsimException
11
12
 
12
13
 
14
+ VALUE_TYPE = Union[int, Literal["X"]]
15
+
16
+
13
17
  class PortConnectionError(DigsimException):
14
18
  """Exception for illegal connections"""
15
19
 
@@ -23,8 +27,8 @@ class Port(abc.ABC):
23
27
  self._width: int = width # The bit-width of this port
24
28
  self._output: bool = output # Is this port an output port
25
29
  self._wired_ports: list[Port] = [] # The ports that this port drives
26
- self._value: int | str | None = None # The value of this port
27
- self._edge_detect_value: int | str | None = "X" # Last edge detect value
30
+ self._value: VALUE_TYPE = "X" # The value of this port
31
+ self._edge_detect_value: VALUE_TYPE = "X" # Last edge detect value
28
32
  self.init() # Initialize the port
29
33
 
30
34
  def init(self):
@@ -39,12 +43,12 @@ class Port(abc.ABC):
39
43
  return self._wired_ports
40
44
 
41
45
  @property
42
- def value(self) -> int | str | None:
46
+ def value(self) -> VALUE_TYPE:
43
47
  """Get the value of the port, can be "X" """
44
48
  return self._value
45
49
 
46
50
  @value.setter
47
- def value(self, value: int | str | None):
51
+ def value(self, value: VALUE_TYPE):
48
52
  """Set the value of the port"""
49
53
  self.set_value(value)
50
54
 
@@ -60,7 +64,7 @@ class Port(abc.ABC):
60
64
  driver = self.get_driver()
61
65
  if driver is not None:
62
66
  driver.disconnect(self)
63
- for port in self._wired_ports:
67
+ for port in self._wired_ports[:]:
64
68
  self.disconnect(port)
65
69
  self._width = width
66
70
 
@@ -98,7 +102,7 @@ class Port(abc.ABC):
98
102
  """Get parent component"""
99
103
  return self._parent
100
104
 
101
- def update_wires(self, value: int | str | None):
105
+ def update_wires(self, value: VALUE_TYPE):
102
106
  """Update connected wires (and self._value) with value"""
103
107
  if self._value == value:
104
108
  return
@@ -106,11 +110,21 @@ class Port(abc.ABC):
106
110
  for port in self._wired_ports:
107
111
  port.value = self._value
108
112
 
109
- def get_wired_ports_recursive(self) -> list[Port]:
110
- """Get all connected ports (recursive)"""
111
- all_wired_ports = [self]
112
- for port in self._wired_ports:
113
- all_wired_ports.extend(port.get_wired_ports_recursive())
113
+ def get_wired_ports_recursive(self, processed_ports: Optional[set] = None) -> list[Port]:
114
+ """Get all connected ports (iterative), avoiding duplicates."""
115
+ if processed_ports is None:
116
+ processed_ports = set()
117
+
118
+ all_wired_ports = []
119
+ ports_to_process = [self]
120
+
121
+ while ports_to_process:
122
+ port = ports_to_process.pop()
123
+ if port in processed_ports:
124
+ continue
125
+ processed_ports.add(port)
126
+ all_wired_ports.append(port)
127
+ ports_to_process.extend(port.wired_ports)
114
128
  return all_wired_ports
115
129
 
116
130
  def is_output(self) -> bool:
@@ -144,7 +158,7 @@ class Port(abc.ABC):
144
158
  return falling_edge
145
159
 
146
160
  @abc.abstractmethod
147
- def set_value(self, value: int | str | None):
161
+ def set_value(self, value: VALUE_TYPE):
148
162
  """Set value on port"""
149
163
 
150
164
  @abc.abstractmethod
@@ -195,7 +209,7 @@ class PortWire(Port):
195
209
  super().__init__(parent, name, width, output)
196
210
  self._port_driver: Port | None = None # The port that drives this port
197
211
 
198
- def set_value(self, value: int | str | None):
212
+ def set_value(self, value: VALUE_TYPE):
199
213
  if value != self.value:
200
214
  self.update_wires(value)
201
215
 
@@ -221,7 +235,7 @@ class PortIn(PortWire):
221
235
  def __init__(self, parent, name: str, width: int = 1):
222
236
  super().__init__(parent, name, width, output=False)
223
237
 
224
- def set_value(self, value: int | str | None):
238
+ def set_value(self, value: VALUE_TYPE):
225
239
  super().set_value(value)
226
240
  self.parent().update()
227
241
 
@@ -246,16 +260,16 @@ class PortOutDelta(Port):
246
260
  """Set port propagation delay"""
247
261
  self._delay_ns = delay_ns
248
262
 
249
- def set_value(self, value: int | str | None):
263
+ def set_value(self, value: VALUE_TYPE):
250
264
  self.parent().add_event(self, value, self._delay_ns)
251
265
 
252
- def update_port(self, value: int | str | None):
266
+ def update_port(self, value: VALUE_TYPE):
253
267
  """Update the port output and the connected wires"""
254
268
  self.update_wires(value)
255
269
  if self._update_parent:
256
270
  self.parent().update()
257
271
 
258
- def delta_cycle(self, value: int | str | None):
272
+ def delta_cycle(self, value: VALUE_TYPE):
259
273
  """Handle the delta cycle event from the circuit"""
260
274
  self.update_port(value)
261
275
 
@@ -282,11 +296,11 @@ class PortOutImmediate(PortOutDelta):
282
296
  def __init__(self, parent, name: str, width: int = 1):
283
297
  super().__init__(parent, name, width)
284
298
 
285
- def set_value(self, value: int | str | None):
299
+ def set_value(self, value: VALUE_TYPE):
286
300
  self.parent().add_event(self, value, 0)
287
301
  super().update_port(value)
288
302
 
289
- def delta_cycle(self, value: int | str | None):
303
+ def delta_cycle(self, value: VALUE_TYPE):
290
304
  """
291
305
  Do nothing here, the event is just used to updates waves in Circuit class
292
306
  """
@@ -303,7 +317,7 @@ class PortWireBit(PortWire):
303
317
  super().__init__(parent, name, 1, output)
304
318
  self._parent_port = parent_port
305
319
 
306
- def set_value(self, value: int | str | None):
320
+ def set_value(self, value: VALUE_TYPE):
307
321
  super().set_value(value)
308
322
  self._parent_port.update_value_from_bits()
309
323
 
@@ -333,17 +347,20 @@ class PortMultiBitWire(Port):
333
347
  for bit in self._bits:
334
348
  bit.init()
335
349
 
336
- def set_value(self, value: int | str | None):
337
- if value is None or isinstance(value, str):
350
+ def set_value(self, value: VALUE_TYPE):
351
+ if isinstance(value, str):
338
352
  return
339
353
  for bit_id, bit in enumerate(self._bits):
340
354
  bit_val = (value >> bit_id) & 1
341
355
  bit.value = bit_val
342
356
 
343
- def get_wired_ports_recursive(self) -> list[Port]:
344
- all_wired_ports = super().get_wired_ports_recursive()
357
+ def get_wired_ports_recursive(self, processed_ports: Optional[set] = None) -> list[Port]:
358
+ if processed_ports is None:
359
+ processed_ports = set()
360
+
361
+ all_wired_ports = super().get_wired_ports_recursive(processed_ports)
345
362
  for bit in self._bits:
346
- all_wired_ports.extend(bit.get_wired_ports_recursive())
363
+ all_wired_ports.extend(bit.get_wired_ports_recursive(processed_ports))
347
364
  return all_wired_ports
348
365
 
349
366
  def set_driver(self, port: Port | None):
@@ -364,18 +381,17 @@ class PortMultiBitWire(Port):
364
381
 
365
382
  def update_value_from_bits(self):
366
383
  """Update the port with the value of the bits"""
367
- for bit in self._bits:
384
+ value = 0
385
+ for bit_id, bit in enumerate(self._bits):
368
386
  if bit.value == "X":
369
387
  self.update_wires("X")
370
388
  return
371
- value = 0
372
- for bit_id, bit in enumerate(self._bits):
373
389
  value = value | (bit.value << bit_id)
374
390
  self.update_wires(value)
375
391
  # Send event just to update waves
376
392
  self.parent().add_event(self, value, 0)
377
393
 
378
- def delta_cycle(self, value: int | str | None):
394
+ def delta_cycle(self, value: VALUE_TYPE):
379
395
  """
380
396
  Do nothing here, the event passed in 'update_value_from_bits'
381
397
  is just used to updates waves in Circuit class
@@ -1,4 +1,4 @@
1
- # Copyright (c) Fredrik Andersson, 2023-2024
1
+ # Copyright (c) Fredrik Andersson, 2023-2025
2
2
  # All rights reserved
3
3
 
4
4
  """
@@ -33,8 +33,13 @@ class AppFileDataClass:
33
33
 
34
34
  @staticmethod
35
35
  def load(filename):
36
- with open(filename, mode="r", encoding="utf-8") as json_file:
37
- app_filedata_class = AppFileDataClass(**json.load(json_file))
36
+ try:
37
+ with open(filename, mode="r", encoding="utf-8") as json_file:
38
+ app_filedata_class = AppFileDataClass(**json.load(json_file))
39
+ except json.JSONDecodeError as exc:
40
+ raise ValueError(f"Malformed JSON file: {filename} - {exc}") from exc
41
+ except FileNotFoundError as exc:
42
+ raise FileNotFoundError(f"File not found: {filename}") from exc
38
43
  return app_filedata_class
39
44
 
40
45
  def save(self, filename):
@@ -1,4 +1,4 @@
1
- # Copyright (c) Fredrik Andersson, 2023-2024
1
+ # Copyright (c) Fredrik Andersson, 2023-2025
2
2
  # All rights reserved
3
3
 
4
4
  """
@@ -21,9 +21,11 @@ class WireDataClass:
21
21
  dst: str
22
22
 
23
23
  def connect(self, circuit):
24
- src_comp = circuit.get_component(self.src.split(".")[0])
25
- dst_comp = circuit.get_component(self.dst.split(".")[0])
26
- src_comp.port(self.src.split(".")[1]).wire = dst_comp.port(self.dst.split(".")[1])
24
+ src_comp_name, src_port_name = self.src.split(".")
25
+ dst_comp_name, dst_port_name = self.dst.split(".")
26
+ src_comp = circuit.get_component(src_comp_name)
27
+ dst_comp = circuit.get_component(dst_comp_name)
28
+ src_comp.port(src_port_name).wire = dst_comp.port(dst_port_name)
27
29
 
28
30
  @classmethod
29
31
  def list_from_port(cls, src_port):
@@ -92,10 +94,11 @@ class CircuitDataClass:
92
94
  @staticmethod
93
95
  def from_circuit(circuit):
94
96
  dc = CircuitDataClass(name=circuit.name)
95
- for comp in circuit.get_toplevel_components():
97
+ toplevel_components = circuit.get_toplevel_components()
98
+ for comp in toplevel_components:
96
99
  dc.components.append(ComponentDataClass.from_component(comp))
97
100
 
98
- for comp in circuit.get_toplevel_components():
101
+ for comp in toplevel_components:
99
102
  for port in comp.ports:
100
103
  dc.wires.extend(WireDataClass.list_from_port(port))
101
104
 
@@ -108,8 +111,13 @@ class CircuitFileDataClass:
108
111
 
109
112
  @staticmethod
110
113
  def load(filename):
111
- with open(filename, mode="r", encoding="utf-8") as json_file:
112
- dc = CircuitFileDataClass(**json.load(json_file))
114
+ try:
115
+ with open(filename, mode="r", encoding="utf-8") as json_file:
116
+ dc = CircuitFileDataClass(**json.load(json_file))
117
+ except json.JSONDecodeError as exc:
118
+ raise ValueError(f"Malformed JSON file: {filename} - {exc}") from exc
119
+ except FileNotFoundError as exc:
120
+ raise FileNotFoundError(f"File not found: {filename}") from exc
113
121
  return dc
114
122
 
115
123
  def save(self, filename):
digsim/synth/__init__.py CHANGED
@@ -1,4 +1,4 @@
1
- # Copyright (c) Fredrik Andersson, 2023
1
+ # Copyright (c) Fredrik Andersson, 2023-2025
2
2
  # All rights reserved
3
3
 
4
4
  """All classes within digsim.synth namespace"""
digsim/synth/__main__.py CHANGED
@@ -1,4 +1,4 @@
1
- # Copyright (c) Fredrik Andersson, 2023
1
+ # Copyright (c) Fredrik Andersson, 2023-2025
2
2
  # All rights reserved
3
3
 
4
4
  """The main class module of the digsim.synth namespace"""
@@ -45,7 +45,7 @@ if __name__ == "__main__":
45
45
  subparser = parser.add_subparsers(required=True)
46
46
  synth_parser = subparser.add_parser("synth")
47
47
  synth_parser.add_argument(
48
- "--input-files", "-i", type=str, nargs="*", required=True, help="The verilog input files"
48
+ "--input-files", "-i", type=str, nargs="+", required=True, help="The verilog input files"
49
49
  )
50
50
  synth_parser.add_argument(
51
51
  "--output-file", "-o", type=str, required=True, help="The json output file"
@@ -59,7 +59,7 @@ if __name__ == "__main__":
59
59
  synth_parser.set_defaults(func=_synth_modules)
60
60
  list_parser = subparser.add_parser("list")
61
61
  list_parser.add_argument(
62
- "--input-files", "-i", type=str, nargs="*", required=True, help="The verilog input files"
62
+ "--input-files", "-i", type=str, nargs="+", required=True, help="The verilog input files"
63
63
  )
64
64
  list_parser.set_defaults(func=_list_modules)
65
65
  arguments = parser.parse_args()
@@ -1,4 +1,4 @@
1
- # Copyright (c) Fredrik Andersson, 2023
1
+ # Copyright (c) Fredrik Andersson, 2023-2025
2
2
  # All rights reserved
3
3
 
4
4
  """Helper module for yosys synthesis"""
@@ -116,7 +116,7 @@ class Synthesis:
116
116
  script += "proc; flatten; "
117
117
  script += "memory_dff; "
118
118
  script += "proc; opt; techmap; opt; "
119
- script += f"synth -top {self._verilog_top_module}; "
119
+ script += f"synth -noabc -top {self._verilog_top_module}; "
120
120
 
121
121
  pexp = self._pexpect_spawn_yosys()
122
122
  self._pexpect_wait_for_prompt(pexp)
@@ -137,7 +137,10 @@ class Synthesis:
137
137
  def synth_to_dict(self, silent=False):
138
138
  """Execute yosys with generated synthesis script and return python dict"""
139
139
  yosys_json = self.synth_to_json(silent)
140
- netlist_dict = json.loads(yosys_json)
140
+ try:
141
+ netlist_dict = json.loads(yosys_json)
142
+ except json.JSONDecodeError as exc:
143
+ raise SynthesisException(f"Malformed JSON output from Yosys: {exc}") from exc
141
144
  return netlist_dict
142
145
 
143
146
  def synth_to_json_file(self, filename, silent=False):
digsim/utils/__init__.py CHANGED
@@ -1,4 +1,4 @@
1
- # Copyright (c) Fredrik Andersson, 2023
1
+ # Copyright (c) Fredrik Andersson, 2023-2025
2
2
  # All rights reserved
3
3
 
4
4
  """All classes within digsim.utils namespace"""
@@ -1,4 +1,4 @@
1
- # Copyright (c) Fredrik Andersson, 2023
1
+ # Copyright (c) Fredrik Andersson, 2023-2025
2
2
  # All rights reserved
3
3
 
4
4
  """
@@ -7,12 +7,15 @@ Module with classes to parse a yosys netlist
7
7
 
8
8
  from __future__ import annotations
9
9
 
10
- from typing import Any, Optional, Union
10
+ from typing import Any, Literal, Optional, Union
11
11
 
12
12
  from pydantic import Field
13
13
  from pydantic.dataclasses import dataclass
14
14
 
15
15
 
16
+ BIT_TYPE = list[Union[int, Literal["X"], Literal["0"], Literal["1"]]]
17
+
18
+
16
19
  @dataclass
17
20
  class NetPort:
18
21
  parent: Union[YosysModule, YosysCell]
@@ -30,7 +33,7 @@ class Nets:
30
33
  @dataclass
31
34
  class YosysPort:
32
35
  direction: str
33
- bits: list[Union[int, str]]
36
+ bits: BIT_TYPE
34
37
 
35
38
  @property
36
39
  def is_output(self):
@@ -46,13 +49,16 @@ class YosysPort:
46
49
  class YosysCell:
47
50
  type: str
48
51
  port_directions: dict[str, str] = Field(default_factory=dict)
49
- connections: dict[str, list[Union[str, int]]] = Field(default_factory=dict)
52
+ connections: dict[str, BIT_TYPE] = Field(default_factory=dict)
50
53
  hide_name: int = 0
51
54
  parameters: dict[str, Any] = Field(default_factory=dict)
52
55
  attributes: dict[str, Any] = Field(default_factory=dict)
53
56
 
54
57
  def get_nets(self, name, nets):
55
58
  for port_name, net_list in self.connections.items():
59
+ if not net_list:
60
+ # Handle empty net_list, e.g., by skipping or raising an error
61
+ continue
56
62
  net = net_list[0]
57
63
  port = NetPort(parent=self, parent_name=name, name=port_name)
58
64
  if self.port_directions[port_name] == "input":
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: digsim-logic-simulator
3
- Version: 0.12.0
3
+ Version: 0.14.0
4
4
  Summary: Interactive Digital Logic Simulator
5
5
  Author-email: Fredrik Andersson <freand@gmail.com>
6
6
  Maintainer-email: Fredrik Andersson <freand@gmail.com>
@@ -8,21 +8,20 @@ Project-URL: homepage, https://github.com/freand76/digsim
8
8
  Keywords: educational,simulation,digital
9
9
  Classifier: Development Status :: 5 - Production/Stable
10
10
  Classifier: Programming Language :: Python :: 3
11
- Classifier: Programming Language :: Python :: 3.9
12
11
  Classifier: Programming Language :: Python :: 3.10
13
12
  Classifier: Programming Language :: Python :: 3.11
14
13
  Classifier: Programming Language :: Python :: 3.12
15
14
  Classifier: Programming Language :: Python :: 3.13
16
15
  Classifier: Programming Language :: Python :: 3 :: Only
17
- Requires-Python: >=3.9
16
+ Requires-Python: >=3.10
18
17
  Description-Content-Type: text/markdown
19
18
  License-File: LICENSE.md
20
19
  Requires-Dist: pyvcd==0.4.1
21
20
  Requires-Dist: pyside6==6.9.1
22
21
  Requires-Dist: pexpect==4.9.0
23
- Requires-Dist: pydantic==2.11.7
22
+ Requires-Dist: pydantic==2.12.3
24
23
  Requires-Dist: qtawesome==1.4.0
25
- Requires-Dist: yowasp-yosys==0.57.0.0.post986
24
+ Requires-Dist: yowasp-yosys==0.58.0.0.post1010
26
25
  Dynamic: license-file
27
26
 
28
27
  # DigSim - Interactive Digital Logic Simulator
@@ -0,0 +1,105 @@
1
+ digsim/__init__.py,sha256=cPP3o3Poil_rxQh3syOJd0MuqU4sPnudjaesG18GF8E,154
2
+ digsim/app/__main__.py,sha256=0Cw_kzox6oDRO2cOS4Q6_g6TlThpUTfJNnaAfaJXxsg,1516
3
+ digsim/app/gui/__init__.py,sha256=jLV8w5SIh4PadWA3UDnLk2strI3_xEIfQEt5Sb62YUc,170
4
+ digsim/app/gui/_circuit_area.py,sha256=zwQ2tVujriY2DdQI4Jy7anebh0Ul5od99HDDphZQTdo,16590
5
+ digsim/app/gui/_component_selection.py,sha256=LTVSA3xd85jqULn6GfrBnmfDeP_iYlj4_UjKUd_4FHQ,6590
6
+ digsim/app/gui/_main_window.py,sha256=4lTQLYNGg_PNJlGSJqaQKZ7RbpUq71x9O0FUKnP-rAo,5275
7
+ digsim/app/gui/_top_bar.py,sha256=JSP-aF5oFZ-1uHA5SNyRThpHLs9YVnTPA65h2EhxCN4,13067
8
+ digsim/app/gui/_utils.py,sha256=GMPIucfMQhXGwX91CGmeoRpxS8qwOfDLUI76fPJWk0I,665
9
+ digsim/app/gui/_warning_dialog.py,sha256=N9G2wyQTyiqMnTtbExMzHgdbCBA0epfhNWY4GVF6xH8,1496
10
+ digsim/app/gui_objects/__init__.py,sha256=VYR64j5VX8yavCXoPGtPMS4mJpJR6NSRxvXPuSdxFX0,248
11
+ digsim/app/gui_objects/_bus_bit_object.py,sha256=qKZg1SLds9LNq3DUTR7dtM_3gosrfhENopKd0gpqTMY,3059
12
+ digsim/app/gui_objects/_buzzer_object.py,sha256=f-Kgrf5r5iUZMHXy2kmzxDDA0ROMPAPNJbguMSrdEu4,3294
13
+ digsim/app/gui_objects/_component_context_menu.py,sha256=pPhvNYO5lR6J61_NKJt5HPBRiypSuMAIcbcWoZU4DIA,2824
14
+ digsim/app/gui_objects/_component_object.py,sha256=ntD34AEqaJovzDYMrlxOrdyjqprPU_urWUbznnBQNTM,13323
15
+ digsim/app/gui_objects/_component_port_item.py,sha256=_28fqR0MAvKiD51qK7P1K-DSgHzg3r1SGydr0Og2ZbU,2046
16
+ digsim/app/gui_objects/_dip_switch_object.py,sha256=8-YJdkcg0UXxbkxmyq4Ep4ZezZOkxCw6tfQ5Yq3mOlE,3636
17
+ digsim/app/gui_objects/_gui_note_object.py,sha256=qPB0OBq6jxKlqH8yoV2wchDFqrJdjB3AP993hDj1Kcs,2592
18
+ digsim/app/gui_objects/_gui_object_factory.py,sha256=T9TeQVh-DHbOwnn2BtwI0gxnubgp0vUmT36O0b1grLk,2466
19
+ digsim/app/gui_objects/_hexdigit_object.py,sha256=0psnY8dMVZwGmoQeETbhgwilJOyjF8eqx2zaVwdWqVY,1935
20
+ digsim/app/gui_objects/_image_objects.py,sha256=WsWesxfRbGO1cSbXD7nikw7E-gx8A-af458Q52xk0dU,7677
21
+ digsim/app/gui_objects/_label_object.py,sha256=DrmgWW5ACJksd2P3lUUog7CRBj7RWzCkTfvhb6LQCxM,3585
22
+ digsim/app/gui_objects/_logic_analyzer_object.py,sha256=WK-EsthfXzfDDnGA8-wgq_7RhuKwdyQ_KWdXitov-Zk,3078
23
+ digsim/app/gui_objects/_seven_segment_object.py,sha256=KpCOQNmSQ5EX_WRbTACawfNo5fCZ4aWyZTcU_5yy6r0,4370
24
+ digsim/app/gui_objects/_shortcut_objects.py,sha256=8gKAAlv0AlBowDp726EsDBxj1KSwSJne74_bqz0jh08,2747
25
+ digsim/app/gui_objects/_yosys_object.py,sha256=iq8Zmw4tV_sJuULcKEu7mvvK_m19m2ymypLqCawnCyI,958
26
+ digsim/app/gui_objects/images/AND.png,sha256=d53gEcxIlfqmW-Q4Za3n5i_NmSEcjJqlbh8XxoSdR3o,12062
27
+ digsim/app/gui_objects/images/Analyzer.png,sha256=1OrkKsL6ktxKI12KzNJT7rgEi2X-jAqp6vrVuVthErY,1591
28
+ digsim/app/gui_objects/images/BUF.png,sha256=fd8DqEM3aht4cjoWuqsbHlTiQaFa9ddibe3iel1WYLo,12819
29
+ digsim/app/gui_objects/images/Buzzer.png,sha256=sdAQehr03pEpQXrm2RTqUqDpUI15WU1ohFf4fB90uvI,5856
30
+ digsim/app/gui_objects/images/Clock.png,sha256=NAsu1IKb2tiZ_oFs3C7t7Wzc3xzq-1PBLVm7NcT9whQ,3117
31
+ digsim/app/gui_objects/images/DFF.png,sha256=OalrTM4XbMouEeB0xXg8nPy3gZzMxwnvgtF149XsTl0,9038
32
+ digsim/app/gui_objects/images/DIP_SWITCH.png,sha256=8t2gdexuHn9Z3lUi7B7hNM71IxRMulgAn8T5TlFPqPM,16899
33
+ digsim/app/gui_objects/images/FlipFlop.png,sha256=PLCMrH0CBXU6jgDTPpGsgEAqmgNN3c5hvU1sjZzOU40,4452
34
+ digsim/app/gui_objects/images/IC.png,sha256=7YoAkD_5CrTIdmArjD_HjZyT9odAYuCwufDDpVC3Jsw,5493
35
+ digsim/app/gui_objects/images/LED_OFF.png,sha256=bk-X-R-l8CvdD-xat0zI5pc9S1t6j0Ewx4G_vMt1sRE,7075
36
+ digsim/app/gui_objects/images/LED_ON.png,sha256=YSYDNx8zjFoqEy9kuognaL8eL0acuVHV7b4ArlK_ol4,9389
37
+ digsim/app/gui_objects/images/MUX.png,sha256=d8Q0qUJIRCdFQbxAg_sc4MJG3F6QRTbCT4ysgkCm6DE,1912
38
+ digsim/app/gui_objects/images/NAND.png,sha256=W-dZPNg2Qh0M-FkA8Gbblh42EvMKtBI37IenZKDIbLE,11718
39
+ digsim/app/gui_objects/images/NOR.png,sha256=eFaignMSIiUPJnc8VkIQ9Yg1iF6qVjrM9sA50EGqp9g,15091
40
+ digsim/app/gui_objects/images/NOT.png,sha256=V1QoUHpBbEX2Tish4DIe_wImAVj-M9DL5QrNIKNo-nQ,12593
41
+ digsim/app/gui_objects/images/ONE.png,sha256=ftnpl7_gMTLc08k08Ka_QfnLv5H1u5AhPitZNPe_42E,1212
42
+ digsim/app/gui_objects/images/OR.png,sha256=54lsnUphLRwY9ioOOqAsRW0KRVTNOHZOPBKosXUTAOc,14870
43
+ digsim/app/gui_objects/images/PB.png,sha256=bhnhD-Ood9hSBFr-aia2iCPT_Q7VYBaEq076sqU3DBY,8468
44
+ digsim/app/gui_objects/images/Switch_OFF.png,sha256=ta11PvVIajT2gugj_SPK3mLn9_WaluqAK3t4aks9a-8,4752
45
+ digsim/app/gui_objects/images/Switch_ON.png,sha256=fVo6Vi89-Fv32SsyWcRL9N7eDwDrTe1_hX6_602BR5A,4819
46
+ digsim/app/gui_objects/images/XNOR.png,sha256=yoDcf5vn_OtcUnQQ3qSTLRqVTNBF_fmaGlpvXpWw_HE,14610
47
+ digsim/app/gui_objects/images/XOR.png,sha256=yHfL2LnWVeepTunrgUF3Z5m3dVpQ1iuNL6EGKI1TAKs,16118
48
+ digsim/app/gui_objects/images/YOSYS.png,sha256=etTO9jadU0amxQG7ySRjD6fME4HjrEEqXttM4XWDzxU,3117
49
+ digsim/app/gui_objects/images/ZERO.png,sha256=hXnZgEVO3T_zN5CiFhu6cIXr19LAu6SdvX-sIOq06E4,3459
50
+ digsim/app/images/app_icon.png,sha256=OfPoYA4o4Af79DTqQxSNLca0FdXRHEYteBK-xCQFEAw,16041
51
+ digsim/app/model/__init__.py,sha256=v7NoGYYBXUiDPwL_lDalLP0tgkIq_F5UCFUm-hVBy4U,164
52
+ digsim/app/model/_model.py,sha256=BFQXDBZc-9xqtApFST2WTy3_AuBeuVkB1bLpFJ8a5nY,6520
53
+ digsim/app/model/_model_components.py,sha256=nWIQ5Bgt61UF7pzqnBSjLW35nat_pQUIMiH-bLDHlk0,6262
54
+ digsim/app/model/_model_new_wire.py,sha256=cLzzM813638suuBf2BRe6rrqkyVKwLMqWBwo3bI0PYk,1873
55
+ digsim/app/model/_model_objects.py,sha256=b_0oTBj2S_ZHZ0FBC9Imv7eHpkOgLmuMZ-4HWrvSadY,5136
56
+ digsim/app/model/_model_settings.py,sha256=o6C6x5q7hKC_HgjdCJpl9FLIAL6uBV4O5Qx4E879AWI,1022
57
+ digsim/app/model/_model_shortcuts.py,sha256=PVQ9KJffS5CzUfH-DYCgzucHlXFy3zZAytuxI2bn2kA,2092
58
+ digsim/app/settings/__init__.py,sha256=MRLxBhuNUMYo-PHWo-xcoYwH_l4sU_RIWI_ONIU-qBs,313
59
+ digsim/app/settings/_component_settings.py,sha256=z89KfVfS5oLg6Wd6DhsFygvG6RBqRgXpyLiKl9gqOW8,16288
60
+ digsim/app/settings/_gui_settings.py,sha256=_Nfq8qGis--7dEgeDGgaY5xxBRALKDzn7jKfDiaSK-Q,2764
61
+ digsim/app/settings/_shortcut_dialog.py,sha256=SkuPoF6SlujBH7-xKT6n6jB507Fc1qRPzugFMrUDNJo,1461
62
+ digsim/circuit/__init__.py,sha256=mBQZEeYYYxEnWOdKcFlM_7-alC4nkEMbf55iqAVeGc0,221
63
+ digsim/circuit/_circuit.py,sha256=w9ha-5ymrGic5ZPkJRY_oL5ESNKwp-svjyNyLGeyJm8,11467
64
+ digsim/circuit/_waves_writer.py,sha256=ZedBa2TbWuq-zDc1MQyANmQOMDGGzNMSh4nKPuqXCkA,2092
65
+ digsim/circuit/components/__init__.py,sha256=5DXrkwFJ3C4xUsvjV7ahiRnwBZLNaadY88i4qOgcaqQ,1272
66
+ digsim/circuit/components/_bus_bits.py,sha256=Ds8dL_lMG2phX2rphe9jenSjDk4asDYddl5g9-IIcpg,1921
67
+ digsim/circuit/components/_button.py,sha256=5alsssihwR33iTv6HuN06fgVRftqwl5tRX05rqdSWY8,913
68
+ digsim/circuit/components/_buzzer.py,sha256=Vo2nPXmdrdAX1r4aXWWAuA6OyejPTRb7nyMCVQAfLFw,1130
69
+ digsim/circuit/components/_clock.py,sha256=21i0ViVn6GTGQUepUMTOSbLmcWAksGKmU4y7ZBmU3P8,1492
70
+ digsim/circuit/components/_dip_switch.py,sha256=biDG6SvepN5xyezC5BxJsq94yoMy2Xn92gBxPU7HIag,1812
71
+ digsim/circuit/components/_flip_flops.py,sha256=T6sHhV-hVCCKnFDOnL9A-t8vcSo1opQszv9EIsqZw2I,2947
72
+ digsim/circuit/components/_gates.py,sha256=K_aFT4GTo4JF_zoaNYiCRZfZEx4vEibMHZSCDImfPHQ,7167
73
+ digsim/circuit/components/_hexdigit.py,sha256=LB_RhWnaNqcaMKon66nlAVL_jkEqz_pyQ2FlW6Chapw,2264
74
+ digsim/circuit/components/_ic.py,sha256=8iUbuyQqM5glEcpDCJD2OdwSxr1TG5AtKOXU4I3qlWI,922
75
+ digsim/circuit/components/_label_wire.py,sha256=KWFtNy1Tp7PzMsDIfJHbLxpekQeuRW5h53haz6kzevE,5169
76
+ digsim/circuit/components/_led.py,sha256=7Ctvp7YI6U38W7X9XCbfbg0s5LI5Hz7UoeKtSxzTQrw,457
77
+ digsim/circuit/components/_logic_analyzer.py,sha256=A0UvmEwDpwc8vqIk44rI5l1_fsySDGxO4GsStGOByG0,1814
78
+ digsim/circuit/components/_mem64kbyte.py,sha256=6OdrCZW5L-qY7hvENxVVCHUnmyUTAfIacFOwv9v-tEw,1487
79
+ digsim/circuit/components/_memstdout.py,sha256=vqUlDx9E4azy4gpjcgTH3Ns2poiqcflNBIYHMg97LWs,1260
80
+ digsim/circuit/components/_note.py,sha256=apvXDTqegAtQ3XbWEEm3hEhFAakmPPrbveupqfwtrBo,609
81
+ digsim/circuit/components/_on_off_switch.py,sha256=GZAyUUCUpdHpXigqJnoDDZcq3HTKTOFdHO_IyM9eECc,1205
82
+ digsim/circuit/components/_seven_segment.py,sha256=WZnGw27ElQo__eV-M6bn-UYY17lTRgwTNWwReMJE8dY,802
83
+ digsim/circuit/components/_static_level.py,sha256=Y5tVEjwX2LVpc31iWop2qQDJPZR5NdvLq1D3o2Yo6p0,682
84
+ digsim/circuit/components/_static_value.py,sha256=48Jkj5qsDLOfvtYYNnKxoU9rVlIa9BzCJ89At9Dvyqg,1241
85
+ digsim/circuit/components/_yosys_atoms.py,sha256=NeH8XjjpoACHBfQRqR5RJxWorZhSjGk0t73cJOviSZw,37599
86
+ digsim/circuit/components/_yosys_component.py,sha256=EDcvFMNGVj-hxKUUNeWWQ74sFyA3vCxbd0MKX942S9w,8797
87
+ digsim/circuit/components/atoms/__init__.py,sha256=tQuxYg6mCz72GCJ1qognO0J3upTKmZR-VhH1IdKnbSg,514
88
+ digsim/circuit/components/atoms/_component.py,sha256=4_pbo25DbVoHdoDVok67NqltanTZwcj-8NH-Q4mKdOw,9255
89
+ digsim/circuit/components/atoms/_digsim_exception.py,sha256=vSBuRWVl5HXQBEqwKjnPm55LWGUdYar5NQCJAVyQ1xg,178
90
+ digsim/circuit/components/atoms/_port.py,sha256=6zqdzflqUYAJgoC-gtFb9eBYHgCX9mhUJD2-KqqDPPA,13009
91
+ digsim/circuit/components/ic/74162.json,sha256=RAeSva6TVuwfKHsvU9HC-ZVfRVrCkIsQUz_jcANT_fE,26693
92
+ digsim/circuit/components/ic/7448.json,sha256=hKMXhPqW-JBTF6rdz9u5HC_hY9cBRpJtMkLP7uOQXIo,21185
93
+ digsim/storage_model/__init__.py,sha256=lubmO9_BCUtEahyW1yE7f3aGHngEevGIwf_0LeOB7Y8,289
94
+ digsim/storage_model/_app.py,sha256=JoI9C2w_90e6IyEaQENDxQtf2ag7obhMhLD-Jz_kI1Q,1617
95
+ digsim/storage_model/_circuit.py,sha256=VhQ96jZMbVjCE2XBQ8D0ABA8sG0SiI5oyc_GZZYfNfw,3978
96
+ digsim/synth/__init__.py,sha256=Y-uEO51auZrxHJ7mj61a0ou4c75XNVyDpYDrLHfee9w,185
97
+ digsim/synth/__main__.py,sha256=M8lMBUO6oHENospJCj43Ed40w0bX0_E6yL-_O8g9LWg,2178
98
+ digsim/synth/_synthesis.py,sha256=g2zw0M3E6xiYLwY2WOKi9-uJ5YtNeVwCpFviuXfhUHk,5197
99
+ digsim/utils/__init__.py,sha256=sUWzEcR3aTo8uDqi9oMDs04XLa-uUXFSgLuhkbSvaNs,196
100
+ digsim/utils/_yosys_netlist.py,sha256=uNrTINGm8J_66Cgvgk1ItKyk7u65YfUl7av6ASBWVl0,4036
101
+ digsim_logic_simulator-0.14.0.dist-info/licenses/LICENSE.md,sha256=FrvohZfyfpH4xrvKdXiQ5hD7dUB7w4DcsRA3p-pOmLw,1693
102
+ digsim_logic_simulator-0.14.0.dist-info/METADATA,sha256=Rit9T71PcNWVN8yoxHOloZg4agr8P0ByXR7R6HyXP1E,4510
103
+ digsim_logic_simulator-0.14.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
104
+ digsim_logic_simulator-0.14.0.dist-info/top_level.txt,sha256=qpCMzQKADZHVqZIoQgFrv3qJ3u7PPU73gTCXQglqLa8,7
105
+ digsim_logic_simulator-0.14.0.dist-info/RECORD,,
@@ -1,105 +0,0 @@
1
- digsim/__init__.py,sha256=UB-i1HtNR6rIX4_SClZp-lM4njGa7_1sbMvd14NuyAs,149
2
- digsim/app/__main__.py,sha256=iECz0kvEQ0R4fGzH6KAOxyDfoyvwrRLo7JmT0jMx39s,1368
3
- digsim/app/gui/__init__.py,sha256=-HnN8a-AcDcovbCHf1a_R-sQtW2_tQXnPJ3izyKLOjw,165
4
- digsim/app/gui/_circuit_area.py,sha256=rbqP957eVAuYBvtg5anybOrvnGc6TSe9dB_0rRsHSDI,16366
5
- digsim/app/gui/_component_selection.py,sha256=C-TeBruf8sGdEnGATtLm6jTesIqf-0AnKRBRLrtL_18,6388
6
- digsim/app/gui/_main_window.py,sha256=X0AIh3m1ySaldgYr3MHddRSqVkNdWl_qNJOIdnv2mNA,5275
7
- digsim/app/gui/_top_bar.py,sha256=HWGiWTKjYz3yRJ4K1tbMyVxhTC-Y6LEiREr6nHMAhKE,13067
8
- digsim/app/gui/_utils.py,sha256=SSbe4B-trgZpaerPZilAaZYeqMOlFZMuufTth8KyOAg,660
9
- digsim/app/gui/_warning_dialog.py,sha256=N9G2wyQTyiqMnTtbExMzHgdbCBA0epfhNWY4GVF6xH8,1496
10
- digsim/app/gui_objects/__init__.py,sha256=DV7hnqz4Xcwk_-BiKrPxB31c7k-R4Oemmo_KOUjoQrQ,264
11
- digsim/app/gui_objects/_bus_bit_object.py,sha256=Q8oW-bAGLRAvR2-8PxyHL4M68FLKFgNpDiL4E7BPUOQ,3059
12
- digsim/app/gui_objects/_buzzer_object.py,sha256=wD0nJ-0f6lj9jREPM0rH2HyncpIXJrr9oHgq33oHyO8,3252
13
- digsim/app/gui_objects/_component_context_menu.py,sha256=57M23M8Xb4t8eN8l9GQQ4AUBYZlEBjE0_a4d71yCDos,2821
14
- digsim/app/gui_objects/_component_object.py,sha256=zktprBWHR81LS2UPrQTyebzXIDQV_xIFavGQe0nCtDg,13144
15
- digsim/app/gui_objects/_component_port_item.py,sha256=Rxl952_3BCqM2H7TJDfbSTlalfFicDStrjqMUKEtdns,2089
16
- digsim/app/gui_objects/_dip_switch_object.py,sha256=6SmqoyF3MuUphLJA4tlyff4JXJBxJLWmt3ZEferFtf4,3576
17
- digsim/app/gui_objects/_gui_note_object.py,sha256=sMakGjdR0truGBzaR2GaFZZoDg99v76Bs5DD6ea3cjA,2604
18
- digsim/app/gui_objects/_gui_object_factory.py,sha256=wfe0M4ZNSd5mK_0fi6ZhzHddFxkm_t4tku3OZir2VzU,2465
19
- digsim/app/gui_objects/_hexdigit_object.py,sha256=cCxxpcSRLXRFNLIfrY_AUBGOSVIjRjO3HAuOv7wXGkI,1930
20
- digsim/app/gui_objects/_image_objects.py,sha256=hOFgkpp0Ar0btncVXp7Jors7hXQQENc1FqzJGS1m_G0,7613
21
- digsim/app/gui_objects/_label_object.py,sha256=6CnISeYEmmef28T6yBYJ1z-a_3nTtyl4p-EU-pEzVK0,3570
22
- digsim/app/gui_objects/_logic_analyzer_object.py,sha256=B3WpFrTu9LDF0S_ol0VVS4vOIDqw_e08wmEX7fBjD98,2671
23
- digsim/app/gui_objects/_seven_segment_object.py,sha256=EaNRxmM_IA-JkLHVVHXwSCd8jV9JAXTmdXMuXOidio4,4227
24
- digsim/app/gui_objects/_shortcut_objects.py,sha256=XaTbjT-udJZ--O1uhBIrw8EHIHKbly6PGH-7tTTnPVQ,2724
25
- digsim/app/gui_objects/_yosys_object.py,sha256=1LQ6nR_67lfWWNE56bdPJYkpEXhEi_9Z5UbiY0SGJIE,953
26
- digsim/app/gui_objects/images/AND.png,sha256=d53gEcxIlfqmW-Q4Za3n5i_NmSEcjJqlbh8XxoSdR3o,12062
27
- digsim/app/gui_objects/images/Analyzer.png,sha256=1OrkKsL6ktxKI12KzNJT7rgEi2X-jAqp6vrVuVthErY,1591
28
- digsim/app/gui_objects/images/BUF.png,sha256=fd8DqEM3aht4cjoWuqsbHlTiQaFa9ddibe3iel1WYLo,12819
29
- digsim/app/gui_objects/images/Buzzer.png,sha256=sdAQehr03pEpQXrm2RTqUqDpUI15WU1ohFf4fB90uvI,5856
30
- digsim/app/gui_objects/images/Clock.png,sha256=NAsu1IKb2tiZ_oFs3C7t7Wzc3xzq-1PBLVm7NcT9whQ,3117
31
- digsim/app/gui_objects/images/DFF.png,sha256=OalrTM4XbMouEeB0xXg8nPy3gZzMxwnvgtF149XsTl0,9038
32
- digsim/app/gui_objects/images/DIP_SWITCH.png,sha256=8t2gdexuHn9Z3lUi7B7hNM71IxRMulgAn8T5TlFPqPM,16899
33
- digsim/app/gui_objects/images/FlipFlop.png,sha256=PLCMrH0CBXU6jgDTPpGsgEAqmgNN3c5hvU1sjZzOU40,4452
34
- digsim/app/gui_objects/images/IC.png,sha256=7YoAkD_5CrTIdmArjD_HjZyT9odAYuCwufDDpVC3Jsw,5493
35
- digsim/app/gui_objects/images/LED_OFF.png,sha256=bk-X-R-l8CvdD-xat0zI5pc9S1t6j0Ewx4G_vMt1sRE,7075
36
- digsim/app/gui_objects/images/LED_ON.png,sha256=YSYDNx8zjFoqEy9kuognaL8eL0acuVHV7b4ArlK_ol4,9389
37
- digsim/app/gui_objects/images/MUX.png,sha256=d8Q0qUJIRCdFQbxAg_sc4MJG3F6QRTbCT4ysgkCm6DE,1912
38
- digsim/app/gui_objects/images/NAND.png,sha256=W-dZPNg2Qh0M-FkA8Gbblh42EvMKtBI37IenZKDIbLE,11718
39
- digsim/app/gui_objects/images/NOR.png,sha256=eFaignMSIiUPJnc8VkIQ9Yg1iF6qVjrM9sA50EGqp9g,15091
40
- digsim/app/gui_objects/images/NOT.png,sha256=V1QoUHpBbEX2Tish4DIe_wImAVj-M9DL5QrNIKNo-nQ,12593
41
- digsim/app/gui_objects/images/ONE.png,sha256=ftnpl7_gMTLc08k08Ka_QfnLv5H1u5AhPitZNPe_42E,1212
42
- digsim/app/gui_objects/images/OR.png,sha256=54lsnUphLRwY9ioOOqAsRW0KRVTNOHZOPBKosXUTAOc,14870
43
- digsim/app/gui_objects/images/PB.png,sha256=bhnhD-Ood9hSBFr-aia2iCPT_Q7VYBaEq076sqU3DBY,8468
44
- digsim/app/gui_objects/images/Switch_OFF.png,sha256=ta11PvVIajT2gugj_SPK3mLn9_WaluqAK3t4aks9a-8,4752
45
- digsim/app/gui_objects/images/Switch_ON.png,sha256=fVo6Vi89-Fv32SsyWcRL9N7eDwDrTe1_hX6_602BR5A,4819
46
- digsim/app/gui_objects/images/XNOR.png,sha256=yoDcf5vn_OtcUnQQ3qSTLRqVTNBF_fmaGlpvXpWw_HE,14610
47
- digsim/app/gui_objects/images/XOR.png,sha256=yHfL2LnWVeepTunrgUF3Z5m3dVpQ1iuNL6EGKI1TAKs,16118
48
- digsim/app/gui_objects/images/YOSYS.png,sha256=etTO9jadU0amxQG7ySRjD6fME4HjrEEqXttM4XWDzxU,3117
49
- digsim/app/gui_objects/images/ZERO.png,sha256=hXnZgEVO3T_zN5CiFhu6cIXr19LAu6SdvX-sIOq06E4,3459
50
- digsim/app/images/app_icon.png,sha256=OfPoYA4o4Af79DTqQxSNLca0FdXRHEYteBK-xCQFEAw,16041
51
- digsim/app/model/__init__.py,sha256=atbReJBH_qTVZqsKLvF3p9eZWxkglFi6cvt7fEGo0bo,159
52
- digsim/app/model/_model.py,sha256=JE9-iJMxzgcY0r-4s708gDtA-aadw_hFSuERjKNZlfE,6421
53
- digsim/app/model/_model_components.py,sha256=Q2iztl7MlWv_7vaa7me-dp-gOx6-7Tg3LZmTUQNBPrw,6371
54
- digsim/app/model/_model_new_wire.py,sha256=5HnF5-gtKtB1Tp6ZIF7QuNo5zEHmsUpnBEmj6ZllLiA,1810
55
- digsim/app/model/_model_objects.py,sha256=lqOjNIygIHT6Dq_PPa-D0B5elC49dB0KshF0ATzJZ0s,5217
56
- digsim/app/model/_model_settings.py,sha256=BOwlwGT4h2R9tx7R5E1L4W0vli4GWh4RM77QBoqeKdw,1015
57
- digsim/app/model/_model_shortcuts.py,sha256=xrUgs2Y18mSVun3sxzVscYTZ6n5DJTTZOnFhs4Jt_0M,2439
58
- digsim/app/settings/__init__.py,sha256=0tkoBSYeJFFiUI8c_FqvqqyM4-_SU9Xq7mXCwiew5Oo,308
59
- digsim/app/settings/_component_settings.py,sha256=88D9OuEcFIlaqZozomWHSYrl7opz4jZW2e8xGuUyTpg,16287
60
- digsim/app/settings/_gui_settings.py,sha256=sDi2POUsHvS7_4SO5qsTu_nN48HsTN4UfGPzdmECs9w,2764
61
- digsim/app/settings/_shortcut_dialog.py,sha256=JTm7aawG2ar_DvWhBT8ZzgWsq9gLEJ6pJ_-eHUMPh-c,1524
62
- digsim/circuit/__init__.py,sha256=yGyhcdnlcpht_hyR2az_A4c7-bO_NkT2lBIDFvtI010,216
63
- digsim/circuit/_circuit.py,sha256=r_QFKhB13p9hLbrKUN0RtR1o2sqc-UNemdiz-La8cGY,10956
64
- digsim/circuit/_waves_writer.py,sha256=ZedBa2TbWuq-zDc1MQyANmQOMDGGzNMSh4nKPuqXCkA,2092
65
- digsim/circuit/components/__init__.py,sha256=j-xNFbXJ15rSJLhDg7E-SlKvxn6Uy7Zl42YDUkZBFZo,1267
66
- digsim/circuit/components/_bus_bits.py,sha256=mHWkwAHtkEq88pOEQ0b5ndFZvum794j7kUkTAWHUCdc,1916
67
- digsim/circuit/components/_button.py,sha256=Q8drjQ2kNFCfgK-7UzlmNHP47bOpGa9_t16pDtjhL4s,1028
68
- digsim/circuit/components/_buzzer.py,sha256=vArzQVe0yFjtqMxIx2BIvjRA-m-aipPUHVlgwbwpCXM,1125
69
- digsim/circuit/components/_clock.py,sha256=Kks82_Ni_XJYvrgLFvPsAagbUnmH9QutGuwm1puM0B0,1487
70
- digsim/circuit/components/_dip_switch.py,sha256=6f5EXVr3P-OXRB_FY5UOMTkBcJtUR2HHeeD38V7Wfmk,1807
71
- digsim/circuit/components/_flip_flops.py,sha256=eOB1hpSfK7vlpcOQzHqILpAzfwsqQPobC-_ebDxGVLw,2942
72
- digsim/circuit/components/_gates.py,sha256=K_aFT4GTo4JF_zoaNYiCRZfZEx4vEibMHZSCDImfPHQ,7167
73
- digsim/circuit/components/_hexdigit.py,sha256=MQlmEnQkQnuH6rGc-FB68mOctjVY8QyAR5FCOHYNCns,2259
74
- digsim/circuit/components/_ic.py,sha256=Rs8Z_PuhKo3peK9pwdbvlGNK8_w6evSdXYNdrjWB3-8,917
75
- digsim/circuit/components/_label_wire.py,sha256=wAAvq-o1ygsX5br6O9KvsPtQyU5C2FdMRUJP_WWlXSw,5164
76
- digsim/circuit/components/_led.py,sha256=hR_iclDWZua8duNy9BQcTBuhKkIh3g5ahpfkHQ1LYSA,452
77
- digsim/circuit/components/_logic_analyzer.py,sha256=K6sUfN23lUfQ5GHQFrxvR8fgfWKLy29Cj0K7dZzW_cE,1809
78
- digsim/circuit/components/_mem64kbyte.py,sha256=tqex3qFxa7jk841f87inNB4UIY9E5z1SleqAL82eCUY,1482
79
- digsim/circuit/components/_memstdout.py,sha256=sCYkKH8XuWhB7-14VQOy7TkTgq-g0UDbhiI1HmM4HW8,1255
80
- digsim/circuit/components/_note.py,sha256=ZpFPxKzJKbyOmd5YzLxfFllT49xqG3q9fGP1VBk3fW0,604
81
- digsim/circuit/components/_on_off_switch.py,sha256=b2h_EClKRbOQTBpQYrOLRXzdps8da64lO9Nd7fp1RSY,1200
82
- digsim/circuit/components/_seven_segment.py,sha256=UxxjGLuIirVB2Px09XlL8_zjgE7F89cY6z2SMS5FcPU,797
83
- digsim/circuit/components/_static_level.py,sha256=2Assm1cmAfryVZ3KTQ1uGY8Q6eRrBipdwLITewXfIHg,677
84
- digsim/circuit/components/_static_value.py,sha256=vfRPS_F9mKOXpHJxzs0JQKXqcj0o6d-090zbyZaECA4,1236
85
- digsim/circuit/components/_yosys_atoms.py,sha256=NeH8XjjpoACHBfQRqR5RJxWorZhSjGk0t73cJOviSZw,37599
86
- digsim/circuit/components/_yosys_component.py,sha256=LkYneNSvzQMn61RzlHk3aSkl9tF6JjibknfwmLeWCFk,8792
87
- digsim/circuit/components/atoms/__init__.py,sha256=NU45pfJcSrdwZA-SVQeORlaznl_0BciY4VN3vVSnD8o,498
88
- digsim/circuit/components/atoms/_component.py,sha256=DpMS1yOWWgk11Y9ae0PfuOJdlJsrzgrzuYrgsN62dbQ,8815
89
- digsim/circuit/components/atoms/_digsim_exception.py,sha256=Y5mBve15zZbduqNNAyf7WzqDk4NtvUL_g2vYy5kBQ3U,173
90
- digsim/circuit/components/atoms/_port.py,sha256=yT1TqmKPVlw8G_0r_6dErcqIkXCqB8z0pE5oL6Bnxzo,12596
91
- digsim/circuit/components/ic/74162.json,sha256=RAeSva6TVuwfKHsvU9HC-ZVfRVrCkIsQUz_jcANT_fE,26693
92
- digsim/circuit/components/ic/7448.json,sha256=hKMXhPqW-JBTF6rdz9u5HC_hY9cBRpJtMkLP7uOQXIo,21185
93
- digsim/storage_model/__init__.py,sha256=lubmO9_BCUtEahyW1yE7f3aGHngEevGIwf_0LeOB7Y8,289
94
- digsim/storage_model/_app.py,sha256=Aer9s_mUBKSydsyeWYvVPHX2XF5ZGPuXq8z4PoXu8lA,1353
95
- digsim/storage_model/_circuit.py,sha256=NnaHLwqb9gAhqAxeZ1RkHHvoS_YJwixlz0xs-zmIrQU,3596
96
- digsim/synth/__init__.py,sha256=jhBHLOHf-vNa94Zg5q5dGcf0fgQTModfjUKtmUSffiw,180
97
- digsim/synth/__main__.py,sha256=wZWAzWsisoxA7hfqkKtu3H066uWyFajgPro2MEGlKbs,2173
98
- digsim/synth/_synthesis.py,sha256=n49Yc2Wzb49mZQt_WSpoJy2eUfSBnzv1hTxcOP60L74,5034
99
- digsim/utils/__init__.py,sha256=MT9TNcpa7fNAqtBsmCcceKMrUSU_v9xeJ6Nox_TL7Lo,191
100
- digsim/utils/_yosys_netlist.py,sha256=Lcuo9seKcDu4O-NdBpJUpExvTT7Rx1STCBtF0xT8Nkc,3843
101
- digsim_logic_simulator-0.12.0.dist-info/licenses/LICENSE.md,sha256=FrvohZfyfpH4xrvKdXiQ5hD7dUB7w4DcsRA3p-pOmLw,1693
102
- digsim_logic_simulator-0.12.0.dist-info/METADATA,sha256=JHxzVc7fjDmDB6q2d1oHCjiJLhTN3yih1G8c5ZxIw_I,4558
103
- digsim_logic_simulator-0.12.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
104
- digsim_logic_simulator-0.12.0.dist-info/top_level.txt,sha256=qpCMzQKADZHVqZIoQgFrv3qJ3u7PPU73gTCXQglqLa8,7
105
- digsim_logic_simulator-0.12.0.dist-info/RECORD,,