origen 0.7.1 → 0.7.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c0905a5d25c24718cd6a3c9769e9d61508a722e0
4
- data.tar.gz: e29a6c30266d6fb5fe72e9251e9c9f81475dbd71
3
+ metadata.gz: 6924c8fd9b6f9043fc3e2706d24dd645c2ba3a04
4
+ data.tar.gz: 28ff7c05aa1857d2586aac761cfd7e7e6c2ff039
5
5
  SHA512:
6
- metadata.gz: 1f5625e58084424db0e098704af32d09d771daf822f88ed4c4d238682e65fcc12650570b799ebc1305a11587005adc0b503b5370bfefc8c71ee5a15c147ada55
7
- data.tar.gz: a697945204ce3888984cc6f7f13194579a14303e67c4993b600371c818407112ebf07b54fb739f8e885eefab6a5ffe4423d9f85558c4cc3c4e242ae3afb04b0e
6
+ metadata.gz: 7c69ed2f1daeeb8c6d729ebde1fb8b7cf6fa41678600aa0f7fba5ce2453713662c9e6ec0beb0dac0e045a87b7576f9600dfd73241db12e5d10f6da586365dba7
7
+ data.tar.gz: b842b9584e28e6f19420a9dd553099488e6e849c2781331612ba1bd813c3806e91a95091ac6b5abbcf2ec15e60a54d561b85bac7032bff225630a277c7678c63
data/config/version.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  module Origen
2
2
  MAJOR = 0
3
3
  MINOR = 7
4
- BUGFIX = 1
4
+ BUGFIX = 2
5
5
  DEV = nil
6
6
 
7
7
  VERSION = [MAJOR, MINOR, BUGFIX].join(".") + (DEV ? ".pre#{DEV}" : '')
@@ -74,6 +74,43 @@ module Origen
74
74
  send(@reset)
75
75
  end
76
76
 
77
+ # Causes the pin to continuously drive 1 for 2 seconds and then drive 0 for 2 seconds.
78
+ #
79
+ # This is not an API that is intended to be used within a pattern. Rather it is a debug aid when
80
+ # setting up something like a bench test environment that uses Origen Link. For example you would
81
+ # call this method on a pin from a console session, then confirm with a multimeter that the pin
82
+ # is toggling on the relevant hardware.
83
+ #
84
+ # Call Pin#goodbye to stop it.
85
+ #
86
+ # @example Call from an origen console like this
87
+ #
88
+ # dut.pin(:tdi).hello
89
+ def hello
90
+ drive_hi
91
+ @@hello_pins ||= []
92
+ @@hello_pins << self unless @@hello_pins.include?(self)
93
+ @@hello_loop ||= Thread.new do
94
+ loop do
95
+ @@hello_pins.each(&:toggle)
96
+ if $tester
97
+ # Add a dummy timeset if one is not set yet, doesn't really matter what it is in this case
98
+ # and better not to force the user to setup a debug workaround due to running outside of a pattern
99
+ $tester.set_timeset('hello_world', 40) unless $tester.timeset
100
+ $tester.cycle
101
+ end
102
+ sleep 2
103
+ end
104
+ end
105
+ puts "Pin #{name} is toggling with a period of 2 seconds"
106
+ end
107
+
108
+ # See Pin#hello
109
+ def goodbye
110
+ @@hello_pins.delete(self)
111
+ puts "Pin #{name} has stopped toggling"
112
+ end
113
+
77
114
  # When sorting pins do it by ID
78
115
  def <=>(other_pin)
79
116
  @id <=> other_pin.id
@@ -84,6 +84,30 @@ module Origen
84
84
  end
85
85
  end
86
86
 
87
+ # Update the register contents with the live value from the device under test.
88
+ #
89
+ # The current tester needs to be an OrigenLink driver. Upon calling this method a request will
90
+ # be made to read the given register, the read data will be captured and the register model
91
+ # will be updated.
92
+ #
93
+ # The register parent register object is returned, this means that calling .sync on a register
94
+ # or bitcollection object will automatically update it and the display the register in the
95
+ # console.
96
+ #
97
+ # Normally this method should be called from a breakpoint during pattern debug, and it is
98
+ # not intended to be inserted into production pattern logic.
99
+ def sync
100
+ if tester.try(:link?)
101
+ v = tester.capture do
102
+ store!
103
+ end
104
+ write(v.first)
105
+ parent
106
+ else
107
+ Origen.log.warning 'Sync is not supported on the current tester driver, register not updated'
108
+ end
109
+ end
110
+
87
111
  # Copies all data and flags from one bit collection (or reg) object to another
88
112
  #
89
113
  # This method will accept a dumb value as the argument, in which case it is essentially a write,
@@ -155,7 +155,7 @@ module Origen
155
155
  bit_span = upper - lower + 1
156
156
  end
157
157
  width = bit_width * bit_span
158
- line << '|' + ":#{bit_name[0..width - 2]}".center(width + bit_span - 1)
158
+ line << '|' + "#{bit_name[0..width - 2]}".center(width + bit_span - 1)
159
159
 
160
160
  else
161
161
  bit.shift_out_left do |bit|
@@ -166,8 +166,13 @@ module Origen
166
166
  end
167
167
 
168
168
  else
169
- bit_name = "#{name}"
170
- line << '|' + ":#{bit_name[0..bit_width - 2]}".center(bit_width)
169
+ if name
170
+ bit_name = "#{name}"
171
+ txt = "#{bit_name[0..bit_width - 2]}"
172
+ else
173
+ txt = ''
174
+ end
175
+ line << '|' + txt.center(bit_width)
171
176
  end
172
177
  end
173
178
  end
@@ -252,17 +257,21 @@ module Origen
252
257
  end
253
258
  end
254
259
  else
255
- if bit.has_known_value?
256
- val = bit.val
257
- else
258
- if bit.reset_val == :undefined
259
- val = 'X'
260
+ if name
261
+ if bit.has_known_value?
262
+ val = bit.val
260
263
  else
261
- val = 'M'
264
+ if bit.reset_val == :undefined
265
+ val = 'X'
266
+ else
267
+ val = 'M'
268
+ end
262
269
  end
270
+ value = "#{val}" + _state_desc(bit)
271
+ line << '|' + value.center(bit_width)
272
+ else
273
+ line << '|' + ''.center(bit_width)
263
274
  end
264
- value = "#{val}" + _state_desc(bit)
265
- line << '|' + value.center(bit_width)
266
275
  end
267
276
  end
268
277
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: origen
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.1
4
+ version: 0.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stephen McGinty
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-24 00:00:00.000000000 Z
11
+ date: 2016-03-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport