origen 0.5.0 → 0.5.1
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/config/version.rb +1 -1
- data/lib/origen/application.rb +1 -0
- data/lib/origen/model.rb +16 -0
- data/lib/origen/registers.rb +8 -6
- data/lib/origen/registers/bit.rb +1 -0
- data/lib/origen/registers/bit_collection.rb +2 -0
- data/lib/origen/registers/reg.rb +2 -2
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 355a5d755ad608e02b9d2676a281a938f3963223
|
4
|
+
data.tar.gz: e2632fa01a0af74099c01d2b972f4e77567dd139
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7182ff153b5811d71e43b327db0b8b9bbebbbddf1ceed51ee337b2bc44ae02a9d592cc010f9c9000e44445b481412a9aed7b73f429009bfbb305aa384ff51ad0
|
7
|
+
data.tar.gz: fc9a2a22b42be0d5a31b29a0f22bbf3d933c0dea90cafa90c22398db90a58324063556bce9d6f5aae1e286c33b83a320bbc2397d4831bc3f56b618f7ad2fe862
|
data/config/version.rb
CHANGED
data/lib/origen/application.rb
CHANGED
data/lib/origen/model.rb
CHANGED
@@ -269,6 +269,22 @@ module Origen
|
|
269
269
|
result
|
270
270
|
end
|
271
271
|
|
272
|
+
# Used to proxy all method and attribute requests not implemented on the model
|
273
|
+
# to the controller.
|
274
|
+
#
|
275
|
+
# On first call of a missing method a method is generated to avoid the missing lookup
|
276
|
+
# next time, this should be faster for repeated lookups of the same method, e.g. reg
|
277
|
+
def method_missing(method, *args, &block)
|
278
|
+
if controller.respond_to?(method)
|
279
|
+
define_singleton_method(method) do |*args, &block|
|
280
|
+
controller.send(method, *args, &block)
|
281
|
+
end
|
282
|
+
send(method, *args, &block)
|
283
|
+
else
|
284
|
+
super
|
285
|
+
end
|
286
|
+
end
|
287
|
+
|
272
288
|
private
|
273
289
|
|
274
290
|
def _modes
|
data/lib/origen/registers.rb
CHANGED
@@ -618,12 +618,13 @@ module Origen
|
|
618
618
|
end
|
619
619
|
|
620
620
|
def write_register_missing!(reg)
|
621
|
+
klass = (try(:controller) || self).class
|
621
622
|
puts ''
|
622
623
|
puts ''
|
623
624
|
puts <<-EOT
|
624
|
-
You have made a request to write register: #{reg.name}, however the #{
|
625
|
-
class does not know how to do this yet. You
|
626
|
-
method in the #{
|
625
|
+
You have made a request to write register: #{reg.name}, however the #{klass}
|
626
|
+
class does not know how to do this yet. You should implement a write_register
|
627
|
+
method in the #{klass} like this:
|
627
628
|
|
628
629
|
def write_register(reg, options={})
|
629
630
|
<logic to handle the writing of the reg object here>
|
@@ -634,12 +635,13 @@ method in the #{self.class} like this:
|
|
634
635
|
end
|
635
636
|
|
636
637
|
def read_register_missing!(reg)
|
638
|
+
klass = (try(:controller) || self).class
|
637
639
|
puts ''
|
638
640
|
puts ''
|
639
641
|
puts <<-EOT
|
640
|
-
You have made a request to read register: #{reg.name}, however the #{
|
641
|
-
class does not know how to do this yet. You
|
642
|
-
method in the #{
|
642
|
+
You have made a request to read register: #{reg.name}, however the #{klass}
|
643
|
+
class does not know how to do this yet. You should implement a read_register
|
644
|
+
method in the #{klass} like this:
|
643
645
|
|
644
646
|
def read_register(reg, options={})
|
645
647
|
<logic to handle reading the reg object here>
|
data/lib/origen/registers/bit.rb
CHANGED
@@ -255,6 +255,7 @@ module Origen
|
|
255
255
|
end
|
256
256
|
self
|
257
257
|
end
|
258
|
+
alias_method :assert, :read
|
258
259
|
|
259
260
|
# Returns a value representing the bit collection / register where a bit value of
|
260
261
|
# 1 means the bit is enabled for the given operation.
|
@@ -387,6 +388,7 @@ module Origen
|
|
387
388
|
@reg.request(:read_register, options)
|
388
389
|
self
|
389
390
|
end
|
391
|
+
alias_method :assert!, :read!
|
390
392
|
|
391
393
|
# Normally whenever a register is processed by the $top.read_register method
|
392
394
|
# it will call Reg#clear_flags to acknowledge that the read has been performed,
|
data/lib/origen/registers/reg.rb
CHANGED
@@ -656,10 +656,10 @@ module Origen
|
|
656
656
|
def request(operation, options = {}) # :nodoc:
|
657
657
|
if operation == :read_register
|
658
658
|
object = reader
|
659
|
-
owner.read_register_missing!(self) unless object
|
659
|
+
(Origen.top_level || owner).read_register_missing!(self) unless object
|
660
660
|
else
|
661
661
|
object = writer
|
662
|
-
owner.write_register_missing!(self) unless object
|
662
|
+
(Origen.top_level || owner).write_register_missing!(self) unless object
|
663
663
|
end
|
664
664
|
object.send(operation, self, options)
|
665
665
|
self
|