origen_arm_debug 1.3.0 → 1.3.1
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/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_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 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 90de517c3d56ac340822b45422164150dc6b5639a9a068608cc8679858eb09bd
|
4
|
+
data.tar.gz: 1d8c7b2e21b429a4e90f05813689a743cb00a69caad43c207a46499bcc40414a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 906a61042cc140e79a32c2cd82509b9b001efc84cf5eaf6e63b6570740247d56550b8fce74532ffef6c4dc111dba2c2fdfca1487808f7aecbd9efa5e37f9ab86
|
7
|
+
data.tar.gz: e8ccad6598ea0da7da0d745d76fe1939df44add8bb002d40e38f8733a5329269818d3433768f67e9293ceb5a92522cc17634542d024bacaa0435692b121db7e5
|
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
@@ -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
|
@@ -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,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: origen_arm_debug
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ronnie Lajaunie
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-10-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: origen
|
@@ -103,6 +103,7 @@ files:
|
|
103
103
|
- lib/origen_arm_debug_dev/dut_dual_dp.rb
|
104
104
|
- lib/origen_arm_debug_dev/dut_jtag.rb
|
105
105
|
- lib/origen_arm_debug_dev/dut_jtag_axi.rb
|
106
|
+
- lib/origen_arm_debug_dev/dut_jtag_axi_ack.rb
|
106
107
|
- lib/origen_arm_debug_dev/dut_swd.rb
|
107
108
|
- pattern/v6_workout.rb
|
108
109
|
- pattern/workout.rb
|
@@ -122,14 +123,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
122
123
|
requirements:
|
123
124
|
- - ">="
|
124
125
|
- !ruby/object:Gem::Version
|
125
|
-
version:
|
126
|
+
version: '0'
|
126
127
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
127
128
|
requirements:
|
128
129
|
- - ">="
|
129
130
|
- !ruby/object:Gem::Version
|
130
|
-
version:
|
131
|
+
version: '0'
|
131
132
|
requirements: []
|
132
|
-
rubygems_version: 3.1.
|
133
|
+
rubygems_version: 3.1.6
|
133
134
|
signing_key:
|
134
135
|
specification_version: 4
|
135
136
|
summary: Provides an Origen API to perform register read and write operations via
|