origen_memory_image 0.5.0 → 0.5.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/config/commands.rb +19 -64
- data/config/version.rb +1 -1
- data/lib/origen_memory_image/base.rb +18 -1
- data/templates/web/index.md.erb +10 -4
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dbd9fff5f4d4a999086de046e0c99a016a475f15
|
4
|
+
data.tar.gz: a06173b18adeab5d1ce72f919cfa6b239bc04712
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 549bd0444aa5942e410d5ceece65c21bed5d4561932e1632e9ca605838f8599eafeb4dd50cf6b24616564645b90b3eaf67550e6a6ea86d07fb2f2b6be38f7298
|
7
|
+
data.tar.gz: cb109a9dc9fa36c486e8026ea5804ce7dd721882ecb2da6e76e63e915c6a07fcb6abd3ef3973632d1a8b766a4050ef0e94702135f669c5e7226bda6c1ce4b308
|
data/config/commands.rb
CHANGED
@@ -1,14 +1,12 @@
|
|
1
1
|
# This file should be used to extend the origen command line tool with tasks
|
2
2
|
# specific to your application.
|
3
|
-
# The comments below should help to get started and you can also refer to
|
4
|
-
# lib/origen/commands.rb in your Origen core workspace for more examples and
|
5
|
-
# inspiration.
|
6
3
|
#
|
7
4
|
# Also see the official docs on adding commands:
|
8
|
-
# http://origen.
|
5
|
+
# http://origen-sdk.org/origen/guides/custom/commands/
|
9
6
|
|
10
7
|
# Map any command aliases here, for example to allow origen -x to refer to a
|
11
8
|
# command called execute you would add a reference as shown below:
|
9
|
+
|
12
10
|
aliases ={
|
13
11
|
# "-x" => "execute",
|
14
12
|
}
|
@@ -17,76 +15,37 @@ aliases ={
|
|
17
15
|
# the above alias table and should not be removed.
|
18
16
|
@command = aliases[@command] || @command
|
19
17
|
|
20
|
-
# Smome helper methods to enable test coverage, these will eventually be
|
21
|
-
# added to Origen Core, but they need to be here for now
|
22
|
-
def path_to_coverage_report
|
23
|
-
require 'pathname'
|
24
|
-
Pathname.new("#{Origen.root}/coverage/index.html").relative_path_from(Pathname.pwd)
|
25
|
-
end
|
26
|
-
|
27
|
-
def enable_coverage(name, merge=true)
|
28
|
-
if ARGV.delete("-c") || ARGV.delete("--coverage")
|
29
|
-
require 'simplecov'
|
30
|
-
SimpleCov.start do
|
31
|
-
command_name name
|
32
|
-
add_filter "DO_NOT_HAND_MODIFY" # Exclude all imports
|
33
|
-
|
34
|
-
at_exit do
|
35
|
-
SimpleCov.result.format!
|
36
|
-
puts ""
|
37
|
-
puts "To view coverage report:"
|
38
|
-
puts " firefox #{path_to_coverage_report} &"
|
39
|
-
puts ""
|
40
|
-
end
|
41
|
-
end
|
42
|
-
yield
|
43
|
-
else
|
44
|
-
yield
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
18
|
# Now branch to the specific task code
|
49
19
|
case @command
|
50
20
|
|
51
21
|
# Run the unit tests
|
52
22
|
when "specs"
|
53
|
-
|
54
|
-
|
55
|
-
require "rspec"
|
56
|
-
# For some unidentified reason Rspec does not autorun on this version
|
57
|
-
if RSpec::Core::Version::STRING && RSpec::Core::Version::STRING == "2.11.1"
|
58
|
-
RSpec::Core::Runner.run ARGV
|
59
|
-
else
|
60
|
-
require "rspec/autorun"
|
61
|
-
end
|
62
|
-
end
|
63
|
-
exit 0 # This will never be hit on a fail, RSpec will automatically exit 1
|
23
|
+
require "rspec"
|
24
|
+
exit RSpec::Core::Runner.run(['spec'])
|
64
25
|
|
65
26
|
# Run the example-based (diff) tests
|
66
27
|
#when "examples"
|
67
28
|
# Origen.load_application
|
68
29
|
# status = 0
|
69
|
-
# enable_coverage("examples") do
|
70
30
|
#
|
71
|
-
#
|
72
|
-
#
|
73
|
-
#
|
74
|
-
#
|
75
|
-
#
|
76
|
-
#
|
31
|
+
# # Compiler tests
|
32
|
+
# ARGV = %w(templates/example.txt.erb -t debug -r approved)
|
33
|
+
# load "origen/commands/compile.rb"
|
34
|
+
# # Pattern generator tests
|
35
|
+
# #ARGV = %w(some_pattern -t debug -r approved)
|
36
|
+
# #load "#{Origen.top}/lib/origen/commands/generate.rb"
|
77
37
|
#
|
78
|
-
#
|
79
|
-
#
|
80
|
-
#
|
81
|
-
#
|
38
|
+
# if Origen.app.stats.changed_files == 0 &&
|
39
|
+
# Origen.app.stats.new_files == 0 &&
|
40
|
+
# Origen.app.stats.changed_patterns == 0 &&
|
41
|
+
# Origen.app.stats.new_patterns == 0
|
82
42
|
#
|
83
|
-
#
|
84
|
-
#
|
85
|
-
#
|
86
|
-
#
|
87
|
-
# end
|
88
|
-
# puts ""
|
43
|
+
# Origen.app.stats.report_pass
|
44
|
+
# else
|
45
|
+
# Origen.app.stats.report_fail
|
46
|
+
# status = 1
|
89
47
|
# end
|
48
|
+
# puts
|
90
49
|
# exit status # Exit with a 1 on the event of a failure per std unix result codes
|
91
50
|
|
92
51
|
# Always leave an else clause to allow control to fall back through to the
|
@@ -100,8 +59,4 @@ else
|
|
100
59
|
EOT
|
101
60
|
# examples Run the examples (tests), -c will enable coverage
|
102
61
|
|
103
|
-
# Uncomment the following and update the path with the file
|
104
|
-
# that handles the commands that are shared from this plugin
|
105
|
-
#require "#{Origen.app_root}/config/shared_commands"
|
106
|
-
|
107
62
|
end
|
data/config/version.rb
CHANGED
@@ -28,9 +28,26 @@ module OrigenMemoryImage
|
|
28
28
|
def to_a(options = {})
|
29
29
|
options = {
|
30
30
|
flip_endianness: false,
|
31
|
-
data_width_in_bytes: 4
|
31
|
+
data_width_in_bytes: 4,
|
32
|
+
crop: []
|
32
33
|
}.merge(options)
|
33
34
|
data = extract_addr_data(options)
|
35
|
+
|
36
|
+
if options[:crop].count > 0
|
37
|
+
cropped_data = []
|
38
|
+
data.each do |addr, data|
|
39
|
+
case options[:crop].count
|
40
|
+
when 1
|
41
|
+
cropped_data.push([addr, data]) if addr >= options[:crop][0]
|
42
|
+
when 2
|
43
|
+
cropped_data.push([addr, data]) if addr >= options[:crop][0] && addr <= options[:crop][1]
|
44
|
+
else
|
45
|
+
fail 'crop option can only be array of size 1 or 2'
|
46
|
+
end
|
47
|
+
end
|
48
|
+
data = cropped_data
|
49
|
+
end
|
50
|
+
|
34
51
|
if options[:flip_endianness] || options[:endianness_change]
|
35
52
|
data.map do |v|
|
36
53
|
[v[0], flip_endianness(v[1], 4)]
|
data/templates/web/index.md.erb
CHANGED
@@ -79,14 +79,20 @@ my_srec.start_address # => 0x3000_F000
|
|
79
79
|
~~~
|
80
80
|
|
81
81
|
The <code>to_a</code> method returns the file content as an array of address/data pairs,
|
82
|
-
this method supports options to set the data width
|
82
|
+
this method supports options to set the data width, flip the data endianness, and crop the data
|
83
|
+
between starting and ending address:
|
83
84
|
|
84
85
|
~~~ruby
|
85
|
-
my_srec.to_a
|
86
|
+
my_srec.to_a # => [[0x3000_F000, 0x11223344], [0x3000_F004, 0x55667788], [0x3000_F008, 0x99AABBCC], ...]
|
86
87
|
|
87
|
-
my_srec.to_a(flip_endianness: true)
|
88
|
+
my_srec.to_a(flip_endianness: true) # => [[0x3000_F000, 0x44332211], [0x3000_F004, 0x88776655], [0x3000_F008, 0x99AABBCC], ...]
|
89
|
+
|
90
|
+
my_srec.to_a(data_width_in_bytes: 2) # => [[0x3000_F000, 0x1122], [0x3000_F002, 0x3344], [0x3000_F004, 0x5566], ...]
|
91
|
+
|
92
|
+
my_srec.to_a(crop: [0x3000_F004]) # => [[0x3000_F004, 0x55667788], [0x3000_F008, 0x99AABBCC], ...]
|
93
|
+
|
94
|
+
my_srec.to_a(crop: [0x3000_F000, 0x3000_F004]) # => [[0x3000_F000, 0x11223344], [0x3000_F004, 0x55667788]]
|
88
95
|
|
89
|
-
my_srec.to_a(data_width_in_bytes: 2) # => [[0x3000_F000, 0x1122], [0x3000_F002, 0x3344], [0x3000_F004, 0x5566], ...]
|
90
96
|
~~~
|
91
97
|
|
92
98
|
Such an array can be iterated on like this to separate the address and data:
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: origen_memory_image
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stephen McGinty
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-01-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: origen
|