HDLRuby 2.11.11 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (119) hide show
  1. checksums.yaml +4 -4
  2. data/README.html +3274 -0
  3. data/README.md +608 -99
  4. data/ext/hruby_sim/hruby_rcsim_build.c +27 -0
  5. data/ext/hruby_sim/hruby_sim.h +3 -0
  6. data/ext/hruby_sim/hruby_sim_calc.c +2 -0
  7. data/ext/hruby_sim/hruby_sim_core.c +17 -5
  8. data/ext/hruby_sim/hruby_sim_stack_calc.c +1 -1
  9. data/ext/hruby_sim/hruby_sim_tree_calc.c +8 -1
  10. data/ext/hruby_sim/hruby_sim_vcd.c +24 -7
  11. data/ext/hruby_sim/hruby_sim_vizualize.c +9 -1
  12. data/lib/HDLRuby/backend/hruby_allocator.rb +2 -2
  13. data/lib/HDLRuby/backend/hruby_c_allocator.rb +7 -7
  14. data/lib/HDLRuby/hdr_samples/constant_in_function.rb +3 -1
  15. data/lib/HDLRuby/hdr_samples/counter_dff_bench.rb +3 -1
  16. data/lib/HDLRuby/hdr_samples/huge_rom.rb +1 -1
  17. data/lib/HDLRuby/hdr_samples/mei8.rb +11 -11
  18. data/lib/HDLRuby/hdr_samples/mei8_bench.rb +12 -12
  19. data/lib/HDLRuby/hdr_samples/neg_arith_bench.rb +4 -4
  20. data/lib/HDLRuby/hdr_samples/rom_nest.rb +1 -1
  21. data/lib/HDLRuby/hdr_samples/ruby_fir_hw.rb +4 -4
  22. data/lib/HDLRuby/hdr_samples/struct.rb +44 -10
  23. data/lib/HDLRuby/hdr_samples/with_bram.rb +45 -0
  24. data/lib/HDLRuby/hdr_samples/with_bram_frame_stack.rb +105 -0
  25. data/lib/HDLRuby/hdr_samples/with_bram_stack.rb +69 -0
  26. data/lib/HDLRuby/hdr_samples/with_casts.rb +3 -3
  27. data/lib/HDLRuby/hdr_samples/with_concat.rb +6 -6
  28. data/lib/HDLRuby/hdr_samples/with_connector_memory.rb +2 -2
  29. data/lib/HDLRuby/hdr_samples/with_def.rb +10 -3
  30. data/lib/HDLRuby/hdr_samples/with_define_operator.rb +44 -0
  31. data/lib/HDLRuby/hdr_samples/with_fixpoint.rb +12 -12
  32. data/lib/HDLRuby/hdr_samples/with_init.rb +3 -3
  33. data/lib/HDLRuby/hdr_samples/with_leftright.rb +21 -0
  34. data/lib/HDLRuby/hdr_samples/with_reduce.rb +13 -13
  35. data/lib/HDLRuby/hdr_samples/with_ref_array.rb +6 -6
  36. data/lib/HDLRuby/hdr_samples/with_register_stack.rb +150 -0
  37. data/lib/HDLRuby/hdr_samples/with_sequencer.rb +190 -0
  38. data/lib/HDLRuby/hdr_samples/with_sequencer_deep.rb +91 -0
  39. data/lib/HDLRuby/hdr_samples/with_sequencer_enumerable.rb +405 -0
  40. data/lib/HDLRuby/hdr_samples/with_sequencer_enumerator.rb +89 -0
  41. data/lib/HDLRuby/hdr_samples/with_sequencer_sync.rb +120 -0
  42. data/lib/HDLRuby/hdr_samples/with_subsums.rb +3 -3
  43. data/lib/HDLRuby/hdr_samples/with_terminate.rb +3 -3
  44. data/lib/HDLRuby/hdr_samples/with_to_a.rb +10 -10
  45. data/lib/HDLRuby/hdr_samples/with_values.rb +3 -3
  46. data/lib/HDLRuby/hdrcc.rb +29 -3
  47. data/lib/HDLRuby/hdrlib.rb +1 -1
  48. data/lib/HDLRuby/hruby_bstr.rb +10 -5
  49. data/lib/HDLRuby/hruby_db.rb +2 -2
  50. data/lib/HDLRuby/hruby_high.rb +152 -47
  51. data/lib/HDLRuby/hruby_high_fullname.rb +3 -1
  52. data/lib/HDLRuby/hruby_low.rb +189 -18
  53. data/lib/HDLRuby/hruby_low2c.rb +129 -54
  54. data/lib/HDLRuby/hruby_low2hdr.rb +66 -40
  55. data/lib/HDLRuby/hruby_low2high.rb +86 -44
  56. data/lib/HDLRuby/hruby_low2seq.rb +26 -18
  57. data/lib/HDLRuby/hruby_low2sym.rb +14 -13
  58. data/lib/HDLRuby/hruby_low2vhd.rb +80 -44
  59. data/lib/HDLRuby/hruby_low_bool2select.rb +61 -46
  60. data/lib/HDLRuby/hruby_low_casts_without_expression.rb +56 -44
  61. data/lib/HDLRuby/hruby_low_cleanup.rb +18 -16
  62. data/lib/HDLRuby/hruby_low_fix_types.rb +65 -32
  63. data/lib/HDLRuby/hruby_low_mutable.rb +83 -119
  64. data/lib/HDLRuby/hruby_low_resolve.rb +38 -30
  65. data/lib/HDLRuby/hruby_low_with_bool.rb +33 -16
  66. data/lib/HDLRuby/hruby_low_with_port.rb +3 -3
  67. data/lib/HDLRuby/hruby_low_with_var.rb +23 -9
  68. data/lib/HDLRuby/hruby_low_without_concat.rb +45 -19
  69. data/lib/HDLRuby/hruby_low_without_namespace.rb +47 -32
  70. data/lib/HDLRuby/hruby_low_without_parinseq.rb +32 -16
  71. data/lib/HDLRuby/hruby_low_without_select.rb +37 -24
  72. data/lib/HDLRuby/hruby_low_without_subsignals.rb +280 -0
  73. data/lib/HDLRuby/hruby_rcsim.rb +158 -134
  74. data/lib/HDLRuby/hruby_rsim.rb +194 -20
  75. data/lib/HDLRuby/hruby_rsim_mute.rb +2 -3
  76. data/lib/HDLRuby/hruby_rsim_vcd.rb +125 -50
  77. data/lib/HDLRuby/hruby_values.rb +48 -33
  78. data/lib/HDLRuby/hruby_verilog.rb +90 -48
  79. data/lib/HDLRuby/soft/stacks.rb +219 -0
  80. data/lib/HDLRuby/std/bram.rb +26 -0
  81. data/lib/HDLRuby/std/clocks.rb +1 -1
  82. data/lib/HDLRuby/std/fixpoint.rb +2 -2
  83. data/lib/HDLRuby/std/fsm.rb +48 -11
  84. data/lib/HDLRuby/std/function_generator.rb +2 -2
  85. data/lib/HDLRuby/std/sequencer.rb +1857 -0
  86. data/lib/HDLRuby/std/sequencer_sync.rb +400 -0
  87. data/lib/HDLRuby/std/std.rb +12 -0
  88. data/lib/HDLRuby/version.rb +1 -1
  89. data/tuto/adder_sat_flags_vcd.png +0 -0
  90. data/tuto/addsub_vcd.png +0 -0
  91. data/tuto/alu_vcd.png +0 -0
  92. data/tuto/bit_pong_vcd.png +0 -0
  93. data/tuto/checksum_vcd.png +0 -0
  94. data/tuto/circuit_hdr.odg +0 -0
  95. data/tuto/circuit_hdr.png +0 -0
  96. data/tuto/circuit_hie.odg +0 -0
  97. data/tuto/circuit_hie.png +0 -0
  98. data/tuto/circuit_view.odg +0 -0
  99. data/tuto/circuit_view.png +0 -0
  100. data/tuto/clock_counter_vcd.png +0 -0
  101. data/tuto/counter_ext_vcd.png +0 -0
  102. data/tuto/fact_vcd.png +0 -0
  103. data/tuto/hw_flow.odg +0 -0
  104. data/tuto/hw_flow.png +0 -0
  105. data/tuto/maxxer_vcd.png +0 -0
  106. data/tuto/pingpong0_vcd.png +0 -0
  107. data/tuto/pingpong1_vcd.png +0 -0
  108. data/tuto/pingpong2_vcd.png +0 -0
  109. data/tuto/ram_vcd.png +0 -0
  110. data/tuto/serializer_vcd.png +0 -0
  111. data/tuto/sw_flow.odg +0 -0
  112. data/tuto/sw_flow.png +0 -0
  113. data/tuto/the_counter_vcd.png +0 -0
  114. data/tuto/tutorial_sw.html +2359 -0
  115. data/tuto/tutorial_sw.md +2684 -0
  116. data/tuto/tutorial_sw.pdf +0 -0
  117. data/tuto/tutorial_sw_jp.md +417 -0
  118. metadata +49 -3
  119. data/lib/HDLRuby/hdr_samples/sumprod.rb +0 -29
@@ -12,8 +12,9 @@ module HDLRuby::Low
12
12
  ########################################################################
13
13
 
14
14
 
15
- ## Extends the SystemT class with fixing of types and constants.
16
15
  class SystemT
16
+ ## Extends the SystemT class with fixing of types and constants.
17
+
17
18
  # Explicit the types conversions in the system.
18
19
  def explicit_types!
19
20
  # No direct fix required in the system, recurse on the scope.
@@ -23,8 +24,9 @@ module HDLRuby::Low
23
24
  end
24
25
 
25
26
 
26
- ## Extends the Scope class with fixing of types and constants.
27
27
  class Scope
28
+ ## Extends the Scope class with fixing of types and constants.
29
+
28
30
  # Explicit the types conversions in the scope.
29
31
  def explicit_types!
30
32
  # Recurse on the sub scopes.
@@ -40,8 +42,9 @@ module HDLRuby::Low
40
42
  end
41
43
 
42
44
 
43
- ## Extends the Behavior class with fixing of types and constants.
44
45
  class Behavior
46
+ ## Extends the Behavior class with fixing of types and constants.
47
+
45
48
  # Explicit the types conversions in the scope.
46
49
  def explicit_types!
47
50
  # Fix the types of the block.
@@ -51,8 +54,9 @@ module HDLRuby::Low
51
54
  end
52
55
 
53
56
 
54
- ## Extends the SignalI class with fixing of types and constants.
55
57
  class SignalI
58
+ ## Extends the SignalI class with fixing of types and constants.
59
+
56
60
  # Explicit the types conversions in the signal.
57
61
  def explicit_types!
58
62
  # Is there a value?
@@ -67,8 +71,9 @@ module HDLRuby::Low
67
71
  end
68
72
 
69
73
 
70
- ## Extends the Statement class with fixing of types and constants.
71
74
  class Statement
75
+ ## Extends the Statement class with fixing of types and constants.
76
+
72
77
  # Explicit the types conversions in the statement.
73
78
  def explicit_types!
74
79
  raise "Should implement explicit_types! for class #{self.class}."
@@ -76,8 +81,9 @@ module HDLRuby::Low
76
81
  end
77
82
 
78
83
 
79
- ## Extends the Transmit class with fixing of types and constants.
80
84
  class Transmit
85
+ ## Extends the Transmit class with fixing of types and constants.
86
+
81
87
  # Explicit the types conversions in the statement.
82
88
  def explicit_types!
83
89
  # Recurse on the left and the right.
@@ -90,8 +96,9 @@ module HDLRuby::Low
90
96
  end
91
97
 
92
98
 
93
- ## Extends the Print class with fixing of types and constants.
94
99
  class Print
100
+ ## Extends the Print class with fixing of types and constants.
101
+
95
102
  # Explicit the types conversions in the statement.
96
103
  def explicit_types!
97
104
  # Recurse on the arguments.
@@ -101,8 +108,9 @@ module HDLRuby::Low
101
108
  end
102
109
 
103
110
 
104
- ## Extends the Configure class with fixing of types and constants.
105
111
  class Configure
112
+ ## Extends the Configure class with fixing of types and constants.
113
+
106
114
  # Explicit the types conversions in the statement.
107
115
  def explicit_types!
108
116
  # Nothing to do.
@@ -111,8 +119,9 @@ module HDLRuby::Low
111
119
  end
112
120
 
113
121
 
114
- ## Extends the TimeTerminate class with fixing of types and constants.
115
122
  class TimeTerminate
123
+ ## Extends the TimeTerminate class with fixing of types and constants.
124
+
116
125
  # Explicit the types conversions in the statement.
117
126
  def explicit_types!
118
127
  # Nothing to do.
@@ -123,8 +132,9 @@ module HDLRuby::Low
123
132
 
124
133
 
125
134
 
126
- ## Extends the If class with fixing of types and constants.
127
135
  class If
136
+ ## Extends the If class with fixing of types and constants.
137
+
128
138
  # Explicit the types conversions in the if.
129
139
  def explicit_types!
130
140
  # Recurse on the condition: it must be a Bit.
@@ -142,8 +152,9 @@ module HDLRuby::Low
142
152
  end
143
153
 
144
154
 
145
- ## Extends the When class with fixing of types and constants.
146
155
  class When
156
+ ## Extends the When class with fixing of types and constants.
157
+
147
158
  # Explicit the types conversions in the when where +type+ is the
148
159
  # type of the selecting value.
149
160
  def explicit_types!(type)
@@ -156,8 +167,9 @@ module HDLRuby::Low
156
167
  end
157
168
 
158
169
 
159
- ## Extends the Case class with fixing of types and constants.
160
170
  class Case
171
+ ## Extends the Case class with fixing of types and constants.
172
+
161
173
  # Explicit the types conversions in the case.
162
174
  def explicit_types!
163
175
  # Recurse on the value.
@@ -169,9 +181,10 @@ module HDLRuby::Low
169
181
  end
170
182
  end
171
183
 
172
- ##
173
- # Describes a wait statement: not synthesizable!
184
+
174
185
  class TimeWait
186
+ ## Extends the TimeWait class with fixing of types and constants.
187
+
175
188
  # Explicit the types conversions in the time wait.
176
189
  def explicit_types!
177
190
  # Nothing to do.
@@ -179,8 +192,10 @@ module HDLRuby::Low
179
192
  end
180
193
  end
181
194
 
182
- ## Extends the TimeRepeat class with fixing of types and constants.
195
+
183
196
  class TimeRepeat
197
+ ## Extends the TimeRepeat class with fixing of types and constants.
198
+
184
199
  # Explicit the types conversions in the time repeat.
185
200
  def explicit_types!
186
201
  # Recurse on the statement.
@@ -190,8 +205,9 @@ module HDLRuby::Low
190
205
  end
191
206
 
192
207
 
193
- ## Extends the Block class with fixing of types and constants.
194
208
  class Block
209
+ ## Extends the Block class with fixing of types and constants.
210
+
195
211
  # Explicit the types conversions in the block.
196
212
  def explicit_types!
197
213
  # Recurse on the statements.
@@ -201,14 +217,16 @@ module HDLRuby::Low
201
217
  end
202
218
 
203
219
 
204
- ## Extends the Connection class with fixing of types and constants.
205
220
  class Connection
221
+ ## Extends the Connection class with fixing of types and constants.
222
+
206
223
  # Nothing required, Transmit is generated identically.
207
224
  end
208
225
 
209
226
 
210
- ## Extends the Expression class with fixing of types and constants.
211
227
  class Expression
228
+ ## Extends the Expression class with fixing of types and constants.
229
+
212
230
  # Explicit the types conversions in the expression where
213
231
  # +type+ is the expected type of the condition if any.
214
232
  def explicit_types(type = nil)
@@ -217,8 +235,9 @@ module HDLRuby::Low
217
235
  end
218
236
 
219
237
 
220
- ## Extends the Value class with fixing of types and constants.
221
238
  class Value
239
+ ## Extends the Value class with fixing of types and constants.
240
+
222
241
  # Explicit the types conversions in the value where
223
242
  # +type+ is the expected type of the condition if any.
224
243
  def explicit_types(type = nil)
@@ -234,8 +253,9 @@ module HDLRuby::Low
234
253
  end
235
254
 
236
255
 
237
- ## Extends the Cast class with fixing of types and constants.
238
256
  class Cast
257
+ ## Extends the Cast class with fixing of types and constants.
258
+
239
259
  # Explicit the types conversions in the cast where
240
260
  # +type+ is the expected type of the condition if any.
241
261
  def explicit_types(type = nil)
@@ -251,8 +271,9 @@ module HDLRuby::Low
251
271
  end
252
272
 
253
273
 
254
- ## Extends the Operation class with fixing of types and constants.
255
274
  class Operation
275
+ ## Extends the Operation class with fixing of types and constants.
276
+
256
277
  # Explicit the types conversions in the operation where
257
278
  # +type+ is the expected type of the condition if any.
258
279
  def explicit_types(type = nil)
@@ -261,8 +282,9 @@ module HDLRuby::Low
261
282
  end
262
283
 
263
284
 
264
- ## Extends the Unary class with fixing of types and constants.
265
285
  class Unary
286
+ ## Extends the Unary class with fixing of types and constants.
287
+
266
288
  # Explicit the types conversions in the unary operation where
267
289
  # +type+ is the expected type of the condition if any.
268
290
  def explicit_types(type = nil)
@@ -281,8 +303,9 @@ module HDLRuby::Low
281
303
  end
282
304
 
283
305
 
284
- ## Extends the Binary class with fixing of types and constants.
285
306
  class Binary
307
+ ## Extends the Binary class with fixing of types and constants.
308
+
286
309
  # Explicit the types conversions in the binary operation where
287
310
  # +type+ is the expected type of the condition if any.
288
311
  def explicit_types(type = nil)
@@ -305,8 +328,9 @@ module HDLRuby::Low
305
328
  end
306
329
 
307
330
 
308
- ## Extends the Select class with fixing of types and constants.
309
331
  class Select
332
+ ## Extends the Select class with fixing of types and constants.
333
+
310
334
  # Explicit the types conversions in the selection where
311
335
  # +type+ is the expected type of the condition if any.
312
336
  def explicit_types(type = nil)
@@ -319,8 +343,9 @@ module HDLRuby::Low
319
343
  end
320
344
 
321
345
 
322
- ## Extends the Concat class with fixing of types and constants.
323
346
  class Concat
347
+ ## Extends the Concat class with fixing of types and constants.
348
+
324
349
  # Explicit the types conversions in the concat where
325
350
  # +type+ is the expected type of the condition if any.
326
351
  def explicit_types(type = nil)
@@ -354,8 +379,9 @@ module HDLRuby::Low
354
379
  end
355
380
 
356
381
 
357
- ## Extends the Ref class with fixing of types and constants.
358
382
  class Ref
383
+ ## Extends the Ref class with fixing of types and constants.
384
+
359
385
  # Explicit the types conversions in the reference where
360
386
  # +type+ is the expected type of the condition if any.
361
387
  def explicit_types(type = nil)
@@ -364,8 +390,9 @@ module HDLRuby::Low
364
390
  end
365
391
 
366
392
 
367
- ## Extends the RefConcat class with fixing of types and constants.
368
393
  class RefConcat
394
+ ## Extends the RefConcat class with fixing of types and constants.
395
+
369
396
  # Explicit the types conversions in the concat ref where
370
397
  # +type+ is the expected type of the condition if any.
371
398
  def explicit_types(type = nil)
@@ -389,6 +416,7 @@ module HDLRuby::Low
389
416
  # No, recurse on the sub expressions.
390
417
  return RefConcat.new(self.type,self.each_ref.map.with_index do
391
418
  |ref,i|
419
+ puts "self.type=#{self.type}"
392
420
  ref.explicit_types(self.type.get_type(i))
393
421
  end)
394
422
  end
@@ -396,8 +424,9 @@ module HDLRuby::Low
396
424
  end
397
425
 
398
426
 
399
- ## Extends the RefIndex class with fixing of types and constants.
400
427
  class RefIndex
428
+ ## Extends the RefIndex class with fixing of types and constants.
429
+
401
430
  # Explicit the types conversions in the index ref where
402
431
  # +type+ is the expected type of the condition if any.
403
432
  def explicit_types(type = nil)
@@ -417,8 +446,9 @@ module HDLRuby::Low
417
446
  end
418
447
 
419
448
 
420
- ## Extends the RefRange class with fixing of types and constants.
421
449
  class RefRange
450
+ ## Extends the RefRange class with fixing of types and constants.
451
+
422
452
  # Explicit the types conversions in the range ref where
423
453
  # +type+ is the expected type of the condition if any.
424
454
  def explicit_types(type = nil)
@@ -440,8 +470,9 @@ module HDLRuby::Low
440
470
  end
441
471
 
442
472
 
443
- ## Extends the RefName class with fixing of types and constants.
444
473
  class RefName
474
+ ## Extends the RefName class with fixing of types and constants.
475
+
445
476
  # Explicit the types conversions in the index ref where
446
477
  # +type+ is the expected type of the condition if any.
447
478
  def explicit_types(type = nil)
@@ -460,8 +491,9 @@ module HDLRuby::Low
460
491
  end
461
492
 
462
493
 
463
- ## Extends the RefThis class with fixing of types and constants.
464
494
  class RefThis
495
+ ## Extends the RefThis class with fixing of types and constants.
496
+
465
497
  # Explicit the types conversions in the index ref where
466
498
  # +type+ is the expected type of the condition if any.
467
499
  def explicit_types(type = nil)
@@ -471,8 +503,9 @@ module HDLRuby::Low
471
503
  end
472
504
 
473
505
 
474
- ## Extends the stringE class with fixing of types and constants.
475
506
  class StringE
507
+ ## Extends the stringE class with fixing of types and constants.
508
+
476
509
  # Explicit the types conversions in the concat where
477
510
  # +type+ is the expected type of the condition if any.
478
511
  def explicit_types(type = nil)