origen_jtag 0.19.1 → 0.20.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.
@@ -1,113 +1,113 @@
1
- module OrigenJTAGDev
2
- # This is a dummy DUT model which is used
3
- # to instantiate and test the JTAG locally
4
- # during development.
5
- #
6
- # It is not included when this library is imported.
7
- class NewStyle
8
- include Origen::TopLevel
9
-
10
- attr_reader :jtag_config
11
-
12
- def initialize(options = {})
13
- @jtag_config = {
14
- verbose: true,
15
- tclk_format: :rh,
16
- tclk_multiple: 1,
17
- tdo_strobe: :tclk_high,
18
- tdo_store_cycle: 0,
19
- init_state: :unknown
20
- }
21
- @jtag_config[:tclk_format] = options[:tclk_format] if options[:tclk_format]
22
- @jtag_config[:tclk_multiple] = options[:tclk_multiple] if options[:tclk_multiple]
23
- @jtag_config[:tdo_strobe] = options[:tdo_strobe] if options[:tdo_strobe]
24
- @jtag_config[:tdo_store_cycle] = options[:tdo_store_cycle] if options[:tdo_store_cycle]
25
- @jtag_config[:init_state] = options[:init_state] if options[:init_state]
26
- @jtag_config[:tclk_vals] = options[:tclk_vals] if options[:tclk_vals]
27
-
28
- instantiate_registers(options)
29
- instantiate_pins(options)
30
- sub_block :jtag, { class_name: 'OrigenJTAG::Driver' }.merge(@jtag_config)
31
- if options[:extra_port]
32
- sub_block :jtag2, { class_name: 'OrigenJTAG::Driver', tck_pin: pin(:tck_2), tdi_pin: pin(:tdi_2), tdo_pin: pin(:tdo_2), tms_pin: pin(:tms_2) }.merge(@jtag_config)
33
- end
34
- end
35
-
36
- def instantiate_registers(options = {})
37
- reg :test16, 0x0012, size: 16 do |reg|
38
- reg.bit 15..8, :bus
39
- reg.bit 0, :bit
40
- end
41
-
42
- reg :test32, 0x0014, size: 32 do |reg|
43
- reg.bit 31..16, :bus
44
- reg.bit 0, :bit
45
- end
46
-
47
- reg :full16, 0x0012, size: 16 do |reg|
48
- reg.bit 15..0, :data
49
- end
50
- end
51
-
52
- def instantiate_pins(options = {})
53
- if options[:invalid_pins]
54
- add_pin :tck
55
- else
56
- add_pin :tclk
57
- end
58
- add_pin :tdi
59
- add_pin :tdo
60
- add_pin :tms
61
-
62
- if options[:extra_port]
63
- add_pin :tck_2
64
- add_pin :tdi_2
65
- add_pin :tdo_2
66
- add_pin :tms_2
67
- end
68
- end
69
-
70
- def startup(options = {})
71
- tester.set_timeset('nvmbist', 40)
72
- end
73
-
74
- # Getter for top-level tclk_format setting
75
- def tclk_format
76
- @jtag_config[:tclk_format]
77
- end
78
-
79
- # Getter for top-level tclk_multiple setting
80
- def tclk_multiple
81
- @jtag_config[:tclk_multiple]
82
- end
83
-
84
- # Getter for top-level tclk_vals setting
85
- def tclk_vals
86
- @jtag_config[:tclk_vals]
87
- end
88
-
89
- # Getter for top-level tdo_strobe setting
90
- def tdo_strobe
91
- @jtag_config[:tdo_strobe]
92
- end
93
-
94
- # Getter for top-level tdo_store_cycle setting
95
- def tdo_store_cycle
96
- @jtag_config[:tdo_store_cycle]
97
- end
98
-
99
- # Getter for top-level init_state setting
100
- def init_state
101
- @jtag_config[:init_state]
102
- end
103
-
104
- # Wouldn't want to do this in reality, but allows some flexibility duing gem testing
105
- def update_jtag_config(cfg, val)
106
- if @jtag_config.key?(cfg)
107
- @jtag_config[cfg] = val
108
- else
109
- fail "#{cfg} not a part of @jtag_config"
110
- end
111
- end
112
- end
113
- end
1
+ module OrigenJTAGDev
2
+ # This is a dummy DUT model which is used
3
+ # to instantiate and test the JTAG locally
4
+ # during development.
5
+ #
6
+ # It is not included when this library is imported.
7
+ class NewStyle
8
+ include Origen::TopLevel
9
+
10
+ attr_reader :jtag_config
11
+
12
+ def initialize(options = {})
13
+ @jtag_config = {
14
+ verbose: true,
15
+ tclk_format: :rh,
16
+ tclk_multiple: 1,
17
+ tdo_strobe: :tclk_high,
18
+ tdo_store_cycle: 0,
19
+ init_state: :unknown
20
+ }
21
+ @jtag_config[:tclk_format] = options[:tclk_format] if options[:tclk_format]
22
+ @jtag_config[:tclk_multiple] = options[:tclk_multiple] if options[:tclk_multiple]
23
+ @jtag_config[:tdo_strobe] = options[:tdo_strobe] if options[:tdo_strobe]
24
+ @jtag_config[:tdo_store_cycle] = options[:tdo_store_cycle] if options[:tdo_store_cycle]
25
+ @jtag_config[:init_state] = options[:init_state] if options[:init_state]
26
+ @jtag_config[:tclk_vals] = options[:tclk_vals] if options[:tclk_vals]
27
+
28
+ instantiate_registers(options)
29
+ instantiate_pins(options)
30
+ sub_block :jtag, { class_name: 'OrigenJTAG::Driver' }.merge(@jtag_config)
31
+ if options[:extra_port]
32
+ sub_block :jtag2, { class_name: 'OrigenJTAG::Driver', tck_pin: pin(:tck_2), tdi_pin: pin(:tdi_2), tdo_pin: pin(:tdo_2), tms_pin: pin(:tms_2) }.merge(@jtag_config)
33
+ end
34
+ end
35
+
36
+ def instantiate_registers(options = {})
37
+ reg :test16, 0x0012, size: 16 do |reg|
38
+ reg.bit 15..8, :bus
39
+ reg.bit 0, :bit
40
+ end
41
+
42
+ reg :test32, 0x0014, size: 32 do |reg|
43
+ reg.bit 31..16, :bus
44
+ reg.bit 0, :bit
45
+ end
46
+
47
+ reg :full16, 0x0012, size: 16 do |reg|
48
+ reg.bit 15..0, :data
49
+ end
50
+ end
51
+
52
+ def instantiate_pins(options = {})
53
+ if options[:invalid_pins]
54
+ add_pin :tck
55
+ else
56
+ add_pin :tclk
57
+ end
58
+ add_pin :tdi
59
+ add_pin :tdo
60
+ add_pin :tms
61
+
62
+ if options[:extra_port]
63
+ add_pin :tck_2
64
+ add_pin :tdi_2
65
+ add_pin :tdo_2
66
+ add_pin :tms_2
67
+ end
68
+ end
69
+
70
+ def startup(options = {})
71
+ tester.set_timeset('nvmbist', 40)
72
+ end
73
+
74
+ # Getter for top-level tclk_format setting
75
+ def tclk_format
76
+ @jtag_config[:tclk_format]
77
+ end
78
+
79
+ # Getter for top-level tclk_multiple setting
80
+ def tclk_multiple
81
+ @jtag_config[:tclk_multiple]
82
+ end
83
+
84
+ # Getter for top-level tclk_vals setting
85
+ def tclk_vals
86
+ @jtag_config[:tclk_vals]
87
+ end
88
+
89
+ # Getter for top-level tdo_strobe setting
90
+ def tdo_strobe
91
+ @jtag_config[:tdo_strobe]
92
+ end
93
+
94
+ # Getter for top-level tdo_store_cycle setting
95
+ def tdo_store_cycle
96
+ @jtag_config[:tdo_store_cycle]
97
+ end
98
+
99
+ # Getter for top-level init_state setting
100
+ def init_state
101
+ @jtag_config[:init_state]
102
+ end
103
+
104
+ # Wouldn't want to do this in reality, but allows some flexibility duing gem testing
105
+ def update_jtag_config(cfg, val)
106
+ if @jtag_config.key?(cfg)
107
+ @jtag_config[cfg] = val
108
+ else
109
+ fail "#{cfg} not a part of @jtag_config"
110
+ end
111
+ end
112
+ end
113
+ end
@@ -1,94 +1,94 @@
1
- module OrigenJTAGDev
2
- # This is a dummy DUT model which is used
3
- # to instantiate and test the JTAG locally
4
- # during development.
5
- #
6
- # It is not included when this library is imported.
7
- class DUT
8
- include Origen::TopLevel
9
- include OrigenJTAG
10
-
11
- attr_reader :jtag_config
12
-
13
- JTAG_CONFIG = {
14
- verbose: true,
15
- tclk_format: :rh,
16
- tclk_multiple: 1,
17
- tdo_strobe: :tclk_high,
18
- tdo_store_cycle: 0,
19
- init_state: :unknown
20
- }
21
-
22
- def initialize(options = {})
23
- JTAG_CONFIG[:tclk_format] = options[:tclk_format] if options[:tclk_format]
24
- JTAG_CONFIG[:tclk_multiple] = options[:tclk_multiple] if options[:tclk_multiple]
25
- JTAG_CONFIG[:tdo_strobe] = options[:tdo_strobe] if options[:tdo_strobe]
26
- JTAG_CONFIG[:tdo_store_cycle] = options[:tdo_store_cycle] if options[:tdo_store_cycle]
27
- JTAG_CONFIG[:init_state] = options[:init_state] if options[:init_state]
28
-
29
- instantiate_registers(options)
30
- instantiate_pins(options)
31
- end
32
-
33
- def instantiate_registers(options = {})
34
- reg :test16, 0x0012, size: 16 do |reg|
35
- reg.bit 15..8, :bus
36
- reg.bit 0, :bit
37
- end
38
-
39
- reg :test32, 0x0014, size: 32 do |reg|
40
- reg.bit 31..16, :bus
41
- reg.bit 0, :bit
42
- end
43
-
44
- reg :full16, 0x0012, size: 16 do |reg|
45
- reg.bit 15..0, :data
46
- end
47
- end
48
-
49
- def instantiate_pins(options = {})
50
- add_pin :tclk
51
- add_pin :tdi
52
- add_pin :tdo
53
- add_pin :tms
54
- end
55
-
56
- def startup(options = {})
57
- tester.set_timeset('nvmbist', 40)
58
- end
59
-
60
- # Getter for top-level tclk_format setting
61
- def tclk_format
62
- JTAG_CONFIG[:tclk_format]
63
- end
64
-
65
- # Getter for top-level tclk_multiple setting
66
- def tclk_multiple
67
- JTAG_CONFIG[:tclk_multiple]
68
- end
69
-
70
- # Getter for top-level tdo_strobe setting
71
- def tdo_strobe
72
- JTAG_CONFIG[:tdo_strobe]
73
- end
74
-
75
- # Getter for top-level tdo_store_cycle setting
76
- def tdo_store_cycle
77
- JTAG_CONFIG[:tdo_store_cycle]
78
- end
79
-
80
- # Getter for top-level init_state setting
81
- def init_state
82
- JTAG_CONFIG[:init_state]
83
- end
84
-
85
- # Wouldn't want to do this in reality, but allows some flexibility duing gem testing
86
- def update_jtag_config(cfg, val)
87
- if JTAG_CONFIG.key?(cfg)
88
- JTAG_CONFIG[cfg] = val
89
- else
90
- fail "#{cfg} not a part of JTAG_CONFIG"
91
- end
92
- end
93
- end
94
- end
1
+ module OrigenJTAGDev
2
+ # This is a dummy DUT model which is used
3
+ # to instantiate and test the JTAG locally
4
+ # during development.
5
+ #
6
+ # It is not included when this library is imported.
7
+ class DUT
8
+ include Origen::TopLevel
9
+ include OrigenJTAG
10
+
11
+ attr_reader :jtag_config
12
+
13
+ JTAG_CONFIG = {
14
+ verbose: true,
15
+ tclk_format: :rh,
16
+ tclk_multiple: 1,
17
+ tdo_strobe: :tclk_high,
18
+ tdo_store_cycle: 0,
19
+ init_state: :unknown
20
+ }
21
+
22
+ def initialize(options = {})
23
+ JTAG_CONFIG[:tclk_format] = options[:tclk_format] if options[:tclk_format]
24
+ JTAG_CONFIG[:tclk_multiple] = options[:tclk_multiple] if options[:tclk_multiple]
25
+ JTAG_CONFIG[:tdo_strobe] = options[:tdo_strobe] if options[:tdo_strobe]
26
+ JTAG_CONFIG[:tdo_store_cycle] = options[:tdo_store_cycle] if options[:tdo_store_cycle]
27
+ JTAG_CONFIG[:init_state] = options[:init_state] if options[:init_state]
28
+
29
+ instantiate_registers(options)
30
+ instantiate_pins(options)
31
+ end
32
+
33
+ def instantiate_registers(options = {})
34
+ reg :test16, 0x0012, size: 16 do |reg|
35
+ reg.bit 15..8, :bus
36
+ reg.bit 0, :bit
37
+ end
38
+
39
+ reg :test32, 0x0014, size: 32 do |reg|
40
+ reg.bit 31..16, :bus
41
+ reg.bit 0, :bit
42
+ end
43
+
44
+ reg :full16, 0x0012, size: 16 do |reg|
45
+ reg.bit 15..0, :data
46
+ end
47
+ end
48
+
49
+ def instantiate_pins(options = {})
50
+ add_pin :tclk
51
+ add_pin :tdi
52
+ add_pin :tdo
53
+ add_pin :tms
54
+ end
55
+
56
+ def startup(options = {})
57
+ tester.set_timeset('nvmbist', 40)
58
+ end
59
+
60
+ # Getter for top-level tclk_format setting
61
+ def tclk_format
62
+ JTAG_CONFIG[:tclk_format]
63
+ end
64
+
65
+ # Getter for top-level tclk_multiple setting
66
+ def tclk_multiple
67
+ JTAG_CONFIG[:tclk_multiple]
68
+ end
69
+
70
+ # Getter for top-level tdo_strobe setting
71
+ def tdo_strobe
72
+ JTAG_CONFIG[:tdo_strobe]
73
+ end
74
+
75
+ # Getter for top-level tdo_store_cycle setting
76
+ def tdo_store_cycle
77
+ JTAG_CONFIG[:tdo_store_cycle]
78
+ end
79
+
80
+ # Getter for top-level init_state setting
81
+ def init_state
82
+ JTAG_CONFIG[:init_state]
83
+ end
84
+
85
+ # Wouldn't want to do this in reality, but allows some flexibility duing gem testing
86
+ def update_jtag_config(cfg, val)
87
+ if JTAG_CONFIG.key?(cfg)
88
+ JTAG_CONFIG[cfg] = val
89
+ else
90
+ fail "#{cfg} not a part of JTAG_CONFIG"
91
+ end
92
+ end
93
+ end
94
+ end
@@ -1,12 +1,12 @@
1
- if tester.uflex?
2
- Pattern.create do
3
- tester.overlay_style = :digsrc
4
- dut.full16.overlay 'dummy_str'
5
- dut.jtag.write_dr dut.full16
6
-
7
- tester.capture_style = :digcap
8
- dut.full16.overlay nil
9
- dut.full16.store
10
- dut.jtag.read_dr dut.full16
11
- end
1
+ if tester.uflex?
2
+ Pattern.create do
3
+ tester.overlay_style = :digsrc
4
+ dut.full16.overlay 'dummy_str'
5
+ dut.jtag.write_dr dut.full16
6
+
7
+ tester.capture_style = :digcap
8
+ dut.full16.overlay nil
9
+ dut.full16.store
10
+ dut.jtag.read_dr dut.full16
11
+ end
12
12
  end
@@ -1,13 +1,13 @@
1
- if tester.j750? || tester.uflex?
2
- Pattern.create(options = { name: 'global_label_test' }) do
3
-
4
- jtag = $dut.jtag
5
- reg = $dut.reg(:full16)
6
-
7
- cc 'TDO should be HLHL_LHLH_HLHL_LHLH'
8
- reg.write(0xFFFF)
9
- reg.overlay('globaltest')
10
- jtag.write_dr reg, overlay: true, overlay_label: 'thisisthegloballabel'
11
-
12
- end
1
+ if tester.j750? || tester.uflex?
2
+ Pattern.create(options = { name: 'global_label_test' }) do
3
+
4
+ jtag = $dut.jtag
5
+ reg = $dut.reg(:full16)
6
+
7
+ cc 'TDO should be HLHL_LHLH_HLHL_LHLH'
8
+ reg.write(0xFFFF)
9
+ reg.overlay('globaltest')
10
+ jtag.write_dr reg, overlay: true, overlay_label: 'thisisthegloballabel'
11
+
12
+ end
13
13
  end