origen_testers 0.7.0.pre0 → 0.7.0

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: a90943f4feeb9a5fd74e0660e8bbbc068d2b0aa0
4
- data.tar.gz: 0d0334819d9b766a4030e712ae4070074262b350
3
+ metadata.gz: d897e6581771bc27d333380a7268dd24f5823c11
4
+ data.tar.gz: 9320f4f545dba6122cfc142da034818a5ef8856c
5
5
  SHA512:
6
- metadata.gz: 9813effc8d620fe3b6279b88d6ad0176449cb31712f0cfd4789fbc22005f1ea3f1c86fcd001f988189b2717fe9999c22d1ba462bb157638f1e207bcf881acba6
7
- data.tar.gz: 8f480ad0212eb967200d833ea721ed7d002326a6b7a08988b794afe379ee0766c3debdb8061d6844bd910f389675a62916a46526140e360ff2277140662e42a5
6
+ metadata.gz: 440ddc17e513453c7611976fa25e2f310368d5fe7f409b3077d80354f3e21d8bbfe38631dff4322247b7b61417bbdd6967d0c98ca490b70acb0f5aff3ee868aa
7
+ data.tar.gz: 90bd5c77657cb3c31cda3b098ee0db03f68fb017a9796cb1cd49c8d8b5301ad4e7fb3b3db253d85614ae4c9607ffdfe793471bfd5834889a2a31b696e16a3c51
data/config/version.rb CHANGED
@@ -2,7 +2,7 @@ module OrigenTesters
2
2
  MAJOR = 0
3
3
  MINOR = 7
4
4
  BUGFIX = 0
5
- DEV = 0
5
+ DEV = nil
6
6
 
7
7
  VERSION = [MAJOR, MINOR, BUGFIX].join(".") + (DEV ? ".pre#{DEV}" : '')
8
8
  end
@@ -267,6 +267,7 @@ module OrigenTesters
267
267
  options = { offset: 0
268
268
  }.merge(options)
269
269
  update_vector microcode: 'stv', offset: options[:offset]
270
+ last_vector(options[:offset]).contains_capture = true
270
271
  end
271
272
  alias_method :to_hram, :store
272
273
  alias_method :capture, :store
@@ -285,10 +286,18 @@ module OrigenTesters
285
286
  options = pins.last.is_a?(Hash) ? pins.pop : {}
286
287
  options = {
287
288
  }.merge(options)
288
- preset_next_vector microcode: 'stv'
289
+ preset_next_vector microcode: 'stv' do |vector|
290
+ vector.contains_capture = true
291
+ end
289
292
  end
290
293
  alias_method :store!, :store_next_cycle
291
294
 
295
+ # @api private
296
+ def remove_store_from_vector(vector)
297
+ super
298
+ vector.microcode = nil
299
+ end
300
+
292
301
  # Call a subroutine.
293
302
  #
294
303
  # This method applies a call subroutine opcode to the previous vector, it does not
@@ -69,6 +69,7 @@ module OrigenTesters
69
69
  pin.capture
70
70
  update_vector_pin_val pin, offset: options[:offset]
71
71
  last_vector(options[:offset]).dont_compress = true
72
+ last_vector(options[:offset]).contains_capture = true
72
73
  end
73
74
  end
74
75
  end
@@ -95,7 +96,8 @@ module OrigenTesters
95
96
  pins.each { |pin| pin.save; pin.capture }
96
97
  # Register this clean up function to be run after the next vector
97
98
  # is generated, cool or what!
98
- preset_next_vector do
99
+ preset_next_vector do |vector|
100
+ vector.contains_capture = true
99
101
  pins.each(&:restore)
100
102
  end
101
103
  end
@@ -3,7 +3,7 @@ module OrigenTesters
3
3
  class Vector
4
4
  attr_accessor :repeat, :microcode, :timeset, :pin_vals,
5
5
  :number, :cycle_number, :dont_compress,
6
- :comments, :inline_comment, :cycle, :number
6
+ :comments, :inline_comment, :cycle, :number, :contains_capture
7
7
 
8
8
  def initialize(attrs = {})
9
9
  @inline_comment = ''
@@ -73,7 +73,9 @@ module OrigenTesters
73
73
  if timeset.period_in_ns % tset.period_in_ns != 0
74
74
  fail "The period of timeset #{timeset.name} is not a multiple of the period of timeset #{tset.name}!"
75
75
  end
76
- if $tester.timing_toggled_pins.empty?
76
+ if contains_capture
77
+ vector_modification_required = true
78
+ elsif $tester.timing_toggled_pins.empty?
77
79
  vector_modification_required = false
78
80
  else
79
81
  # If the timing toggled pins are not driving on this vector, then no
@@ -102,6 +104,7 @@ module OrigenTesters
102
104
  v = dup
103
105
  v.repeat = 1
104
106
  v.pin_vals = inhibit_compares
107
+ $tester.remove_store_from_vector(v) if v.contains_capture
105
108
  yield v
106
109
  # Then drive the pin 'off' value for the remainder
107
110
  v = dup
@@ -110,6 +113,7 @@ module OrigenTesters
110
113
  v = dup
111
114
  v.repeat = r - 1
112
115
  pin_values.each { |vals| v.set_pin_value(vals[:pin], vals[:off]) if vals }
116
+ $tester.remove_store_from_vector(v) if v.contains_capture
113
117
  yield v
114
118
  end
115
119
  v = dup
@@ -229,11 +229,12 @@ module OrigenTesters
229
229
  end
230
230
  @preset_next_vector = nil
231
231
  end
232
+ v = Vector.new(attrs)
232
233
  stage.store Vector.new(attrs)
233
234
  inc_vec_count
234
235
  inc_cycle_count(attrs[:repeat] || 1)
235
236
  if @preset_next_vector_cleanup
236
- @preset_next_vector_cleanup.call
237
+ @preset_next_vector_cleanup.call(v)
237
238
  @preset_next_vector_cleanup = nil
238
239
  end
239
240
  end
@@ -636,5 +637,10 @@ module OrigenTesters
636
637
  @dont_care_state || 'X'
637
638
  end
638
639
  end
640
+
641
+ # @api private
642
+ def remove_store_from_vector(vector)
643
+ vector.pin_vals.sub!('C', 'X')
644
+ end
639
645
  end
640
646
  end
@@ -84,6 +84,11 @@ SetupTester.new
84
84
  8.cycles
85
85
  $tester.set_timeset("nvmbist_readout", 160)
86
86
  8.cycles
87
+ ss "Test that additional stores are not injected, only 4 TDO vectors should be captured"
88
+ 4.times do
89
+ 1.cycle
90
+ $tester.store($dut.pin(:tdo))
91
+ end
87
92
  $dut.pin(:tdo).dont_care
88
93
  $tester.set_timeset("nvmbist", 40)
89
94
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: origen_testers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0.pre0
4
+ version: 0.7.0
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-05-04 00:00:00.000000000 Z
11
+ date: 2016-05-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: origen
@@ -399,7 +399,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
399
399
  version: 1.8.11
400
400
  requirements: []
401
401
  rubyforge_project:
402
- rubygems_version: 2.2.2
402
+ rubygems_version: 2.6.2
403
403
  signing_key:
404
404
  specification_version: 4
405
405
  summary: This plugin provides Origen tester models to drive ATE type testers like