origen_arm_debug 1.3.0 → 1.4.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 +4 -4
- data/config/boot.rb +1 -0
- data/config/commands.rb +2 -0
- data/config/version.rb +1 -1
- data/lib/origen_arm_debug/dap.rb +1 -0
- data/lib/origen_arm_debug/dap_controller.rb +2 -0
- data/lib/origen_arm_debug/helpers.rb +1 -0
- data/lib/origen_arm_debug/jtag_dp.rb +9 -1
- data/lib/origen_arm_debug/jtag_dp_controller.rb +15 -3
- data/lib/origen_arm_debug/jtag_dp_v6.rb +9 -1
- data/lib/origen_arm_debug/jtag_dp_v6_controller.rb +14 -3
- data/lib/origen_arm_debug.rb +1 -1
- data/lib/origen_arm_debug_dev/dut_jtag_axi_ack.rb +51 -0
- data/pattern/v6_workout.rb +5 -1
- data/templates/web/index.md.erb +15 -0
- metadata +6 -27
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: aa3ce5cc5d92d65c765cba5bf48f02427fe30335c55dc5b9674e222735f6d923
|
|
4
|
+
data.tar.gz: 71eb47e71ed6b5f3523fc256b0e3078a6d5745d236a18dedb8cc46d49df5ff21
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 251da1812e326e442c2348d44a5e75916f8f8d8dfe44268124bf394af5f5fea131071bf14f2c839baf6a8be8a972bacb4a5e366b7dea214256221fb6ba05e6de
|
|
7
|
+
data.tar.gz: f33584da53ac0b6e8bbc82e3102bd5de12424f2e3eea33e9b8d554234c16cabb1f6fdf7631061c64945b531792b470dc2fc5c9c0f60a3176a7a18d8d65d8ae71
|
data/config/boot.rb
CHANGED
data/config/commands.rb
CHANGED
|
@@ -32,6 +32,8 @@ when "examples", "test"
|
|
|
32
32
|
load "#{Origen.top}/lib/origen/commands/generate.rb"
|
|
33
33
|
ARGV = %w(v6_workout -t jtag_axi.rb -e j750 -r approved)
|
|
34
34
|
load "#{Origen.top}/lib/origen/commands/generate.rb"
|
|
35
|
+
ARGV = %w(v6_workout -t jtag_ack.rb -e j750 -r approved)
|
|
36
|
+
load "#{Origen.top}/lib/origen/commands/generate.rb"
|
|
35
37
|
ARGV = %w(workout -t swd -e j750 -r approved)
|
|
36
38
|
load "#{Origen.top}/lib/origen/commands/generate.rb"
|
|
37
39
|
ARGV = %w(workout -t dual_dp -e j750 -r approved)
|
data/config/version.rb
CHANGED
data/lib/origen_arm_debug/dap.rb
CHANGED
|
@@ -55,6 +55,7 @@ module OrigenARMDebug
|
|
|
55
55
|
if klass.nil? || addr.nil?
|
|
56
56
|
fail "[ARM DEBUG] Error: Must specify class_name and base_address if using 'aps' hash to define APs"
|
|
57
57
|
end
|
|
58
|
+
|
|
58
59
|
ap_opts = { class_name: klass, base_address: addr }.merge(opts)
|
|
59
60
|
else
|
|
60
61
|
fail "[ARM DEBUG] Error: Must specify class_name and base_address if using 'aps' hash to define APs"
|
|
@@ -3,6 +3,7 @@ module OrigenARMDebug
|
|
|
3
3
|
include Origen::Controller
|
|
4
4
|
include Helpers
|
|
5
5
|
|
|
6
|
+
# rubocop:disable Lint/DuplicateMethods
|
|
6
7
|
attr_accessor :dp
|
|
7
8
|
|
|
8
9
|
# Returns the currently enabled DP (or the only DP if only one
|
|
@@ -12,6 +13,7 @@ module OrigenARMDebug
|
|
|
12
13
|
def dp
|
|
13
14
|
@dp ||= dps.first
|
|
14
15
|
end
|
|
16
|
+
# rubocop:enable Lint/DuplicateMethods
|
|
15
17
|
|
|
16
18
|
def set_dp(dp)
|
|
17
19
|
if dps.size > 1
|
|
@@ -14,6 +14,7 @@ module OrigenARMDebug
|
|
|
14
14
|
return addr if addr
|
|
15
15
|
return reg_or_val.address if reg_or_val.respond_to?('address')
|
|
16
16
|
return reg_or_val.addr if reg_or_val.respond_to?('addr')
|
|
17
|
+
|
|
17
18
|
fail 'No address given, if supplying a data value instead of a register object, you must supply an :address option'
|
|
18
19
|
end
|
|
19
20
|
|
|
@@ -2,7 +2,7 @@ module OrigenARMDebug
|
|
|
2
2
|
class JTAG_DP
|
|
3
3
|
include Origen::Model
|
|
4
4
|
|
|
5
|
-
attr_reader :dpacc_select, :apacc_select
|
|
5
|
+
attr_reader :dpacc_select, :apacc_select, :read_ack
|
|
6
6
|
|
|
7
7
|
def initialize(options = {})
|
|
8
8
|
options = {
|
|
@@ -14,6 +14,14 @@ module OrigenARMDebug
|
|
|
14
14
|
}.merge(options)
|
|
15
15
|
@dpacc_select = options[:dpacc_select]
|
|
16
16
|
@apacc_select = options[:apacc_select]
|
|
17
|
+
# the acknowledge signature is LHL (2), but allow an override
|
|
18
|
+
if options[:read_ack]
|
|
19
|
+
if options[:read_ack] == true
|
|
20
|
+
@read_ack = 2
|
|
21
|
+
else
|
|
22
|
+
@read_ack = options[:read_ack]
|
|
23
|
+
end
|
|
24
|
+
end
|
|
17
25
|
add_reg :ir, 0, size: options[:ir_size]
|
|
18
26
|
|
|
19
27
|
# Virtual reg used to represent all of the various 35-bit scan chains
|
|
@@ -92,6 +92,7 @@ module OrigenARMDebug
|
|
|
92
92
|
# Part 2 - Now read real data from RDBUFF (DP-Reg)
|
|
93
93
|
dr.reset
|
|
94
94
|
dr.overlay(nil)
|
|
95
|
+
# Should compare of ack be added here as well?
|
|
95
96
|
dr[0].write(1)
|
|
96
97
|
dr[2..1].write(rdbuff.offset >> 2)
|
|
97
98
|
dr[34..3].copy_all(reg)
|
|
@@ -129,10 +130,21 @@ module OrigenARMDebug
|
|
|
129
130
|
# Part 2 - Now read real data from RDBUFF (DP-Reg)
|
|
130
131
|
dr.reset
|
|
131
132
|
dr.overlay(nil)
|
|
132
|
-
|
|
133
|
-
|
|
133
|
+
|
|
134
|
+
read_ack = options[:read_ack] || model.read_ack
|
|
135
|
+
if read_ack
|
|
136
|
+
# Add in check of acknowledge bits (confirms the operation completed)
|
|
137
|
+
dr[2..0].read read_ack
|
|
138
|
+
else
|
|
139
|
+
# Default previous behavior is to mask, no way to know if the operation successfully completed
|
|
140
|
+
dr[0].write(1)
|
|
141
|
+
dr[2..1].write(rdbuff.offset >> 2)
|
|
142
|
+
end
|
|
134
143
|
dr[34..3].copy_all(reg)
|
|
135
|
-
|
|
144
|
+
unless options[:mask].nil?
|
|
145
|
+
options[:mask] = options[:mask] << 3
|
|
146
|
+
options[:mask] += 7 if read_ack
|
|
147
|
+
end
|
|
136
148
|
ir.write!(dpacc_select)
|
|
137
149
|
dut.jtag.read_dr(dr, options)
|
|
138
150
|
end
|
|
@@ -2,7 +2,7 @@ module OrigenARMDebug
|
|
|
2
2
|
class JTAG_DPV6
|
|
3
3
|
include Origen::Model
|
|
4
4
|
|
|
5
|
-
attr_reader :dpacc_select, :apacc_select
|
|
5
|
+
attr_reader :dpacc_select, :apacc_select, :read_ack
|
|
6
6
|
|
|
7
7
|
def initialize(options = {})
|
|
8
8
|
options = {
|
|
@@ -14,6 +14,14 @@ module OrigenARMDebug
|
|
|
14
14
|
}.merge(options)
|
|
15
15
|
@dpacc_select = options[:dpacc_select]
|
|
16
16
|
@apacc_select = options[:apacc_select]
|
|
17
|
+
# the acknowledge signature is HLL (4), but allow an override
|
|
18
|
+
if options[:read_ack]
|
|
19
|
+
if options[:read_ack] == true
|
|
20
|
+
@read_ack = 4
|
|
21
|
+
else
|
|
22
|
+
@read_ack = options[:read_ack]
|
|
23
|
+
end
|
|
24
|
+
end
|
|
17
25
|
add_reg :ir, 0, size: options[:ir_size]
|
|
18
26
|
|
|
19
27
|
# Virtual reg used to represent all of the various 35-bit scan chains
|
|
@@ -122,10 +122,21 @@ module OrigenARMDebug
|
|
|
122
122
|
# Part 2 - Now read real data from RDBUFF (DP-Reg)
|
|
123
123
|
dr.reset
|
|
124
124
|
dr.overlay(nil)
|
|
125
|
-
|
|
126
|
-
|
|
125
|
+
|
|
126
|
+
read_ack = options[:read_ack] || model.read_ack
|
|
127
|
+
if read_ack
|
|
128
|
+
# Add in check of acknowledge bits (confirms the operation completed)
|
|
129
|
+
dr[2..0].read read_ack
|
|
130
|
+
else
|
|
131
|
+
# Default previous behavior is to mask, no way to know if the operation successfully completed
|
|
132
|
+
dr[0].write(1)
|
|
133
|
+
dr[2..1].write(rdbuff.offset >> 2)
|
|
134
|
+
end
|
|
127
135
|
dr[34..3].copy_all(reg)
|
|
128
|
-
|
|
136
|
+
unless options[:mask].nil?
|
|
137
|
+
options[:mask] = options[:mask] << 3
|
|
138
|
+
options[:mask] += 7 if read_ack
|
|
139
|
+
end
|
|
129
140
|
ir.write!(dpacc_select)
|
|
130
141
|
dut.jtag.read_dr(dr, options)
|
|
131
142
|
end
|
data/lib/origen_arm_debug.rb
CHANGED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
module OrigenARMDebugDev
|
|
2
|
+
# Simple JTAG-specific dut model that inherits from protocol-agnostic DUT model
|
|
3
|
+
class JTAG_AXI_ACK_DUT < DUT
|
|
4
|
+
include OrigenJTAG
|
|
5
|
+
|
|
6
|
+
# Adds jtag-required pins to the simple dut model
|
|
7
|
+
# Returns nothing.
|
|
8
|
+
def initialize(options = {})
|
|
9
|
+
super
|
|
10
|
+
add_pin :tclk
|
|
11
|
+
add_pin :tdi
|
|
12
|
+
add_pin :tdo
|
|
13
|
+
add_pin :tms
|
|
14
|
+
add_pin :trst
|
|
15
|
+
add_pin :swd_clk
|
|
16
|
+
add_pin :swd_dio
|
|
17
|
+
|
|
18
|
+
options[:class_name] = 'OrigenARMDebug::DAP'
|
|
19
|
+
options[:mem_aps] = {
|
|
20
|
+
mem_ap: {
|
|
21
|
+
base_address: 0x00000000,
|
|
22
|
+
latency: 16,
|
|
23
|
+
apreg_access_wait: 8,
|
|
24
|
+
apmem_access_wait: 8,
|
|
25
|
+
is_axi: true,
|
|
26
|
+
csw_reset: 0x1080_6002
|
|
27
|
+
},
|
|
28
|
+
mdm_ap: 0x01000000
|
|
29
|
+
}
|
|
30
|
+
options[:dp_select_reset] = 0xC2_0D00
|
|
31
|
+
options[:read_ack] = true
|
|
32
|
+
# Specify (customize) ARM Debug implementation details
|
|
33
|
+
sub_block :arm_debug, options
|
|
34
|
+
|
|
35
|
+
options[:dapv6] = true
|
|
36
|
+
options[:class_name] = 'OrigenARMDebug::DAP'
|
|
37
|
+
options[:mem_aps] = {
|
|
38
|
+
mem_ap: {
|
|
39
|
+
base_address: 0x00C2_0000,
|
|
40
|
+
latency: 16,
|
|
41
|
+
apreg_access_wait: 8,
|
|
42
|
+
apmem_access_wait: 8,
|
|
43
|
+
is_axi: true,
|
|
44
|
+
csw_reset: 0x1080_6002
|
|
45
|
+
},
|
|
46
|
+
mdm_ap: 0x00C3_0000
|
|
47
|
+
}
|
|
48
|
+
sub_block :arm_debugv6, options
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
data/pattern/v6_workout.rb
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
if Origen.app.target.name == 'jtag_axi'
|
|
2
|
+
pattern_name = "v6_workout_#{dut.arm_debugv6.dp.name}"
|
|
3
|
+
elsif Origen.app.target.name == 'jtag_ack'
|
|
4
|
+
pattern_name = "v6_workout_#{dut.arm_debugv6.dp.name}_w_ack"
|
|
5
|
+
end
|
|
2
6
|
|
|
3
7
|
Pattern.create name: pattern_name do
|
|
4
8
|
|
data/templates/web/index.md.erb
CHANGED
|
@@ -138,6 +138,21 @@ instantiation_options[:dp_select_reset] = 0xC2_0D00
|
|
|
138
138
|
sub_block :arm_debug, instantiation_options
|
|
139
139
|
~~~
|
|
140
140
|
|
|
141
|
+
By default the acknowledge signature is masked (not compared). To enable comparison of the acknowledge signature during a read operation add this instantiation option:
|
|
142
|
+
|
|
143
|
+
~~~ruby
|
|
144
|
+
mem_aps = {
|
|
145
|
+
mem_ap: { base_address: 0x00000000 }
|
|
146
|
+
mem2_ap: { base_address: 0x10000000 }
|
|
147
|
+
}
|
|
148
|
+
instantiation_options[:class_name] = 'OrigenARMDebug::DAP'
|
|
149
|
+
instantiation_options[:mem_aps] = mem_aps
|
|
150
|
+
|
|
151
|
+
instantiation_options[:read_ack] = true # Check for the acknowledge signature when reading an AP
|
|
152
|
+
|
|
153
|
+
sub_block :arm_debug, instantiation_options
|
|
154
|
+
~~~
|
|
155
|
+
|
|
141
156
|
DAP Version 6 instantiation example:
|
|
142
157
|
|
|
143
158
|
~~~ruby
|
metadata
CHANGED
|
@@ -1,22 +1,18 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: origen_arm_debug
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.4.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ronnie Lajaunie
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 2025-12-13 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: origen
|
|
15
14
|
requirement: !ruby/object:Gem::Requirement
|
|
16
15
|
requirements:
|
|
17
|
-
- - "~>"
|
|
18
|
-
- !ruby/object:Gem::Version
|
|
19
|
-
version: '0.7'
|
|
20
16
|
- - ">="
|
|
21
17
|
- !ruby/object:Gem::Version
|
|
22
18
|
version: 0.7.36
|
|
@@ -24,9 +20,6 @@ dependencies:
|
|
|
24
20
|
prerelease: false
|
|
25
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
26
22
|
requirements:
|
|
27
|
-
- - "~>"
|
|
28
|
-
- !ruby/object:Gem::Version
|
|
29
|
-
version: '0.7'
|
|
30
23
|
- - ">="
|
|
31
24
|
- !ruby/object:Gem::Version
|
|
32
25
|
version: 0.7.36
|
|
@@ -34,9 +27,6 @@ dependencies:
|
|
|
34
27
|
name: origen_jtag
|
|
35
28
|
requirement: !ruby/object:Gem::Requirement
|
|
36
29
|
requirements:
|
|
37
|
-
- - "~>"
|
|
38
|
-
- !ruby/object:Gem::Version
|
|
39
|
-
version: '0.17'
|
|
40
30
|
- - ">="
|
|
41
31
|
- !ruby/object:Gem::Version
|
|
42
32
|
version: 0.17.0
|
|
@@ -44,9 +34,6 @@ dependencies:
|
|
|
44
34
|
prerelease: false
|
|
45
35
|
version_requirements: !ruby/object:Gem::Requirement
|
|
46
36
|
requirements:
|
|
47
|
-
- - "~>"
|
|
48
|
-
- !ruby/object:Gem::Version
|
|
49
|
-
version: '0.17'
|
|
50
37
|
- - ">="
|
|
51
38
|
- !ruby/object:Gem::Version
|
|
52
39
|
version: 0.17.0
|
|
@@ -54,9 +41,6 @@ dependencies:
|
|
|
54
41
|
name: origen_swd
|
|
55
42
|
requirement: !ruby/object:Gem::Requirement
|
|
56
43
|
requirements:
|
|
57
|
-
- - "~>"
|
|
58
|
-
- !ruby/object:Gem::Version
|
|
59
|
-
version: '1'
|
|
60
44
|
- - ">="
|
|
61
45
|
- !ruby/object:Gem::Version
|
|
62
46
|
version: 1.1.0
|
|
@@ -64,13 +48,9 @@ dependencies:
|
|
|
64
48
|
prerelease: false
|
|
65
49
|
version_requirements: !ruby/object:Gem::Requirement
|
|
66
50
|
requirements:
|
|
67
|
-
- - "~>"
|
|
68
|
-
- !ruby/object:Gem::Version
|
|
69
|
-
version: '1'
|
|
70
51
|
- - ">="
|
|
71
52
|
- !ruby/object:Gem::Version
|
|
72
53
|
version: 1.1.0
|
|
73
|
-
description:
|
|
74
54
|
email:
|
|
75
55
|
- ronnie.lajaunie@nxp.com
|
|
76
56
|
executables: []
|
|
@@ -103,6 +83,7 @@ files:
|
|
|
103
83
|
- lib/origen_arm_debug_dev/dut_dual_dp.rb
|
|
104
84
|
- lib/origen_arm_debug_dev/dut_jtag.rb
|
|
105
85
|
- lib/origen_arm_debug_dev/dut_jtag_axi.rb
|
|
86
|
+
- lib/origen_arm_debug_dev/dut_jtag_axi_ack.rb
|
|
106
87
|
- lib/origen_arm_debug_dev/dut_swd.rb
|
|
107
88
|
- pattern/v6_workout.rb
|
|
108
89
|
- pattern/workout.rb
|
|
@@ -114,7 +95,6 @@ homepage: http://origen-sdk.org/origen_arm_debug
|
|
|
114
95
|
licenses:
|
|
115
96
|
- MIT
|
|
116
97
|
metadata: {}
|
|
117
|
-
post_install_message:
|
|
118
98
|
rdoc_options: []
|
|
119
99
|
require_paths:
|
|
120
100
|
- lib
|
|
@@ -122,15 +102,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
122
102
|
requirements:
|
|
123
103
|
- - ">="
|
|
124
104
|
- !ruby/object:Gem::Version
|
|
125
|
-
version:
|
|
105
|
+
version: '0'
|
|
126
106
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
127
107
|
requirements:
|
|
128
108
|
- - ">="
|
|
129
109
|
- !ruby/object:Gem::Version
|
|
130
|
-
version:
|
|
110
|
+
version: '0'
|
|
131
111
|
requirements: []
|
|
132
|
-
rubygems_version: 3.
|
|
133
|
-
signing_key:
|
|
112
|
+
rubygems_version: 3.6.3
|
|
134
113
|
specification_version: 4
|
|
135
114
|
summary: Provides an Origen API to perform register read and write operations via
|
|
136
115
|
the ARM_DEBUG protocol.
|