cross_origen 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 5562897c79ebf49e9fb75bbb83787437c0ed8d3f
4
- data.tar.gz: 4e47b1a017700d51a7dd34be36120a46cf4d245a
2
+ SHA256:
3
+ metadata.gz: fa363dd12d4fee8fd75ab281271dd739994b0a433c9630fb556c16ef8095542d
4
+ data.tar.gz: 4bfd5b6d824821fe249a095451f9229145435d2c813bc9d4836f6315989cbe89
5
5
  SHA512:
6
- metadata.gz: 29cc7e80165331b890f6ee18b3a9e63b686ee022ec167891a065ef1ee80c89b5ae7316a55657d3f756c48fef1615dac52bae2f6dbe7026f5232aabf128d8f998
7
- data.tar.gz: a39363d28a53c3d9cd11869c15b0e7b2f7722bf8e0165b3227caebdc1352cc81a12e8838da87f0fdef1632ef96cdec8c8b1fb6c65e75be46604ca80fcd2c4ff8
6
+ metadata.gz: 98950a584c2f3c81fe453a79341bd97b7ea8a8fbe4b887ba84ee480671ae2b86a942ea7c842a1d4af85476f5e66080b05d4ed0f51a8f24313a3510ad35b2339e
7
+ data.tar.gz: c510adad00c3db5c117c320105a2eba67c529209dd0cb9e66d6fdd540ea8c0ad787578c29322fb1171fff2bc12cb0f1767c51027c69aa7374a97ef0eef1726a2
@@ -1,6 +1,6 @@
1
1
  module CrossOrigen
2
2
  MAJOR = 1
3
- MINOR = 1
3
+ MINOR = 2
4
4
  BUGFIX = 0
5
5
  DEV = nil
6
6
 
@@ -6,6 +6,9 @@ module CrossOrigen
6
6
 
7
7
  AddressBlock = Struct.new(:name, :base_address, :range, :width)
8
8
 
9
+ # Create a shorthand way to reference Origen Core's Bit ACCESS_CODES
10
+ @@access_hash = Origen::Registers::Bit.const_get(:ACCESS_CODES)
11
+
9
12
  # Import/reader that currently only supports creating registers and bit fields
10
13
  def import(file, options = {}) # rubocop:disable CyclomaticComplexity
11
14
  require 'kramdown'
@@ -66,15 +69,42 @@ module CrossOrigen
66
69
  # Do a logical bitwise AND with the reset value and mask
67
70
  reset_value = reset_value & reset_mask
68
71
  end
72
+ # Future expansion: pull in HDL path as abs_path in Origen.
69
73
  addr_block_obj.reg name, addr_offset, size: size, access: access, description: reg_description(register) do |reg|
70
74
  register.xpath('spirit:field').each do |field|
71
75
  name = fetch field.at_xpath('spirit:name'), downcase: true, to_sym: true, get_text: true
72
76
  bit_offset = fetch field.at_xpath('spirit:bitOffset'), get_text: true, to_i: true
73
77
  bit_width = fetch field.at_xpath('spirit:bitWidth'), get_text: true, to_i: true
74
- access = fetch field.at_xpath('spirit:access'), get_text: true
75
- if access =~ /\S+\-\S+/
76
- access = access[/^(\S)/, 1] + access[/\-(\S)\S+$/, 1]
77
- access = access.downcase.to_sym
78
+ xml_access = fetch field.at_xpath('spirit:access'), get_text: true
79
+ # Newer IP-XACT standards list access as < read or write>-< descriptor >, such as
80
+ # "read-write", "read-only", or "read-writeOnce"
81
+ if xml_access =~ /\S+\-\S+/ || xml_access == 'writeOnce'
82
+ # This filter alone is not capable of interpreting the 1685-2009 (and 2014). Therefore
83
+ # must reverse-interpret the content of access_hash (see top of file).
84
+ #
85
+ # First get the base access type, ie: read-write, read-only, etc.
86
+ # base_access = fetch field.at_xpath('spirit:access'), get_text: true
87
+ base_access = xml_access
88
+ # Next grab any modified write values or read actions
89
+ mod_write = fetch field.at_xpath('spirit:modifiedWriteValue'), get_text: true
90
+ read_action = fetch field.at_xpath('spirit:readAction'), get_text: true
91
+ # Using base_access, mod_write, and read_action, look up the corresponding access
92
+ # acronym from access_hash, noting it is not possible to differentiate write-only
93
+ # from write-only, read zero and read-write from dc.
94
+ #
95
+ # Matched needs to be tracked, as there is no way to differentiate :rw and :dc in IP-XACT.
96
+ # Everything imported will default to :rw, never :dc.
97
+ matched = false
98
+ @@access_hash.each_key do |key|
99
+ if @@access_hash[key][:base] == base_access && @@access_hash[key][:write] == mod_write && @@access_hash[key][:read] == read_action && !matched
100
+ access = key.to_sym
101
+ matched = true
102
+ end
103
+ end
104
+ # Older IP-XACT standards appear to also accept short acronyms like "ro", "w1c", "rw",
105
+ # etc.
106
+ elsif xml_access =~ /\S+/
107
+ access = xml_access.downcase.to_sym
78
108
  else
79
109
  # default to read-write if access is not specified
80
110
  access = :rw
@@ -117,6 +147,13 @@ xsi:schemaLocation="$REGMEM_HOME/builder/ipxact/schema/ipxact
117
147
  end
118
148
 
119
149
  # Returns a string representing the owner object in IP-XACT XML
150
+ # Usable / Available options:
151
+ # :vendor = Company name/web address, ex: 'nxp.com'
152
+ # :library = IP Library
153
+ # :schema = '1685-2009' or default of Spirit 1.4 (when no :schema option passed)
154
+ # :bus_interface = only 'AMBA3' supported at this time
155
+ # :mmap_name = Optionally set the memoryMap name to something other than the module name
156
+ # :mmap_ref = memoryMapRef name, ex: 'UserMap'
120
157
  def owner_to_xml(options = {})
121
158
  require 'nokogiri'
122
159
 
@@ -126,21 +163,43 @@ xsi:schemaLocation="$REGMEM_HOME/builder/ipxact/schema/ipxact
126
163
 
127
164
  @format = options[:format]
128
165
 
129
- schemas = [
130
- 'http://www.spiritconsortium.org/XMLSchema/SPIRIT/1.4',
131
- 'http://www.spiritconsortium.org/XMLSchema/SPIRIT/1.4/index.xsd'
132
- ]
133
- if uvm?
166
+ # Compatible schemas: Spirit 1.4, 1685-2009
167
+ # Assume Spirit 1.4 if no schema provided
168
+ if options[:schema] == '1685-2009' # Magillem tool uses alternate schema
169
+ schemas = [
170
+ 'http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009',
171
+ 'http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009/index.xsd'
172
+ ]
173
+ else # Assume Spirit 1.4 if not
174
+ schemas = [
175
+ 'http://www.spiritconsortium.org/XMLSchema/SPIRIT/1.4',
176
+ 'http://www.spiritconsortium.org/XMLSchema/SPIRIT/1.4/index.xsd'
177
+ ]
178
+ end
179
+
180
+ if uvm? && !(options[:schema] == '1685-2009')
134
181
  schemas << '$IREG_GEN/XMLSchema/SPIRIT/VendorExtensions.xsd'
135
182
  end
136
183
 
137
- headers = {
138
- 'xmlns:spirit' => 'http://www.spiritconsortium.org/XMLSchema/SPIRIT/1.4',
139
- 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
140
- 'xsi:schemaLocation' => schemas.join(' ')
141
- }
142
- if uvm?
184
+ if options[:schema] == '1685-2009' # Magillem tool uses alternate schema
185
+ headers = {
186
+ 'xmlns:spirit' => 'http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009',
187
+ 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
188
+ 'xsi:schemaLocation' => schemas.join(' ')
189
+ }
190
+ else # Assume Spirit 1.4 if not
191
+ headers = {
192
+ 'xmlns:spirit' => 'http://www.spiritconsortium.org/XMLSchema/SPIRIT/1.4',
193
+ 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
194
+ 'xsi:schemaLocation' => schemas.join(' ')
195
+ }
196
+ end
197
+
198
+ if uvm? && !(options[:schema] == '1685-2009')
143
199
  headers['xmlns:vendorExtensions'] = '$IREG_GEN/XMLSchema/SPIRIT'
200
+ # Else:
201
+ # Do nothing ?
202
+ # headers['xmlns:vendorExtensions'] = '$UVM_RGM_HOME/builder/ipxact/schema'
144
203
  end
145
204
 
146
205
  builder = Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml|
@@ -151,19 +210,44 @@ xsi:schemaLocation="$REGMEM_HOME/builder/ipxact/schema/ipxact
151
210
  # I guess this should really be the register owner's owner's name?
152
211
  spirit.name try(:ip_name) || owner.class.to_s.split('::').last
153
212
  spirit.version try(:ip_version, :version, :revision)
213
+ # The 1685-2009 schema allows for a bus interface. AMBA3 (slave) supported so far.
214
+ if options[:schema] == '1685-2009'
215
+ if options[:bus_interface] == 'AMBA3'
216
+ spirit.busInterfaces do
217
+ spirit.busInterface do
218
+ spirit.name 'Slave'
219
+ bustype_header = {
220
+ 'spirit:vendor' => options[:vendor] || 'Origen',
221
+ 'spirit:library' => 'amba3',
222
+ 'spirit:name' => 'APB3',
223
+ 'spirit:version' => '1.0'
224
+ }
225
+ xml['spirit'].busType bustype_header
226
+ spirit.slave do
227
+ mmapref_header = {
228
+ 'spirit:memoryMapRef' => options[:mmap_ref] || 'APB'
229
+ }
230
+ xml['spirit'].memoryMapRef mmapref_header
231
+ end
232
+ end
233
+ end
234
+ end
235
+ end
154
236
  spirit.memoryMaps do
155
237
  memory_maps.each do |map_name, _map|
156
238
  spirit.memoryMap do
157
- spirit.name map_name
239
+ # Optionally assign memory map name to something other than the module name in Ruby,
240
+ # default to 'RegisterMap'
241
+ spirit.name options[:mmap_name] || 'RegisterMap'
158
242
  address_blocks do |domain_name, _domain, sub_block|
159
243
  spirit.addressBlock do
244
+ # When registers reside at the top level, do not assign an address block name
160
245
  if sub_block == owner
161
246
  spirit.name nil
162
- spirit.baseAddress 0.to_hex
163
247
  else
164
248
  spirit.name address_block_name(domain_name, sub_block)
165
- spirit.baseAddress sub_block.base_address.to_hex
166
249
  end
250
+ spirit.baseAddress sub_block.base_address.to_hex
167
251
  spirit.range range(sub_block)
168
252
  spirit.width width(sub_block)
169
253
  sub_block.regs.each do |name, reg|
@@ -189,7 +273,95 @@ xsi:schemaLocation="$REGMEM_HOME/builder/ipxact/schema/ipxact
189
273
  spirit.description try(bits, :brief_description, :name_full, :full_name)
190
274
  spirit.bitOffset bits.position
191
275
  spirit.bitWidth bits.size
192
- spirit.access bits.access
276
+ # When exporting to 1685-2009 schema, need to handle special cases (writeOnce),
277
+ # modifiedWriteValue, and readAction fields.
278
+ if options[:schema] == '1685-2009'
279
+ if bits.writable? && bits.readable?
280
+ if bits.access == :w1
281
+ spirit.access 'read-writeOnce'
282
+ else
283
+ spirit.access 'read-write'
284
+ end
285
+ elsif bits.writable?
286
+ if bits.access == :wo1
287
+ spirit.access 'writeOnce'
288
+ else
289
+ spirit.access 'write-only'
290
+ end
291
+ elsif bits.readable?
292
+ spirit.access 'read-only'
293
+ end
294
+ if bits.readable?
295
+ unless @@access_hash[bits.access][:read].nil?
296
+ spirit.readAction @@access_hash[bits.access][:read]
297
+ end
298
+ end
299
+ if bits.writable?
300
+ unless @@access_hash[bits.access][:write].nil?
301
+ spirit.modifiedWriteValue @@access_hash[bits.access][:write]
302
+ end
303
+ end
304
+ else # Assume Spirit 1.4 if not
305
+ spirit.access bits.access
306
+ end
307
+ # HDL paths provide hooks for a testbench to directly manipulate the
308
+ # registers without having to go through a bus interface or read/write
309
+ # protocol. Because the hierarchical path to a register block can vary
310
+ # greatly between devices, allow the user to provide an abs_path value
311
+ # and define "full_reg_path" to assist.
312
+ #
313
+ # When registers reside at the top level of the memory map, assume "top"
314
+ # for the register path name. (Need to improve this process in the future.)
315
+ if reg.owner.top_level? == true
316
+ regpath = 'top'
317
+ else
318
+ regpath = reg.owner.path
319
+ end
320
+ # If :full_reg_path is defined, the :abs_path metadata for a register will
321
+ # be used for regpath. This can be assigned at an address block (sub-block)
322
+ # level.
323
+ unless options[:full_reg_path].nil? == true
324
+ regpath = reg.path
325
+ end
326
+ if options[:schema] == '1685-2009'
327
+ spirit.parameters do
328
+ spirit.parameter do
329
+ spirit.name '_hdlPath_'
330
+ # HDL path needs to be to the declared bit field name, NOT to the bus slice
331
+ # that Origen's "abs_path" will yield. Ex:
332
+ #
333
+ # ~~~ ruby
334
+ # reg :myreg, 0x0, size: 32 do |reg|
335
+ # bits 7..4, :bits_high
336
+ # bits 3..0, :bits_low
337
+ # end
338
+ # ~~~
339
+ #
340
+ # The abs_path to ...regs(:myreg).bits(:bits_low).abs_path will yield
341
+ # "myreg.myreg[3:0]", not "myreg.bits_low". This is not an understood path
342
+ # in Origen (myreg[3:0] does not exist in either myreg's RegCollection or BitCollection),
343
+ # and does not sync with how RTL would create bits_low[3:0].
344
+ # Therefore, use the path to "myreg"'s owner appended with bits.name (bits_low here).
345
+ #
346
+ # This can be done in a register or sub_blocks definition by defining register
347
+ # metadata for "abs_path". If the reg owner's path weren't used, but instead the
348
+ # reg's path, that would imply each register was a separate hierarchical path in
349
+ # RTL (ex: "top.myblock.regblock.myreg.myreg_bits"), which is normally not the case.
350
+ # The most likely path would be "top.myblock.regblock.myreg_bits.
351
+ spirit.value "#{regpath}.#{bits.name}"
352
+ end
353
+ end
354
+ end
355
+ # C. Hume - Unclear which vendorExtensions should be included by default, if any.
356
+ # Future improvment: Allow passing of vendorExtensions enable & value hash/string
357
+ # if options[:schema] == '1685-2009'
358
+ # spirit.vendorExtensions do
359
+ # vendorext = { 'xmlns:vendorExtensions' => '$UVM_RGM_HOME/builder/ipxact/schema' }
360
+ # xml['vendorExtensions'].hdl_path vendorext, "#{reg.path}.#{bits.name}"
361
+ # end
362
+ # end
363
+
364
+ # Allow optional inclusion of bit field values and descriptions
193
365
  if options[:include_bit_field_values]
194
366
  if bits.bit_value_descriptions[0]
195
367
  bits.bit_value_descriptions.each do |val, desc|
@@ -201,28 +373,43 @@ xsi:schemaLocation="$REGMEM_HOME/builder/ipxact/schema/ipxact
201
373
  end
202
374
  end
203
375
  end
204
- if uvm?
376
+ if uvm? && !(options[:schema] == '1685-2009')
205
377
  spirit.vendorExtensions do
206
- xml['vendorExtensions'].hdl_path bits.path(relative_to: sub_block)
378
+ xml['vendorExtensions'].hdl_path "#{regpath}.#{bits.name}"
207
379
  end
208
380
  end
209
381
  end
210
382
  end
211
383
  end
212
384
  end
213
- if uvm?
214
- spirit.vendorExtensions do
215
- xml['vendorExtensions'].hdl_path sub_block.path(relative_to: owner)
216
- end
217
- end
385
+ # Unclear whether addressBlock vendor extensions are supported in Spirit 1.4
386
+ # if uvm?
387
+ # spirit.vendorExtensions do
388
+ # xml['vendorExtensions'].hdl_path sub_block.path(relative_to: owner)
389
+ # end
390
+ # end
218
391
  end
219
392
  end
393
+ # Assume byte addressing if not specified
394
+ if owner.methods.include?(:lau) == false
395
+ spirit.addressUnitBits 8
396
+ else
397
+ spirit.addressUnitBits owner.lau
398
+ end
220
399
  end
221
400
  end
222
401
  end
223
402
  end
224
403
  end
225
- builder.to_xml
404
+ # When testing with 'origen examples', travis_ci (bash) will end up with empty tags -
405
+ # '<spirit:description/>' that do not appear on some user's tshell environments. To
406
+ # prevent false errors for this issue, force Nokogiri to use self-closing tags
407
+ # ('<spirit:description></spirit:description>'), but keep the XML formatted for readability.
408
+ # All tags with no content will appear as '<spirit:tag_name></spirit:tag_name>'.
409
+ #
410
+ builder.to_xml(save_with: Nokogiri::XML::Node::SaveOptions::NO_EMPTY_TAGS |
411
+ Nokogiri::XML::Node::SaveOptions::FORMAT)
412
+ # builder.to_xml
226
413
  end
227
414
 
228
415
  private
@@ -22,6 +22,7 @@ module CrossOrigenDev
22
22
  cr_import(path: "#{Origen.root}/imports/ipxact.xml")
23
23
  end
24
24
 
25
+ # Import Spirit 1.4 version of ATX
25
26
  def add_atx2
26
27
  sub_block :atx2, class_name: 'ATX2', base_address: 0x6000_0000
27
28
  end
@@ -31,7 +32,21 @@ module CrossOrigenDev
31
32
  include CrossOrigen
32
33
 
33
34
  def initialize
34
- cr_import(path: "#{Origen.root}/approved/ip_xact_sub_block.xml")
35
+ cr_import(path: "#{Origen.root}/approved/ip_xact_sub_block.xml", refresh: true)
36
+ end
37
+ end
38
+
39
+ # Import 1685-2009 version of ATX
40
+ def add_atx3
41
+ sub_block :atx3, class_name: 'ATX3', base_address: 0x7000_0000
42
+ end
43
+
44
+ class ATX3
45
+ include Origen::Model
46
+ include CrossOrigen
47
+
48
+ def initialize
49
+ cr_import(path: "#{Origen.root}/approved/ip_xact_sub_block_1685.xml", refresh: true)
35
50
  end
36
51
  end
37
52
 
@@ -40,22 +55,62 @@ module CrossOrigenDev
40
55
  include CrossOrigen
41
56
 
42
57
  def initialize
43
- # A manually defined register for testing the conversion of any specific attributes
58
+ # A manually defined set of registers for testing the conversion of any specific attributes
44
59
 
45
- # ** MGATE Clock Divider Register **
46
- # The MCLKDIV register is used to divide down the frequency of the HBOSCCLK input. If the MCLKDIV
60
+ # ** MPU Clock Divider Register **
61
+ #
62
+ # The MCLKDIV register is used to divide down the frequency of the OSCCLK input. If the MCLKDIV
47
63
  # register is set to value "N", then the output (beat) frequency of the clock divider is OSCCLK / (N+1). The
48
- # resulting beats are, in turn, counted by the PTIMER module to control the duration of Flash high-voltage
49
- # operations.
64
+ # resulting beats are, in turn, counted by the TIMER module to control the duration of operations.
50
65
  # This is a test of potentially problematic characters ' " \' \" < >
51
66
  reg :mclkdiv, 0x0, size: 16, bit_order: 'decrement' do
52
- # **Oscillator (Hi)** - Firmware FMU clk source selection. (Note that in addition to this firmware-controlled bit, the
53
- # FMU clock source is also dependent on test and power control discretes).
67
+ # **Oscillator (Hi)** - Clock source selection. (Note that in addition to this firmware-controlled bit, the
68
+ # clock source is also dependent on test and power control discretes).
54
69
  #
55
- # 0 | FMU clock is the externally supplied bus clock ipg_clk
56
- # 1 | FMU clock is the internal oscillator from the TFS hardblock
70
+ # 0 | Clock is the externally supplied bus clock bus_clk
71
+ # 1 | Clock is the internal oscillator from the hardblock
57
72
  bit 15, :osch, reset: 1, access: :rw
58
73
  end
74
+
75
+ # **Access Type Test Register**
76
+ #
77
+ # This register tests the IP-XACT export of various bit access types, such as write-one-to-clear,
78
+ # read-only, etc.
79
+ reg :access_types, 0x4, size: 32 do
80
+ # Test read-only access.
81
+ bit 31, :readonly, access: :ro
82
+ # Test read-write access.
83
+ bit 30, :readwrite, access: :rw
84
+ # Test read-clear access, where a read clears the value afterwards.
85
+ bit 29, :readclear, access: :rc
86
+ # Test read-set access, where a read sets the bit afterwards.
87
+ bit 28, :readset, access: :rs
88
+ # Test writable, clear-on-read access, etc...
89
+ bit 27, :writablereadclear, access: :wrc
90
+ bit 26, :writablereadset, access: :wrs
91
+ bit 25, :writeclear, access: :wc
92
+ bit 24, :writeset, access: :ws
93
+ bit 23, :writesetreadclear, access: :wsrc
94
+ bit 22, :writeclearreadset, access: :wcrs
95
+ bit 21, :write1toclear, access: :w1c
96
+ bit 20, :write1toset, access: :w1s
97
+ bit 19, :write1totoggle, access: :w1t
98
+ bit 18, :write0toclear, access: :w0c
99
+ bit 17, :write0toset, access: :w0s
100
+ bit 16, :write0totoggle, access: :w0t
101
+ bit 15, :write1tosetreadclear, access: :w1src
102
+ bit 14, :write1toclearreadset, access: :w1crs
103
+ bit 13, :write0tosetreadclear, access: :w0src
104
+ bit 12, :write0toclearreadset, access: :w0crs
105
+ bit 11, :writeonly, access: :wo
106
+ bit 10, :writeonlyclear, access: :woc
107
+ bit 9, :writeonlyreadzero, access: :worz
108
+ bit 8, :writeonlyset, access: :wos
109
+ bit 7, :writeonce, access: :w1
110
+ bit 6, :writeonlyonce, access: :wo1
111
+ bit 5, :readwritenocheck, access: :dc
112
+ bit 4, :readonlyclearafter, access: :rowz
113
+ end
59
114
  end
60
115
  end
61
116
  end
@@ -0,0 +1 @@
1
+ <%= $dut.to_ip_xact :format => :uvm, :schema=> '1685-2009', :mmap_name => 'RegisterMap', :vendor => 'origen-sdk.org', :library => 'id', :name => 'ipxact', :mmap_ref => 'test', :bus_interface => 'AMBA3' %>
@@ -0,0 +1 @@
1
+ <%= $dut.atx.to_ip_xact :format => :uvm, :schema=> '1685-2009', :mmap_name => 'RegisterMap', :vendor => 'origen-sdk.org', :library => 'id', :name => 'ipxact_1685_2009' %>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cross_origen
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stephen McGinty
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-11 00:00:00.000000000 Z
11
+ date: 2018-12-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: origen
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '0.32'
19
+ version: '0.38'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '0.32'
26
+ version: '0.38'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: sanitize
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -65,7 +65,9 @@ files:
65
65
  - templates/test/default.ralf.erb
66
66
  - templates/test/headers_default.h.erb
67
67
  - templates/test/ip_xact.xml.erb
68
+ - templates/test/ip_xact_1685-2009.xml.erb
68
69
  - templates/test/ip_xact_sub_block.xml.erb
70
+ - templates/test/ip_xact_sub_block_1685.xml.erb
69
71
  - templates/web/_history.md
70
72
  - templates/web/example.md.erb
71
73
  - templates/web/examples.md.erb
@@ -95,7 +97,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
95
97
  version: 1.8.11
96
98
  requirements: []
97
99
  rubyforge_project:
98
- rubygems_version: 2.6.7
100
+ rubygems_version: 2.7.6
99
101
  signing_key:
100
102
  specification_version: 4
101
103
  summary: Translators for importing and exporting Origen data to/from 3rd party formats