HDLRuby 2.6.22 → 2.6.23
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
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2d8c97794e72e7b03ad7d6db03c24ff4fb77748c3340bc9b9857a64537118e8f
|
4
|
+
data.tar.gz: 8077bcb0c9ce65c3372943ffcdeb2fd756fcd6969e94e135bb32a53b3de1e650
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 104fae34f93944ecc476026b0e8c97b548220e92b7e14727f66af0dc8e6e3655b9dee20b1057f177263ad8947fd2a289333b7aa4378e9baaf16dac57cb41b988
|
7
|
+
data.tar.gz: 47c8c77471d8aff9cc4e601f403d3f32f254658f81884075cdc25e9c4ea422cbd3ef645664fcc3524f2cfb632c2a7c3f11d1cff20451a81e17422e3fab0f4130
|
@@ -0,0 +1,90 @@
|
|
1
|
+
|
2
|
+
system :four2eight do
|
3
|
+
[4].input :four
|
4
|
+
output :o0, :o1, :o2, :o3, :o4, :o5, :o6, :o7
|
5
|
+
|
6
|
+
o0 <= four[0]; o1 <= four[1]; o2 <= four[2]; o3 <= four[3]
|
7
|
+
o4 <= four[0]; o5 <= four[1]; o6 <= four[2]; o7 <= four[3]
|
8
|
+
end
|
9
|
+
|
10
|
+
system :four2sixfour do
|
11
|
+
[4].input :four
|
12
|
+
output :o00, :o01, :o02, :o03, :o04, :o05, :o06, :o07,
|
13
|
+
:o08, :o09, :o0A, :o0B, :o0C, :o0D, :o0E, :o0F,
|
14
|
+
:o10, :o11, :o12, :o13, :o14, :o15, :o16, :o17,
|
15
|
+
:o18, :o19, :o1A, :o1B, :o1C, :o1D, :o1E, :o1F,
|
16
|
+
:o20, :o21, :o22, :o23, :o24, :o25, :o26, :o27,
|
17
|
+
:o28, :o29, :o2A, :o2B, :o2C, :o2D, :o2E, :o2F,
|
18
|
+
:o30, :o31, :o32, :o33, :o34, :o35, :o36, :o37,
|
19
|
+
:o38, :o39, :o3A, :o3B, :o3C, :o3D, :o3E, :o3F
|
20
|
+
|
21
|
+
|
22
|
+
o00 <= four[0]; o01 <= four[1]; o02 <= four[2]; o03 <= four[3]
|
23
|
+
o04 <= four[0]; o05 <= four[1]; o06 <= four[2]; o07 <= four[3]
|
24
|
+
o08 <= four[0]; o09 <= four[1]; o0A <= four[2]; o0B <= four[3]
|
25
|
+
o0C <= four[0]; o0D <= four[1]; o0E <= four[2]; o0F <= four[3]
|
26
|
+
o10 <= four[0]; o11 <= four[1]; o12 <= four[2]; o13 <= four[3]
|
27
|
+
o14 <= four[0]; o15 <= four[1]; o16 <= four[2]; o17 <= four[3]
|
28
|
+
o18 <= four[0]; o19 <= four[1]; o1A <= four[2]; o1B <= four[3]
|
29
|
+
o1C <= four[0]; o1D <= four[1]; o1E <= four[2]; o1F <= four[3]
|
30
|
+
o20 <= four[0]; o21 <= four[1]; o22 <= four[2]; o23 <= four[3]
|
31
|
+
o24 <= four[0]; o25 <= four[1]; o26 <= four[2]; o27 <= four[3]
|
32
|
+
o28 <= four[0]; o29 <= four[1]; o2A <= four[2]; o2B <= four[3]
|
33
|
+
o2C <= four[0]; o2D <= four[1]; o2E <= four[2]; o2F <= four[3]
|
34
|
+
o30 <= four[0]; o31 <= four[1]; o32 <= four[2]; o33 <= four[3]
|
35
|
+
o34 <= four[0]; o35 <= four[1]; o36 <= four[2]; o37 <= four[3]
|
36
|
+
o38 <= four[0]; o39 <= four[1]; o3A <= four[2]; o3B <= four[3]
|
37
|
+
o3C <= four[0]; o3D <= four[1]; o3E <= four[2]; o3F <= four[3]
|
38
|
+
end
|
39
|
+
|
40
|
+
|
41
|
+
|
42
|
+
# A benchmark for testing some enumarable properties of expression (to_a).
|
43
|
+
system :with_to_a_bench do
|
44
|
+
[4].inner :four
|
45
|
+
[8].inner :val, :res, :eight
|
46
|
+
[64].inner :val64, :res64, :sixfour
|
47
|
+
|
48
|
+
vals = val.to_a
|
49
|
+
val64s = val64.to_a
|
50
|
+
|
51
|
+
four2eight(:my_four2eight).(four,*(eight.to_a.reverse))
|
52
|
+
four2sixfour(:my_four2sixfour).(four,*(sixfour.to_a.reverse))
|
53
|
+
|
54
|
+
timed do
|
55
|
+
val <= _01101010
|
56
|
+
res <= vals.reverse
|
57
|
+
!10.ns
|
58
|
+
val64 <= _0110101001101010011010100110101001101010011010100110101001101010
|
59
|
+
res64 <= val64s.reverse
|
60
|
+
!10.ns
|
61
|
+
val <= _00000000
|
62
|
+
val64 <= _0000000000000000000000000000000000000000000000000000000000000000
|
63
|
+
!10.ns
|
64
|
+
vals.each.with_index do |v,i|
|
65
|
+
v <= (i/2) & _1
|
66
|
+
end
|
67
|
+
res <= val
|
68
|
+
!10.ns
|
69
|
+
val64s.each.with_index do |v,i|
|
70
|
+
v <= (i/2) & _1
|
71
|
+
end
|
72
|
+
res64 <= val64
|
73
|
+
!10.ns
|
74
|
+
val <= _01010011
|
75
|
+
!10.ns
|
76
|
+
8.times do |i|
|
77
|
+
val64s[i] <= val[i]
|
78
|
+
val64s[i+32] <= val[i]
|
79
|
+
val64s[i+56] <= val[i]
|
80
|
+
end
|
81
|
+
res64 <= val64
|
82
|
+
!10.ns
|
83
|
+
four <= _0000
|
84
|
+
!10.ns
|
85
|
+
four <= _0001
|
86
|
+
!10.ns
|
87
|
+
four <= _1100
|
88
|
+
!10.ns
|
89
|
+
end
|
90
|
+
end
|
@@ -56,9 +56,9 @@ module HDLRuby::Low
|
|
56
56
|
# Extracts the expressions from the casts.
|
57
57
|
def casts_without_expression!
|
58
58
|
# Apply on the left value.
|
59
|
-
self.set_left!(self.left.casts_without_expression)
|
59
|
+
self.set_left!(self.left.casts_without_expression!)
|
60
60
|
# Apply on the right value.
|
61
|
-
self.set_right!(self.right.casts_without_expression)
|
61
|
+
self.set_right!(self.right.casts_without_expression!)
|
62
62
|
return self
|
63
63
|
end
|
64
64
|
end
|
@@ -71,7 +71,7 @@ module HDLRuby::Low
|
|
71
71
|
# Extracts the expressions from the casts.
|
72
72
|
def casts_without_expression!
|
73
73
|
# Apply on the arguments.
|
74
|
-
self.map_args!(&:casts_without_expression)
|
74
|
+
self.map_args!(&:casts_without_expression!)
|
75
75
|
return self
|
76
76
|
end
|
77
77
|
end
|
@@ -84,12 +84,12 @@ module HDLRuby::Low
|
|
84
84
|
# Extracts the expressions from the casts.
|
85
85
|
def casts_without_expression!
|
86
86
|
# Apply on the condition.
|
87
|
-
self.set_condition!(self.condition.casts_without_expression)
|
87
|
+
self.set_condition!(self.condition.casts_without_expression!)
|
88
88
|
# Apply on the yes.
|
89
89
|
self.yes.casts_without_expression!
|
90
90
|
# Apply on the noifs.
|
91
91
|
@noifs.map! do |cond,stmnt|
|
92
|
-
[cond.casts_without_expression
|
92
|
+
[cond.casts_without_expression!,stmnt.casts_without_expression!]
|
93
93
|
end
|
94
94
|
# Apply on the no if any.
|
95
95
|
self.no.casts_without_expression! if self.no
|
@@ -104,7 +104,7 @@ module HDLRuby::Low
|
|
104
104
|
# Extracts the expressions from the casts.
|
105
105
|
def casts_without_expression!
|
106
106
|
# Apply on the match.
|
107
|
-
self.set_match!(self.match.casts_without_expression)
|
107
|
+
self.set_match!(self.match.casts_without_expression!)
|
108
108
|
# Apply on the statement.
|
109
109
|
self.statement.casts_without_expression!
|
110
110
|
return self
|
@@ -120,7 +120,7 @@ module HDLRuby::Low
|
|
120
120
|
def casts_without_expression!
|
121
121
|
# No need to apply on the value!
|
122
122
|
# Apply on the value.
|
123
|
-
self.set_value!(self.value.casts_without_expression)
|
123
|
+
self.set_value!(self.value.casts_without_expression!)
|
124
124
|
# Apply on the whens.
|
125
125
|
self.each_when(&:casts_without_expression!)
|
126
126
|
# Apply on the default if any.
|
@@ -169,9 +169,10 @@ module HDLRuby::Low
|
|
169
169
|
# expressions from cast.
|
170
170
|
class Value
|
171
171
|
# Extracts the expressions from the casts.
|
172
|
-
def casts_without_expression
|
173
|
-
# Simple clones.
|
174
|
-
return self.clone
|
172
|
+
def casts_without_expression!
|
173
|
+
# # Simple clones.
|
174
|
+
# return self.clone
|
175
|
+
return self
|
175
176
|
end
|
176
177
|
end
|
177
178
|
|
@@ -180,9 +181,10 @@ module HDLRuby::Low
|
|
180
181
|
# expressions from cast.
|
181
182
|
class Cast
|
182
183
|
# Extracts the expressions from the casts.
|
183
|
-
def casts_without_expression
|
184
|
+
def casts_without_expression!
|
184
185
|
# Recurse on the child.
|
185
|
-
nchild = self.child.casts_without_expression
|
186
|
+
nchild = self.child.casts_without_expression!
|
187
|
+
nchild.parent = nil
|
186
188
|
# Process the cast.
|
187
189
|
unless (nchild.is_a?(Ref)) then
|
188
190
|
# Need to extract the child.
|
@@ -221,10 +223,11 @@ module HDLRuby::Low
|
|
221
223
|
class Unary
|
222
224
|
|
223
225
|
# Extracts the expressions from the casts.
|
224
|
-
def casts_without_expression
|
225
|
-
# Recurse on the sub node.
|
226
|
-
return Unary.new(self.type,self.operator,
|
227
|
-
|
226
|
+
def casts_without_expression!
|
227
|
+
# # Recurse on the sub node.
|
228
|
+
# return Unary.new(self.type,self.operator,
|
229
|
+
# self.child.casts_without_expression)
|
230
|
+
self.set_child!(self.child.casts_without_expression!)
|
228
231
|
return self
|
229
232
|
end
|
230
233
|
end
|
@@ -235,11 +238,14 @@ module HDLRuby::Low
|
|
235
238
|
class Binary
|
236
239
|
|
237
240
|
# Extracts the expressions from the casts.
|
238
|
-
def casts_without_expression
|
239
|
-
# Recurse on the sub nodes.
|
240
|
-
return Binary.new(self.type,self.operator,
|
241
|
-
|
242
|
-
|
241
|
+
def casts_without_expression!
|
242
|
+
# # Recurse on the sub nodes.
|
243
|
+
# return Binary.new(self.type,self.operator,
|
244
|
+
# self.left.casts_without_expression,
|
245
|
+
# self.right.casts_without_expression)
|
246
|
+
self.set_left!(self.left.casts_without_expression!)
|
247
|
+
self.set_right!(self.right.casts_without_expression!)
|
248
|
+
return self
|
243
249
|
end
|
244
250
|
end
|
245
251
|
|
@@ -250,13 +256,15 @@ module HDLRuby::Low
|
|
250
256
|
class Select
|
251
257
|
|
252
258
|
# Extracts the expressions from the casts.
|
253
|
-
def casts_without_expression
|
259
|
+
def casts_without_expression!
|
254
260
|
# Recurse on the sub node.
|
255
|
-
return Select.new(self.type,"?",
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
261
|
+
# return Select.new(self.type,"?",
|
262
|
+
# self.select.casts_without_expression,
|
263
|
+
# *self.each_choice.map do |choice|
|
264
|
+
# choice.casts_without_expression
|
265
|
+
# end )
|
266
|
+
self.set_select!(self.select.casts_without_expression!)
|
267
|
+
sef.map_choices! { |choice| choice.casts_without_expression! }
|
260
268
|
return self
|
261
269
|
end
|
262
270
|
end
|
@@ -266,11 +274,13 @@ module HDLRuby::Low
|
|
266
274
|
# in assignments to select operators.
|
267
275
|
class Concat
|
268
276
|
# Extracts the expressions from the casts.
|
269
|
-
def casts_without_expression
|
277
|
+
def casts_without_expression!
|
270
278
|
# Recurse on the sub expressions.
|
271
|
-
return Concat.new(self.type,self.each_expression.map do |expr|
|
272
|
-
|
273
|
-
end )
|
279
|
+
# return Concat.new(self.type,self.each_expression.map do |expr|
|
280
|
+
# expr.casts_without_expression
|
281
|
+
# end )
|
282
|
+
self.map_expressions! {|expr| expr.casts_without_expression! }
|
283
|
+
return self
|
274
284
|
end
|
275
285
|
end
|
276
286
|
|
@@ -279,11 +289,13 @@ module HDLRuby::Low
|
|
279
289
|
# in assignments to select operators.
|
280
290
|
class RefConcat
|
281
291
|
# Extracts the expressions from the casts.
|
282
|
-
def casts_without_expression
|
283
|
-
# Recurse on the sub references.
|
284
|
-
return RefConcat.new(self.type,self.each_expression.map do |expr|
|
285
|
-
|
286
|
-
end )
|
292
|
+
def casts_without_expression!
|
293
|
+
# # Recurse on the sub references.
|
294
|
+
# return RefConcat.new(self.type,self.each_expression.map do |expr|
|
295
|
+
# expr.casts_without_expression
|
296
|
+
# end )
|
297
|
+
self.map_expressions! {|expr| expr.casts_without_expression! }
|
298
|
+
return self
|
287
299
|
end
|
288
300
|
end
|
289
301
|
|
@@ -292,11 +304,14 @@ module HDLRuby::Low
|
|
292
304
|
# in assignments to select operators.
|
293
305
|
class RefIndex
|
294
306
|
# Extracts the expressions from the casts.
|
295
|
-
def casts_without_expression
|
307
|
+
def casts_without_expression!
|
296
308
|
# Recurse on the sub references.
|
297
|
-
return RefIndex.new(self.type,
|
298
|
-
|
299
|
-
|
309
|
+
# return RefIndex.new(self.type,
|
310
|
+
# self.ref.casts_without_expression,
|
311
|
+
# self.index.casts_without_expression)
|
312
|
+
self.set_ref!(self.ref.casts_without_expression!)
|
313
|
+
self.set_index!(self.index.casts_without_expression!)
|
314
|
+
return self
|
300
315
|
end
|
301
316
|
end
|
302
317
|
|
@@ -305,12 +320,16 @@ module HDLRuby::Low
|
|
305
320
|
# in assignments to select operators.
|
306
321
|
class RefRange
|
307
322
|
# Extracts the expressions from the casts.
|
308
|
-
def casts_without_expression
|
323
|
+
def casts_without_expression!
|
309
324
|
# Recurse on the sub references.
|
310
|
-
return RefRange.new(self.type,
|
311
|
-
|
312
|
-
|
313
|
-
|
325
|
+
# return RefRange.new(self.type,
|
326
|
+
# self.ref.casts_without_expression,
|
327
|
+
# self.range.first.casts_without_expression ..
|
328
|
+
# self.range.last.casts_without_expression)
|
329
|
+
self.set_ref!(self.ref.casts_without_expression!)
|
330
|
+
self.set_range!(self.range.first.casts_without_expression! ..
|
331
|
+
self.range.last.casts_without_expression!)
|
332
|
+
return self
|
314
333
|
end
|
315
334
|
end
|
316
335
|
|
@@ -319,11 +338,13 @@ module HDLRuby::Low
|
|
319
338
|
# in assignments to select operators.
|
320
339
|
class RefName
|
321
340
|
# Extracts the expressions from the casts.
|
322
|
-
def casts_without_expression
|
341
|
+
def casts_without_expression!
|
323
342
|
# Recurse on the sub references.
|
324
|
-
return RefName.new(self.type,
|
325
|
-
|
326
|
-
|
343
|
+
# return RefName.new(self.type,
|
344
|
+
# self.ref.casts_without_expression,
|
345
|
+
# self.name)
|
346
|
+
self.set_ref!(self.ref.casts_without_expression!)
|
347
|
+
return self
|
327
348
|
end
|
328
349
|
end
|
329
350
|
|
@@ -332,9 +353,10 @@ module HDLRuby::Low
|
|
332
353
|
# in assignments to select operators.
|
333
354
|
class RefThis
|
334
355
|
# Extracts the expressions from the casts.
|
335
|
-
def casts_without_expression
|
336
|
-
# Simply clone.
|
337
|
-
return self.clone
|
356
|
+
def casts_without_expression!
|
357
|
+
# # Simply clone.
|
358
|
+
# return self.clone
|
359
|
+
return self
|
338
360
|
end
|
339
361
|
end
|
340
362
|
|
@@ -344,9 +366,10 @@ module HDLRuby::Low
|
|
344
366
|
class StringE
|
345
367
|
|
346
368
|
# Extracts the expressions from the casts.
|
347
|
-
def casts_without_expression
|
348
|
-
return StringE.new(self.content,
|
349
|
-
|
369
|
+
def casts_without_expression!
|
370
|
+
# return StringE.new(self.content,
|
371
|
+
# *self.each_arg.map(&:casts_without_expression))
|
372
|
+
self.map_args! {|arg| arg.casts_without_expression! }
|
350
373
|
return self
|
351
374
|
end
|
352
375
|
end
|
@@ -1959,4 +1959,25 @@ module HDLRuby::Low
|
|
1959
1959
|
# Nothing to do.
|
1960
1960
|
end
|
1961
1961
|
end
|
1962
|
+
|
1963
|
+
##
|
1964
|
+
# Describes a string.
|
1965
|
+
#
|
1966
|
+
# NOTE: This is not synthesizable!
|
1967
|
+
class StringE
|
1968
|
+
|
1969
|
+
# Maps on the arguments.
|
1970
|
+
def map_args!(&ruby_block)
|
1971
|
+
@args.map! do |arg|
|
1972
|
+
arg = ruby_block.call(arg)
|
1973
|
+
arg.parent = self unless arg.parent
|
1974
|
+
arg
|
1975
|
+
end
|
1976
|
+
end
|
1977
|
+
|
1978
|
+
# Maps on the children.
|
1979
|
+
def map_nodes!(&ruby_block)
|
1980
|
+
self.map_args!(&ruby_block)
|
1981
|
+
end
|
1982
|
+
end
|
1962
1983
|
end
|
data/lib/HDLRuby/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: HDLRuby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.6.
|
4
|
+
version: 2.6.23
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lovic Gauthier
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-11-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -151,6 +151,8 @@ files:
|
|
151
151
|
- lib/HDLRuby/hdr_samples/with_multi_channels.rb
|
152
152
|
- lib/HDLRuby/hdr_samples/with_reconf.rb
|
153
153
|
- lib/HDLRuby/hdr_samples/with_reduce.rb
|
154
|
+
- lib/HDLRuby/hdr_samples/with_str2value.rb
|
155
|
+
- lib/HDLRuby/hdr_samples/with_to_a.rb
|
154
156
|
- lib/HDLRuby/hdr_samples/with_to_array.rb
|
155
157
|
- lib/HDLRuby/hdrcc.rb
|
156
158
|
- lib/HDLRuby/high_samples/_adder_fault.rb
|