logicuit 0.3.0 → 0.3.2

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 (55) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +3 -2
  3. data/README.md +161 -14
  4. data/Rakefile +12 -1
  5. data/Steepfile +6 -0
  6. data/lib/logicuit/array_as_signal_group.rb +1 -1
  7. data/lib/logicuit/circuits/combinational/full_adder.rb +6 -2
  8. data/lib/logicuit/circuits/combinational/full_adder_4bit.rb +6 -0
  9. data/lib/logicuit/circuits/combinational/half_adder.rb +4 -0
  10. data/lib/logicuit/circuits/combinational/multiplexer_2to1.rb +5 -1
  11. data/lib/logicuit/circuits/combinational/multiplexer_4to1.rb +5 -1
  12. data/lib/logicuit/circuits/sequential/d_flip_flop.rb +4 -0
  13. data/lib/logicuit/circuits/sequential/one_bit_cpu.rb +4 -0
  14. data/lib/logicuit/circuits/sequential/program_counter.rb +10 -4
  15. data/lib/logicuit/circuits/sequential/register_4bit.rb +6 -0
  16. data/lib/logicuit/circuits/td4/cpu.rb +11 -2
  17. data/lib/logicuit/circuits/td4/decoder.rb +9 -5
  18. data/lib/logicuit/circuits/td4/rom.rb +6 -4
  19. data/lib/logicuit/dsl.rb +47 -18
  20. data/lib/logicuit/gates/and.rb +5 -1
  21. data/lib/logicuit/gates/nand.rb +5 -1
  22. data/lib/logicuit/gates/not.rb +4 -0
  23. data/lib/logicuit/gates/or.rb +5 -1
  24. data/lib/logicuit/gates/xor.rb +5 -1
  25. data/lib/logicuit/runner.rb +1 -1
  26. data/lib/logicuit/signals/clock.rb +1 -1
  27. data/lib/logicuit/signals/signal.rb +12 -0
  28. data/lib/logicuit/signals/signal_group.rb +7 -1
  29. data/lib/logicuit/version.rb +1 -1
  30. data/sig/generated/logicuit/circuits/combinational/full_adder.rbs +20 -0
  31. data/sig/generated/logicuit/circuits/combinational/full_adder_4bit.rbs +38 -0
  32. data/sig/generated/logicuit/circuits/combinational/half_adder.rbs +18 -0
  33. data/sig/generated/logicuit/circuits/combinational/multiplexer_2to1.rbs +18 -0
  34. data/sig/generated/logicuit/circuits/combinational/multiplexer_4to1.rbs +24 -0
  35. data/sig/generated/logicuit/circuits/sequential/d_flip_flop.rbs +14 -0
  36. data/sig/generated/logicuit/circuits/sequential/one_bit_cpu.rbs +16 -0
  37. data/sig/generated/logicuit/circuits/sequential/program_counter.rbs +28 -0
  38. data/sig/generated/logicuit/circuits/sequential/register_4bit.rbs +28 -0
  39. data/sig/generated/logicuit/circuits/td4/cpu.rbs +28 -0
  40. data/sig/generated/logicuit/circuits/td4/decoder.rbs +32 -0
  41. data/sig/generated/logicuit/circuits/td4/rom.rbs +36 -0
  42. data/sig/generated/logicuit/gates/and.rbs +14 -0
  43. data/sig/generated/logicuit/gates/nand.rbs +14 -0
  44. data/sig/generated/logicuit/gates/not.rbs +12 -0
  45. data/sig/generated/logicuit/gates/or.rbs +14 -0
  46. data/sig/generated/logicuit/gates/xor.rbs +14 -0
  47. data/sig/logicuit/array_as_signal_group.rbs +11 -0
  48. data/sig/logicuit/dsl.rbs +35 -0
  49. data/sig/logicuit/runner.rbs +4 -0
  50. data/sig/logicuit/signals/clock.rbs +30 -0
  51. data/sig/logicuit/signals/signal.rbs +32 -0
  52. data/sig/logicuit/signals/signal_group.rbs +20 -0
  53. data/sig/logicuit/version.rbs +3 -0
  54. metadata +28 -4
  55. data/sig/logicuit.rbs +0 -4
@@ -0,0 +1,35 @@
1
+ # Logicuit module
2
+ module Logicuit
3
+ # base class for all gates and circuits
4
+ class DSL
5
+ def initialize: (*(0 | 1) args) -> void
6
+
7
+ def evaluate: (*Signals::Signal args) -> void
8
+
9
+ attr_reader input_targets: Array[Symbol]
10
+
11
+ attr_reader output_targets: Array[Symbol]
12
+
13
+ attr_reader clock: bool
14
+
15
+ attr_reader components: Array[untyped]
16
+
17
+ attr_reader initialized: bool
18
+
19
+ def self.inputs: (*Symbol args, ?clock: Symbol) -> void
20
+
21
+ def []: (*Symbol keys) -> Signals::SignalGroup
22
+
23
+ def self.outputs: (*Symbol args, **^(instance) [self: instance] -> Signals::Signal kwargs) -> void
24
+
25
+ def self.assembling: () { () [self: instance] -> void } -> void
26
+
27
+ def self.diagram: (String source) -> void
28
+
29
+ def self.truth_table: (String source) -> void
30
+
31
+ def self.verify_against_truth_table: () -> void
32
+
33
+ def self.run: (?hz: ::Integer, ?noclear: bool) -> void
34
+ end
35
+ end
@@ -0,0 +1,4 @@
1
+ # Logicuit module
2
+ module Logicuit
3
+ def self.run: (DSL circuit, ?hz: ::Integer, ?noclear: bool) -> void
4
+ end
@@ -0,0 +1,30 @@
1
+ module Logicuit
2
+ module Signals
3
+ # Clock
4
+ class Clock
5
+ self.@instance: Clock
6
+
7
+ @downstreams: Array[DSL]
8
+
9
+ @tick_count: Integer
10
+
11
+ def initialize: () -> void
12
+
13
+ attr_reader downstreams: Array[DSL]
14
+
15
+ attr_reader tick_count: Integer
16
+
17
+ def tick: () -> void
18
+
19
+ def self.instance: () -> Clock
20
+
21
+ def self.connects_to: (DSL component) -> void
22
+
23
+ alias self.>> self.connects_to
24
+
25
+ def self.tick: () -> void
26
+
27
+ def self.tick_count: () -> Integer
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,32 @@
1
+ module Logicuit
2
+ module Signals
3
+ # Signal
4
+ class Signal
5
+ @current: bool
6
+
7
+ @downstreams: Array[Signal | DSL]
8
+
9
+ def initialize: (?bool current) -> void
10
+
11
+ attr_reader current: bool
12
+
13
+ def on: () -> void
14
+
15
+ def off: () -> void
16
+
17
+ def connects_to: (Signal | SignalGroup | Array[Signal] | DSL other) -> void
18
+
19
+ alias >> connects_to
20
+
21
+ def to_s: () -> ("1" | "0")
22
+
23
+ def &: (Signal other) -> Signal
24
+ def |: (Signal other) -> Signal
25
+ def !: () -> Signal
26
+
27
+ private
28
+
29
+ def propagate_current: () -> void
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,20 @@
1
+ module Logicuit
2
+ module Signals
3
+ # Signal Group
4
+ class SignalGroup
5
+ @signals: Array[Signal]
6
+
7
+ def initialize: (*Signal signals) -> void
8
+
9
+ def signals: () -> Array[Signal]
10
+
11
+ def connects_to: (SignalGroup | Array[Signal] others) -> void
12
+
13
+ alias >> connects_to
14
+
15
+ def to_s: () -> String
16
+
17
+ def set: (String vals) -> void
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,3 @@
1
+ module Logicuit
2
+ VERSION: String
3
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logicuit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Koji NAKAMURA
8
8
  bindir: exe
9
9
  cert_chain: []
10
- date: 2025-04-19 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies: []
12
12
  description: logi(c cir)cuit -> logicuit
13
13
  email:
@@ -20,6 +20,7 @@ files:
20
20
  - LICENSE.txt
21
21
  - README.md
22
22
  - Rakefile
23
+ - Steepfile
23
24
  - lib/logicuit.rb
24
25
  - lib/logicuit/array_as_signal_group.rb
25
26
  - lib/logicuit/circuits/combinational/full_adder.rb
@@ -45,7 +46,30 @@ files:
45
46
  - lib/logicuit/signals/signal.rb
46
47
  - lib/logicuit/signals/signal_group.rb
47
48
  - lib/logicuit/version.rb
48
- - sig/logicuit.rbs
49
+ - sig/generated/logicuit/circuits/combinational/full_adder.rbs
50
+ - sig/generated/logicuit/circuits/combinational/full_adder_4bit.rbs
51
+ - sig/generated/logicuit/circuits/combinational/half_adder.rbs
52
+ - sig/generated/logicuit/circuits/combinational/multiplexer_2to1.rbs
53
+ - sig/generated/logicuit/circuits/combinational/multiplexer_4to1.rbs
54
+ - sig/generated/logicuit/circuits/sequential/d_flip_flop.rbs
55
+ - sig/generated/logicuit/circuits/sequential/one_bit_cpu.rbs
56
+ - sig/generated/logicuit/circuits/sequential/program_counter.rbs
57
+ - sig/generated/logicuit/circuits/sequential/register_4bit.rbs
58
+ - sig/generated/logicuit/circuits/td4/cpu.rbs
59
+ - sig/generated/logicuit/circuits/td4/decoder.rbs
60
+ - sig/generated/logicuit/circuits/td4/rom.rbs
61
+ - sig/generated/logicuit/gates/and.rbs
62
+ - sig/generated/logicuit/gates/nand.rbs
63
+ - sig/generated/logicuit/gates/not.rbs
64
+ - sig/generated/logicuit/gates/or.rbs
65
+ - sig/generated/logicuit/gates/xor.rbs
66
+ - sig/logicuit/array_as_signal_group.rbs
67
+ - sig/logicuit/dsl.rbs
68
+ - sig/logicuit/runner.rbs
69
+ - sig/logicuit/signals/clock.rbs
70
+ - sig/logicuit/signals/signal.rbs
71
+ - sig/logicuit/signals/signal_group.rbs
72
+ - sig/logicuit/version.rbs
49
73
  homepage: https://github.com/kozy4324/logicuit
50
74
  licenses:
51
75
  - MIT
@@ -68,7 +92,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
68
92
  - !ruby/object:Gem::Version
69
93
  version: '0'
70
94
  requirements: []
71
- rubygems_version: 3.6.5
95
+ rubygems_version: 3.6.7
72
96
  specification_version: 4
73
97
  summary: logi(c cir)cuit -> logicuit
74
98
  test_files: []
data/sig/logicuit.rbs DELETED
@@ -1,4 +0,0 @@
1
- module Logicuit
2
- VERSION: String
3
- # See the writing guide of rbs: https://github.com/ruby/rbs#guides
4
- end