Merge branch 'temp'
This commit is contained in:
commit
32a6c59cd8
17
Gemfile.lock
17
Gemfile.lock
@ -2,10 +2,24 @@ GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
coderay (1.1.2)
|
||||
diff-lcs (1.3)
|
||||
method_source (0.9.0)
|
||||
pry (0.11.3)
|
||||
coderay (~> 1.1.0)
|
||||
method_source (~> 0.9.0)
|
||||
rspec (3.9.0)
|
||||
rspec-core (~> 3.9.0)
|
||||
rspec-expectations (~> 3.9.0)
|
||||
rspec-mocks (~> 3.9.0)
|
||||
rspec-core (3.9.2)
|
||||
rspec-support (~> 3.9.3)
|
||||
rspec-expectations (3.9.1)
|
||||
diff-lcs (>= 1.2.0, < 2.0)
|
||||
rspec-support (~> 3.9.0)
|
||||
rspec-mocks (3.9.1)
|
||||
diff-lcs (>= 1.2.0, < 2.0)
|
||||
rspec-support (~> 3.9.0)
|
||||
rspec-support (3.9.3)
|
||||
yard (0.9.14)
|
||||
|
||||
PLATFORMS
|
||||
@ -13,7 +27,8 @@ PLATFORMS
|
||||
|
||||
DEPENDENCIES
|
||||
pry
|
||||
rspec
|
||||
yard
|
||||
|
||||
BUNDLED WITH
|
||||
1.16.1
|
||||
1.17.2
|
||||
|
@ -43,6 +43,7 @@ class Gate
|
||||
# @param table [Array<Array<Integer>>] The truth table,
|
||||
# which is an array of entries. The last value in the entry is the expected output,
|
||||
# the rest are the inputs to the ports.
|
||||
# @return [Boolean] Whether the truth table matches the gate's behavior
|
||||
def self.test_table(table)
|
||||
ports=[]
|
||||
(table[0].length-1).times do
|
||||
|
@ -1,13 +1,6 @@
|
||||
# Represents a NOT gate
|
||||
class NotGate < Gate
|
||||
|
||||
# (see Gate#initialize)
|
||||
def initialize(*args)
|
||||
@outmask=0
|
||||
super
|
||||
@outmask=(2**@width)-1
|
||||
end
|
||||
|
||||
# Add a port to the gate. As this is a NOT gate, there may only be one port.
|
||||
# @param (see Gate#add_input)
|
||||
# @return [void]
|
||||
@ -22,6 +15,6 @@ class NotGate < Gate
|
||||
# Calculates NOT of input and sets output port to that value.
|
||||
# @param vals [Array<Integer>] List of values for connected ports.
|
||||
def inputs_changed(vals)
|
||||
out.setval((~vals[0]) & @outmask)
|
||||
out.setval((~vals[0]) & ((2**@width)-1))
|
||||
end
|
||||
end
|
||||
|
@ -3,6 +3,7 @@ class VCD
|
||||
|
||||
# @!attribute [w] fd
|
||||
# @api private
|
||||
# Used for testing to set the file to an RSpec double.
|
||||
attr_writer :fd
|
||||
# @param filename [String] The filename to output to
|
||||
# @param timescale [String] The timescale
|
||||
|
@ -10,6 +10,21 @@ describe Gate do
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
it "makes sure that all ports have the same width on creation" do
|
||||
a=Port.new(8)
|
||||
b=Port.new(7)
|
||||
expect{klass.new(a,b)}.to raise_error ArgumentError,"Incorrect width 7, expected 8"
|
||||
end
|
||||
|
||||
it "makes sure that all ports have the same width on adding a port" do
|
||||
a=Port.new(8)
|
||||
b=Port.new(8)
|
||||
gate=klass.new(a,b)
|
||||
port=Port.new(7)
|
||||
expect{gate.add_input(port)}.to raise_error ArgumentError,"Incorrect width 7, expected 8"
|
||||
end
|
||||
|
||||
it "calls #inputs_changed when input values change or an input is added" do
|
||||
a=Port.new(8)
|
||||
b=Port.new(8)
|
||||
|
Loading…
Reference in New Issue
Block a user