origen 0.7.34 → 0.7.35

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a9fd84e1797329dc7b32f6711451c4492ccb19a3
4
- data.tar.gz: a030d5ab1a901cfc90dbd52527832b51bc87d029
3
+ metadata.gz: 44428e2ccbfc3cd21605f6181962b7962c52f098
4
+ data.tar.gz: 021be942ef879236ffb661e579ab8372014530f7
5
5
  SHA512:
6
- metadata.gz: d146624a0ae2a4283da474b4b3b80b8320ec8e80702a427a1c46fda9cf71eae77b1c6ee794e3108ea6b4f48f92691bfec7f8010319ff332c93827536bff2d33d
7
- data.tar.gz: c5e8aba422118da126bbbaa9d8356a1b26c95848e4797ca36eb5e272afafd0948acda5b4dc4fa781f91444652436ae0f58232d8ad2579bb9b4ad61f096e7cc0b
6
+ metadata.gz: 9dd377601afa928bb2ef2a5d1991f730ab373619112c389be8ebd6aefbaac88889a5d50a245a8eb05d2958a459caed54297e28851415ec9e7a4aa8c14f8841bb
7
+ data.tar.gz: 375b2f1b4ea20532f1488d4c782b4f61bd3202c2b3a2fa5005c0d93b7a26e744913df7e9c5dcb38a8b88dcd6e7102da879eec454133f9208e9ac2749c358846e
data/config/version.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  module Origen
2
2
  MAJOR = 0
3
3
  MINOR = 7
4
- BUGFIX = 34
4
+ BUGFIX = 35
5
5
  DEV = nil
6
6
 
7
7
  VERSION = [MAJOR, MINOR, BUGFIX].join(".") + (DEV ? ".pre#{DEV}" : '')
@@ -7,5 +7,86 @@ module Origen
7
7
  autoload :InputCapture, 'origen/utility/input_capture'
8
8
  autoload :BlockArgs, 'origen/utility/block_args'
9
9
  autoload :FileDiff, 'origen/utility/file_diff.rb'
10
+
11
+ # Creates a hex-like representation of a register read value, where bits within
12
+ # a nibble have different flags set the nibble will be expanded to bits
13
+ #
14
+ # read_hex(0x55) # => "0x55"
15
+ # read_hex(nil) # => "0xX"
16
+ #
17
+ # myreg.size # => 32
18
+ #
19
+ # read_hex(myreg) # => "0xXXXXXXXX"
20
+ # myreg[7..4].store
21
+ # read_hex(myreg) # => "0xXXXXXXSX"
22
+ # myreg[23..16].read
23
+ # read_hex(myreg) # => "0xXX00XXSX"
24
+ # myreg[23..16].read(0x12)
25
+ # read_hex(myreg) # => "0xXX12XXSX"
26
+ # reg[31..28].overlay("sub")
27
+ # reg[31..28].read
28
+ # read_hex(myreg) # => "0xVX12XXSX"
29
+ # reg[5].clear_flags
30
+ # read_hex(myreg) # => "0xVX12XX_ssxs_X"
31
+ # reg[21].overlay("sub")
32
+ # reg[18].store
33
+ # read_hex(myreg) # => "0xVX_00v1_0s10_XX_ssxs_X"
34
+ def self.read_hex(reg_or_val)
35
+ if reg_or_val.respond_to?(:data)
36
+ # Make a binary string of the data, like 010S0011SSSS0110
37
+ # (where S, X or V represent store, dont care or overlay)
38
+ regval = ''
39
+ reg_or_val.shift_out_left do |bit|
40
+ if bit.is_to_be_stored?
41
+ regval += 'S'
42
+ elsif bit.is_to_be_read?
43
+ if bit.has_overlay?
44
+ regval += 'V'
45
+ else
46
+ regval += bit.data.to_s
47
+ end
48
+ else
49
+ regval += 'X'
50
+ end
51
+ end
52
+
53
+ # Now group by nibbles to give a hex-like representation, and where nibbles
54
+ # that are not all of the same type are expanded, e.g. -010s-3S6
55
+ outstr = ''
56
+ regex = '^'
57
+ (reg_or_val.size / 4).times { regex += '(....)' }
58
+ regex += '$'
59
+ Regexp.new(regex) =~ regval
60
+
61
+ nibbles = []
62
+ (reg_or_val.size / 4).times do |n| # now grouped by nibble
63
+ nibbles << Regexp.last_match[n + 1]
64
+ end
65
+
66
+ nibbles.each_with_index do |nibble, i|
67
+ # If contains any special chars...
68
+ if nibble =~ /[XSV]/
69
+ # If all the same...
70
+ if nibble[0] == nibble[1] && nibble[1] == nibble[2] && nibble[2] == nibble[3]
71
+ outstr += nibble[0, 1] # .to_s
72
+ # Otherwise present this nibble in 'binary' format
73
+ else
74
+ outstr += (i == 0 ? '' : '_') + nibble.downcase + (i == nibbles.size - 1 ? '' : '_')
75
+ end
76
+ # Otherwise if all 1s and 0s...
77
+ else
78
+ outstr += '%1X' % nibble.to_i(2)
79
+ end
80
+ end
81
+ "0x#{outstr.gsub('__', '_')}"
82
+
83
+ else
84
+ if reg_or_val
85
+ reg_or_val.to_hex
86
+ else
87
+ '0xX'
88
+ end
89
+ end
90
+ end
10
91
  end
11
92
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: origen
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.34
4
+ version: 0.7.35
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-10-06 00:00:00.000000000 Z
11
+ date: 2016-10-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport