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.
- checksums.yaml +4 -4
- data/.rubocop.yml +3 -2
- data/README.md +161 -14
- data/Rakefile +12 -1
- data/Steepfile +6 -0
- data/lib/logicuit/array_as_signal_group.rb +1 -1
- data/lib/logicuit/circuits/combinational/full_adder.rb +6 -2
- data/lib/logicuit/circuits/combinational/full_adder_4bit.rb +6 -0
- data/lib/logicuit/circuits/combinational/half_adder.rb +4 -0
- data/lib/logicuit/circuits/combinational/multiplexer_2to1.rb +5 -1
- data/lib/logicuit/circuits/combinational/multiplexer_4to1.rb +5 -1
- data/lib/logicuit/circuits/sequential/d_flip_flop.rb +4 -0
- data/lib/logicuit/circuits/sequential/one_bit_cpu.rb +4 -0
- data/lib/logicuit/circuits/sequential/program_counter.rb +10 -4
- data/lib/logicuit/circuits/sequential/register_4bit.rb +6 -0
- data/lib/logicuit/circuits/td4/cpu.rb +11 -2
- data/lib/logicuit/circuits/td4/decoder.rb +9 -5
- data/lib/logicuit/circuits/td4/rom.rb +6 -4
- data/lib/logicuit/dsl.rb +47 -18
- data/lib/logicuit/gates/and.rb +5 -1
- data/lib/logicuit/gates/nand.rb +5 -1
- data/lib/logicuit/gates/not.rb +4 -0
- data/lib/logicuit/gates/or.rb +5 -1
- data/lib/logicuit/gates/xor.rb +5 -1
- data/lib/logicuit/runner.rb +1 -1
- data/lib/logicuit/signals/clock.rb +1 -1
- data/lib/logicuit/signals/signal.rb +12 -0
- data/lib/logicuit/signals/signal_group.rb +7 -1
- data/lib/logicuit/version.rb +1 -1
- data/sig/generated/logicuit/circuits/combinational/full_adder.rbs +20 -0
- data/sig/generated/logicuit/circuits/combinational/full_adder_4bit.rbs +38 -0
- data/sig/generated/logicuit/circuits/combinational/half_adder.rbs +18 -0
- data/sig/generated/logicuit/circuits/combinational/multiplexer_2to1.rbs +18 -0
- data/sig/generated/logicuit/circuits/combinational/multiplexer_4to1.rbs +24 -0
- data/sig/generated/logicuit/circuits/sequential/d_flip_flop.rbs +14 -0
- data/sig/generated/logicuit/circuits/sequential/one_bit_cpu.rbs +16 -0
- data/sig/generated/logicuit/circuits/sequential/program_counter.rbs +28 -0
- data/sig/generated/logicuit/circuits/sequential/register_4bit.rbs +28 -0
- data/sig/generated/logicuit/circuits/td4/cpu.rbs +28 -0
- data/sig/generated/logicuit/circuits/td4/decoder.rbs +32 -0
- data/sig/generated/logicuit/circuits/td4/rom.rbs +36 -0
- data/sig/generated/logicuit/gates/and.rbs +14 -0
- data/sig/generated/logicuit/gates/nand.rbs +14 -0
- data/sig/generated/logicuit/gates/not.rbs +12 -0
- data/sig/generated/logicuit/gates/or.rbs +14 -0
- data/sig/generated/logicuit/gates/xor.rbs +14 -0
- data/sig/logicuit/array_as_signal_group.rbs +11 -0
- data/sig/logicuit/dsl.rbs +35 -0
- data/sig/logicuit/runner.rbs +4 -0
- data/sig/logicuit/signals/clock.rbs +30 -0
- data/sig/logicuit/signals/signal.rbs +32 -0
- data/sig/logicuit/signals/signal_group.rbs +20 -0
- data/sig/logicuit/version.rbs +3 -0
- metadata +28 -4
- 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,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
|
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.
|
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:
|
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.
|
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