origen_testers 0.7.0.pre0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
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