HDLRuby 2.4.29 → 2.6.4

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.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/lib/HDLRuby/drivers/xcd.rb +79 -0
  3. data/lib/HDLRuby/drivers/xcd/dummy.xcd +4 -0
  4. data/lib/HDLRuby/hdr_samples/adder.rb +1 -1
  5. data/lib/HDLRuby/hdr_samples/adder_bench.rb +1 -1
  6. data/lib/HDLRuby/hdr_samples/adder_gen.rb +1 -1
  7. data/lib/HDLRuby/hdr_samples/constant_in_function.rb +27 -0
  8. data/lib/HDLRuby/hdr_samples/dff_properties.rb +19 -0
  9. data/lib/HDLRuby/hdr_samples/dff_unit.rb +54 -0
  10. data/lib/HDLRuby/hdr_samples/huge_rom.rb +25 -0
  11. data/lib/HDLRuby/hdr_samples/logic_bench.rb +21 -0
  12. data/lib/HDLRuby/hdr_samples/mei8_bench.rb +1 -1
  13. data/lib/HDLRuby/hdr_samples/multi_timed_bench.rb +54 -0
  14. data/lib/HDLRuby/hdr_samples/music.rb +79 -0
  15. data/lib/HDLRuby/hdr_samples/named_sub.rb +42 -0
  16. data/lib/HDLRuby/hdr_samples/rom.rb +16 -0
  17. data/lib/HDLRuby/hdr_samples/with_function_generator.rb +25 -0
  18. data/lib/HDLRuby/hdrcc.rb +162 -26
  19. data/lib/HDLRuby/hruby_decorator.rb +250 -0
  20. data/lib/HDLRuby/hruby_high.rb +468 -91
  21. data/lib/HDLRuby/hruby_low.rb +913 -45
  22. data/lib/HDLRuby/hruby_low2c.rb +122 -168
  23. data/lib/HDLRuby/hruby_low2hdr.rb +738 -0
  24. data/lib/HDLRuby/hruby_low2high.rb +331 -549
  25. data/lib/HDLRuby/hruby_low2vhd.rb +39 -2
  26. data/lib/HDLRuby/hruby_low_bool2select.rb +29 -0
  27. data/lib/HDLRuby/hruby_low_casts_without_expression.rb +27 -0
  28. data/lib/HDLRuby/hruby_low_fix_types.rb +25 -0
  29. data/lib/HDLRuby/hruby_low_mutable.rb +70 -0
  30. data/lib/HDLRuby/hruby_low_resolve.rb +28 -0
  31. data/lib/HDLRuby/hruby_low_without_connection.rb +6 -3
  32. data/lib/HDLRuby/hruby_low_without_namespace.rb +7 -4
  33. data/lib/HDLRuby/hruby_low_without_select.rb +13 -0
  34. data/lib/HDLRuby/hruby_tools.rb +11 -1
  35. data/lib/HDLRuby/hruby_verilog.rb +1577 -1709
  36. data/lib/HDLRuby/sim/hruby_sim.h +29 -3
  37. data/lib/HDLRuby/sim/hruby_sim_calc.c +63 -6
  38. data/lib/HDLRuby/sim/hruby_sim_core.c +24 -9
  39. data/lib/HDLRuby/sim/hruby_sim_vcd.c +5 -1
  40. data/lib/HDLRuby/sim/hruby_sim_vizualize.c +22 -6
  41. data/lib/HDLRuby/std/fixpoint.rb +9 -0
  42. data/lib/HDLRuby/std/function_generator.rb +139 -0
  43. data/lib/HDLRuby/std/hruby_unit.rb +75 -0
  44. data/lib/HDLRuby/template_expander.rb +61 -0
  45. data/lib/HDLRuby/version.rb +1 -1
  46. metadata +21 -5
@@ -32,6 +32,13 @@ module HDLRuby::Low
32
32
  return [1.to_i].pack("i").size*8
33
33
  end
34
34
 
35
+ ## Converts string +str+ to a C-compatible string.
36
+ def self.c_string(str)
37
+ str = str.gsub(/\n/,"\\n")
38
+ str.gsub!(/\t/,"\\t")
39
+ return str
40
+ end
41
+
35
42
  ## Tells if a +name+ is C-compatible.
36
43
  # To ensure compatibile, assume all the character must have the
37
44
  # same case.
@@ -139,10 +146,10 @@ module HDLRuby::Low
139
146
  end
140
147
 
141
148
 
142
- ## Extends the SystemT class with generation of HDLRuby::High C text.
149
+ ## Extends the SystemT class with generation of C text.
143
150
  class SystemT
144
151
 
145
- # Generates the text of the equivalent HDLRuby::High code.
152
+ # Generates the text of the equivalent HDLRuby code.
146
153
  # +level+ is the hierachical level of the object and +hnames+
147
154
  # is the list of extra h files to include.
148
155
  def to_c(level = 0, *hnames)
@@ -345,10 +352,10 @@ module HDLRuby::Low
345
352
  end
346
353
 
347
354
 
348
- ## Extends the Scope class with generation of HDLRuby::High C text.
355
+ ## Extends the Scope class with generation of C text.
349
356
  class Scope
350
357
 
351
- # Generates the text of the equivalent HDLRuby::High code.
358
+ # Generates the C text of the equivalent HDLRuby code.
352
359
  # +level+ is the hierachical level of the object.
353
360
  def to_c(level = 0)
354
361
  # The resulting string.
@@ -498,10 +505,10 @@ module HDLRuby::Low
498
505
  end
499
506
 
500
507
 
501
- ## Extends the Type class with generation of HDLRuby::High text.
508
+ ## Extends the Type class with generation of C text.
502
509
  class Type
503
510
 
504
- # Generates the C text of the equivalent HDLRuby::High code.
511
+ # Generates the C text of the equivalent HDLRuby code.
505
512
  # +level+ is the hierachical level of the object.
506
513
  def to_c(level = 0)
507
514
  # return Low2C.c_name(self.name)
@@ -516,10 +523,10 @@ module HDLRuby::Low
516
523
  end
517
524
  end
518
525
 
519
- ## Extends the TypeDef class with generation of HDLRuby::High text.
526
+ ## Extends the TypeDef class with generation of C text.
520
527
  class TypeDef
521
528
 
522
- # Generates the C text of the equivalent HDLRuby::High code.
529
+ # Generates the C text of the equivalent HDLRuby code.
523
530
  # +level+ is the hierachical level of the object.
524
531
  def to_c(level = 0)
525
532
  # # Simply use the name of the type.
@@ -529,10 +536,10 @@ module HDLRuby::Low
529
536
  end
530
537
  end
531
538
 
532
- ## Extends the TypeVector class with generation of HDLRuby::High text.
539
+ ## Extends the TypeVector class with generation of C text.
533
540
  class TypeVector
534
541
 
535
- # Generates the C text of the equivalent HDLRuby::High code.
542
+ # Generates the C text of the equivalent HDLRuby code.
536
543
  # +level+ is the hierachical level of the object.
537
544
  def to_c(level = 0)
538
545
  # The resulting string.
@@ -541,10 +548,10 @@ module HDLRuby::Low
541
548
  end
542
549
  end
543
550
 
544
- ## Extends the TypeTuple class with generation of HDLRuby::High text.
551
+ ## Extends the TypeTuple class with generation of C text.
545
552
  class TypeTuple
546
553
 
547
- # Generates the text of the equivalent HDLRuby::High code.
554
+ # Generates the C text of the equivalent HDLRuby code.
548
555
  # +level+ is the hierachical level of the object.
549
556
  #
550
557
  # NOTE: type tuples are converted to bit vector of their contents.
@@ -557,10 +564,10 @@ module HDLRuby::Low
557
564
  end
558
565
 
559
566
 
560
- ## Extends the TypeStruct class with generation of HDLRuby::High text.
567
+ ## Extends the TypeStruct class with generation of C text.
561
568
  class TypeStruct
562
569
 
563
- # Generates the text of the equivalent HDLRuby::High code.
570
+ # Generates the text of the equivalent HDLRuby code.
564
571
  # +level+ is the hierachical level of the object.
565
572
  def to_c(level = 0)
566
573
  return "get_type_struct(#{self.each.join(",") do |key,type|
@@ -570,10 +577,10 @@ module HDLRuby::Low
570
577
  end
571
578
 
572
579
 
573
- ## Extends the Behavior class with generation of HDLRuby::High text.
580
+ ## Extends the Behavior class with generation of C text.
574
581
  class Behavior
575
582
 
576
- # Generates the text of the equivalent HDLRuby::High code.
583
+ # Generates the text of the equivalent HDLRuby code.
577
584
  # +level+ is the hierachical level of the object and
578
585
  # +time+ is a flag telling if the behavior is timed or not.
579
586
  def to_c(level = 0, time = false)
@@ -706,10 +713,10 @@ module HDLRuby::Low
706
713
  end
707
714
  end
708
715
 
709
- ## Extends the TimeBehavior class with generation of HDLRuby::High text.
716
+ ## Extends the TimeBehavior class with generation of C text.
710
717
  class TimeBehavior
711
718
 
712
- # Generates the C text of the equivalent HDLRuby::High code.
719
+ # Generates the C text of the equivalent HDLRuby code.
713
720
  # +level+ is the hierachical level of the object.
714
721
  def to_c(level = 0)
715
722
  super(level,true)
@@ -717,10 +724,10 @@ module HDLRuby::Low
717
724
  end
718
725
 
719
726
 
720
- ## Extends the Event class with generation of HDLRuby::High text.
727
+ ## Extends the Event class with generation of C text.
721
728
  class Event
722
729
 
723
- # Generates the C text of the equivalent HDLRuby::High code.
730
+ # Generates the C text of the equivalent HDLRuby code.
724
731
  # +level+ is the hierachical level of the object.
725
732
  def to_c(level = 0)
726
733
  edge = "ANYEDGE"
@@ -732,7 +739,7 @@ module HDLRuby::Low
732
739
  end
733
740
 
734
741
 
735
- ## Extends the SignalI class with generation of HDLRuby::High text.
742
+ ## Extends the SignalI class with generation of C text.
736
743
  class SignalI
737
744
 
738
745
  ## Generates the C text for an access to the signal.
@@ -748,7 +755,7 @@ module HDLRuby::Low
748
755
  return res
749
756
  end
750
757
 
751
- ## Generates the C text of the equivalent HDLRuby::High code.
758
+ ## Generates the C text of the equivalent HDLRuby code.
752
759
  # +level+ is the hierachical level of the object.
753
760
  def to_c(level = 0)
754
761
  # The resulting string.
@@ -850,10 +857,10 @@ module HDLRuby::Low
850
857
  end
851
858
 
852
859
 
853
- ## Extends the SystemI class with generation of HDLRuby::High text.
860
+ ## Extends the SystemI class with generation of C text.
854
861
  class SystemI
855
862
 
856
- ## Generates the C text of the equivalent HDLRuby::High code.
863
+ ## Generates the C text of the equivalent HDLRuby code.
857
864
  # +level+ is the hierachical level of the object.
858
865
  def to_c(level = 0)
859
866
  # The resulting string.
@@ -919,7 +926,7 @@ module HDLRuby::Low
919
926
  # Extend the Chunk cass with generation of text code.
920
927
  class HDLRuby::Low::Chunk
921
928
 
922
- # Generates the text of the equivalent HDLRuby::High code.
929
+ # Generates the C text of the equivalent HDLRuby code.
923
930
  # +level+ is the hierachical level of the object.
924
931
  def to_c(level = 0)
925
932
  res = " " * level
@@ -935,9 +942,9 @@ module HDLRuby::Low
935
942
  end
936
943
 
937
944
 
938
- ## Extends the SystemI class with generation of HDLRuby::High text.
945
+ ## Extends the SystemI class with generation of C text.
939
946
  class Code
940
- # Generates the text of the equivalent HDLRuby::High code.
947
+ # Generates the C text of the equivalent HDLRuby code.
941
948
  # +level+ is the hierachical level of the object.
942
949
  def to_c(level = 0)
943
950
  # puts "For behavior: #{self}"
@@ -1042,10 +1049,10 @@ module HDLRuby::Low
1042
1049
  end
1043
1050
 
1044
1051
 
1045
- ## Extends the Statement class with generation of HDLRuby::High text.
1052
+ ## Extends the Statement class with generation of C text.
1046
1053
  class Statement
1047
1054
 
1048
- # Generates the C text of the equivalent HDLRuby::High code.
1055
+ # Generates the C text of the equivalent HDLRuby code.
1049
1056
  # +level+ is the hierachical level of the object.
1050
1057
  def to_c(level = 0)
1051
1058
  # Should never be here.
@@ -1081,10 +1088,10 @@ module HDLRuby::Low
1081
1088
  end
1082
1089
  end
1083
1090
 
1084
- ## Extends the Transmit class with generation of HDLRuby::High text.
1091
+ ## Extends the Transmit class with generation of C text.
1085
1092
  class Transmit
1086
1093
 
1087
- # Generates the C text of the equivalent HDLRuby::High code.
1094
+ # Generates the C text of the equivalent HDLRuby code.
1088
1095
  # +level+ is the hierachical level of the object.
1089
1096
  def to_c(level = 0)
1090
1097
  # Save the state of the value pool.
@@ -1116,11 +1123,48 @@ module HDLRuby::Low
1116
1123
  end
1117
1124
  end
1118
1125
 
1126
+
1127
+ ## Extends the Print class with generation of C text.
1128
+ class Print
1129
+
1130
+ # Generates the C text of the equivalent HDLRuby code.
1131
+ # +level+ is the hierachical level of the object.
1132
+ def to_c(level = 0)
1133
+ # Save the state of the value pool.
1134
+ res = (" " * ((level)*3))
1135
+ res << "{\n"
1136
+ res << (" " * ((level+1)*3))
1137
+ res << "unsigned int pool_state = get_value_pos();\n"
1138
+ # Perform the copy and the touching only if the new content
1139
+ # is different.
1140
+ res << (" " * ((level+1)*3))
1141
+ # Is it a sequential execution model?
1142
+ seq = self.block.mode == :seq ? "_seq" : ""
1143
+ # Generate the print.
1144
+ self.each_arg do |arg|
1145
+ if (arg.is_a?(StringE)) then
1146
+ res << "printer.print_string(\"" +
1147
+ Low2C.c_string(arg.content) + "\");\n"
1148
+ elsif (arg.is_a?(Expression)) then
1149
+ res << "printer.print_string_value(" + arg.to_c + ");\n"
1150
+ else
1151
+ res << "printer.print_string_name(" + arg.to_c + ");\n"
1152
+ end
1153
+ end
1154
+ # Restore the value pool state.
1155
+ res << (" " * ((level+1)*3))
1156
+ res << "set_value_pos(pool_state);\n"
1157
+ res << (" " * ((level)*3))
1158
+ res << "}\n"
1159
+ return res
1160
+ end
1161
+ end
1162
+
1119
1163
 
1120
- ## Extends the If class with generation of HDLRuby::High text.
1164
+ ## Extends the If class with generation of C text.
1121
1165
  class If
1122
1166
 
1123
- # Generates the C text of the equivalent HDLRuby::High code.
1167
+ # Generates the C text of the equivalent HDLRuby code.
1124
1168
  # +level+ is the hierachical level of the object.
1125
1169
  def to_c(level = 0)
1126
1170
  # The result string.
@@ -1176,10 +1220,10 @@ module HDLRuby::Low
1176
1220
  end
1177
1221
  end
1178
1222
 
1179
- ## Extends the When class with generation of HDLRuby::High text.
1223
+ ## Extends the When class with generation of C text.
1180
1224
  class When
1181
1225
 
1182
- # Generates the C text of the equivalent HDLRuby::High code.
1226
+ # Generates the C text of the equivalent HDLRuby code.
1183
1227
  # +level+ is the hierachical level of the object.
1184
1228
  def to_c(level = 0)
1185
1229
  # The result string.
@@ -1211,10 +1255,10 @@ module HDLRuby::Low
1211
1255
  end
1212
1256
  end
1213
1257
 
1214
- ## Extends the Case class with generation of HDLRuby::High text.
1258
+ ## Extends the Case class with generation of C text.
1215
1259
  class Case
1216
1260
 
1217
- # Generates the text of the equivalent HDLRuby::High code.
1261
+ # Generates the text of the equivalent HDLRuby code.
1218
1262
  # +level+ is the hierachical level of the object.
1219
1263
  def to_c(level = 0)
1220
1264
  res = ""
@@ -1269,10 +1313,10 @@ module HDLRuby::Low
1269
1313
  end
1270
1314
 
1271
1315
 
1272
- ## Extends the Delay class with generation of HDLRuby::High text.
1316
+ ## Extends the Delay class with generation of C text.
1273
1317
  class Delay
1274
1318
 
1275
- # Generates the C text of the equivalent HDLRuby::High code.
1319
+ # Generates the C text of the equivalent HDLRuby code.
1276
1320
  # +level+ is the hierachical level of the object.
1277
1321
  def to_c(level = 0)
1278
1322
  return "make_delay(#{self.value.to_s}," +
@@ -1281,10 +1325,10 @@ module HDLRuby::Low
1281
1325
  end
1282
1326
 
1283
1327
 
1284
- ## Extends the TimeWait class with generation of HDLRuby::High text.
1328
+ ## Extends the TimeWait class with generation of C text.
1285
1329
  class TimeWait
1286
1330
 
1287
- # Generates the C text of the equivalent HDLRuby::High code.
1331
+ # Generates the C text of the equivalent HDLRuby code.
1288
1332
  # +level+ is the hierachical level of the object.
1289
1333
  def to_c(level = 0)
1290
1334
  # The resulting string.
@@ -1297,10 +1341,10 @@ module HDLRuby::Low
1297
1341
  end
1298
1342
  end
1299
1343
 
1300
- ## Extends the TimeRepeat class with generation of HDLRuby::High text.
1344
+ ## Extends the TimeRepeat class with generation of C text.
1301
1345
  class TimeRepeat
1302
1346
 
1303
- # Generates the C text of the equivalent HDLRuby::High code.
1347
+ # Generates the C text of the equivalent HDLRuby code.
1304
1348
  # +level+ is the hierachical level of the object.
1305
1349
  def to_c(level = 0)
1306
1350
  # The resulting string.
@@ -1315,7 +1359,7 @@ module HDLRuby::Low
1315
1359
  end
1316
1360
  end
1317
1361
 
1318
- ## Extends the Block class with generation of HDLRuby::High text.
1362
+ ## Extends the Block class with generation of C text.
1319
1363
  class Block
1320
1364
 
1321
1365
  # Adds the c code of the blocks to +res+ at +level+
@@ -1329,7 +1373,7 @@ module HDLRuby::Low
1329
1373
  res << "#{Low2C.make_name(self)}();\n"
1330
1374
  end
1331
1375
 
1332
- # Generates the C text of the equivalent HDLRuby::High code.
1376
+ # Generates the C text of the equivalent HDLRuby code.
1333
1377
  # +level+ is the hierachical level of the object.
1334
1378
  def to_c_code(level = 0)
1335
1379
  # The resulting string.
@@ -1425,7 +1469,7 @@ module HDLRuby::Low
1425
1469
  end
1426
1470
 
1427
1471
  # Generates the execution of the block C text of the equivalent
1428
- # HDLRuby::High code.
1472
+ # HDLRuby code.
1429
1473
  # +level+ is the hierachical level of the object.
1430
1474
  def to_c(level = 0)
1431
1475
  res = " " * (level)
@@ -1455,22 +1499,22 @@ module HDLRuby::Low
1455
1499
  end
1456
1500
 
1457
1501
 
1458
- ## Extends the Block class with generation of HDLRuby::High text.
1502
+ ## Extends the Block class with generation of C text.
1459
1503
  class TimeBlock
1460
1504
  # TimeBlock is identical to Block in C
1461
1505
  end
1462
1506
 
1463
1507
 
1464
- ## Extends the Connection class with generation of HDLRuby::High text.
1508
+ ## Extends the Connection class with generation of C text.
1465
1509
  class Connection
1466
1510
  # Nothing required, Transmit is generated identically.
1467
1511
  end
1468
1512
 
1469
1513
 
1470
- ## Extends the Expression class with generation of HDLRuby::High text.
1514
+ ## Extends the Expression class with generation of C text.
1471
1515
  class Expression
1472
1516
 
1473
- # Generates the C text of the equivalent HDLRuby::High code.
1517
+ # Generates the C text of the equivalent HDLRuby code.
1474
1518
  # +level+ is the hierachical level of the object.
1475
1519
  def to_c(level = 0)
1476
1520
  # Should never be here.
@@ -1479,7 +1523,7 @@ module HDLRuby::Low
1479
1523
  end
1480
1524
 
1481
1525
 
1482
- ## Extends the Value class with generation of HDLRuby::High text.
1526
+ ## Extends the Value class with generation of C text.
1483
1527
  class Value
1484
1528
 
1485
1529
  ## Generates the C text for an access to the value.
@@ -1558,10 +1602,10 @@ module HDLRuby::Low
1558
1602
  end
1559
1603
  end
1560
1604
 
1561
- ## Extends the Cast class with generation of HDLRuby::High text.
1605
+ ## Extends the Cast class with generation of C text.
1562
1606
  class Cast
1563
1607
 
1564
- # Generates the C text of the equivalent HDLRuby::High code.
1608
+ # Generates the C text of the equivalent HDLRuby code.
1565
1609
  # +level+ is the hierachical level of the object.
1566
1610
  def to_c(level = 0)
1567
1611
  res = "({\n"
@@ -1589,10 +1633,10 @@ module HDLRuby::Low
1589
1633
  end
1590
1634
 
1591
1635
 
1592
- ## Extends the Operation class with generation of HDLRuby::High text.
1636
+ ## Extends the Operation class with generation of C text.
1593
1637
  class Operation
1594
1638
 
1595
- # Generates the C text of the equivalent HDLRuby::High code.
1639
+ # Generates the C text of the equivalent HDLRuby code.
1596
1640
  # +level+ is the hierachical level of the object.
1597
1641
  def to_c(level = 0)
1598
1642
  # Should never be here.
@@ -1600,10 +1644,10 @@ module HDLRuby::Low
1600
1644
  end
1601
1645
  end
1602
1646
 
1603
- ## Extends the Unary class with generation of HDLRuby::High text.
1647
+ ## Extends the Unary class with generation of C text.
1604
1648
  class Unary
1605
1649
 
1606
- # Generates the C text of the equivalent HDLRuby::High code.
1650
+ # Generates the C text of the equivalent HDLRuby code.
1607
1651
  # +level+ is the hierachical level of the object.
1608
1652
  def to_c(level = 0)
1609
1653
  res = "({\n"
@@ -1645,80 +1689,10 @@ module HDLRuby::Low
1645
1689
  end
1646
1690
 
1647
1691
 
1648
- ## Extends the Binary class with generation of HDLRuby::High text.
1692
+ ## Extends the Binary class with generation of C text.
1649
1693
  class Binary
1650
1694
 
1651
- # # Generates the C text of the equivalent HDLRuby::High code.
1652
- # # +level+ is the hierachical level of the object.
1653
- # def to_c(level = 0)
1654
- # res = ""
1655
- # case self.operator
1656
- # when :+ then
1657
- # return "add_value(#{self.left.to_c(level)}," +
1658
- # "#{self.right.to_c(level)})"
1659
- # when :- then
1660
- # return "sub_value(#{self.left.to_c(level)}," +
1661
- # "#{self.right.to_c(level)})"
1662
- # when :* then
1663
- # return "mul_value(#{self.left.to_c(level)}," +
1664
- # "#{self.right.to_c(level)})"
1665
- # when :/ then
1666
- # return "div_value(#{self.left.to_c(level)}," +
1667
- # "#{self.right.to_c(level)})"
1668
- # when :% then
1669
- # return "mod_value(#{self.left.to_c(level)}," +
1670
- # "#{self.right.to_c(level)})"
1671
- # when :** then
1672
- # return "pow_value(#{self.left.to_c(level)}," +
1673
- # "#{self.right.to_c(level)})"
1674
- # when :& then
1675
- # return "and_value(#{self.left.to_c(level)}," +
1676
- # "#{self.right.to_c(level)})"
1677
- # when :| then
1678
- # return "or_value(#{self.left.to_c(level)}," +
1679
- # "#{self.right.to_c(level)})"
1680
- # when :^ then
1681
- # return "xor_value(#{self.left.to_c(level)}," +
1682
- # "#{self.right.to_c(level)})"
1683
- # when :<<,:ls then
1684
- # return "shift_left_value(#{self.left.to_c(level)}," +
1685
- # "#{self.right.to_c(level)})"
1686
- # when :>>,:rs then
1687
- # return "shift_right_value(#{self.left.to_c(level)}," +
1688
- # "#{self.right.to_c(level)})"
1689
- # when :lr then
1690
- # return "rotate_left_value(#{self.left.to_c(level)}," +
1691
- # "#{self.right.to_c(level)})"
1692
- # when :rr then
1693
- # return "rotate_right_value(#{self.left.to_c(level)}," +
1694
- # "#{self.right.to_c(level)})"
1695
- # when :== then
1696
- # return "equal_value(#{self.left.to_c(level)}," +
1697
- # "#{self.right.to_c(level)})"
1698
- # when :!= then
1699
- # # return "not_equal_value(#{self.left.to_c(level)}," +
1700
- # # "#{self.right.to_c(level)})"
1701
- # return "xor_value(#{self.left.to_c(level)}," +
1702
- # "#{self.right.to_c(level)})"
1703
- # when :> then
1704
- # return "greater_value(#{self.left.to_c(level)}," +
1705
- # "#{self.right.to_c(level)})"
1706
- # when :< then
1707
- # return "lesser_value(#{self.left.to_c(level)}," +
1708
- # "#{self.right.to_c(level)})"
1709
- # when :>= then
1710
- # return "greater_equal_value(#{self.left.to_c(level)}," +
1711
- # "#{self.right.to_c(level)})"
1712
- # when :<= then
1713
- # return "lesser_equal_value(#{self.left.to_c(level)}," +
1714
- # "#{self.right.to_c(level)})"
1715
- # else
1716
- # raise "Invalid binary operator: #{self.operator}."
1717
- # end
1718
- # return res
1719
- # end
1720
-
1721
- # Generates the C text of the equivalent HDLRuby::High code.
1695
+ # Generates the C text of the equivalent HDLRuby code.
1722
1696
  # +level+ is the hierachical level of the object.
1723
1697
  def to_c(level = 0)
1724
1698
  # res = " " * (level*3)
@@ -1795,17 +1769,12 @@ module HDLRuby::Low
1795
1769
  end
1796
1770
  end
1797
1771
 
1798
- ## Extends the Select class with generation of HDLRuby::High text.
1772
+ ## Extends the Select class with generation of C text.
1799
1773
  class Select
1800
1774
 
1801
- # Generates the C text of the equivalent HDLRuby::High code.
1775
+ # Generates the C text of the equivalent HDLRuby code.
1802
1776
  # +level+ is the hierachical level of the object.
1803
1777
  def to_c(level = 0)
1804
- # res = "select_value(#{self.select.to_c(level)}," +
1805
- # "#{self.each_choice.to_a.size}"
1806
- # self.each_choice { |choice| res << ",#{choice.to_c(level)}" }
1807
- # res << ")"
1808
- # return res
1809
1778
  # Gather the possible selection choices.
1810
1779
  expressions = self.each_choice.to_a
1811
1780
  # Create the resulting string.
@@ -1846,10 +1815,10 @@ module HDLRuby::Low
1846
1815
  end
1847
1816
  end
1848
1817
 
1849
- ## Extends the Concat class with generation of HDLRuby::High text.
1818
+ ## Extends the Concat class with generation of C text.
1850
1819
  class Concat
1851
1820
 
1852
- # Generates the C text of the equivalent HDLRuby::High code.
1821
+ # Generates the C text of the equivalent HDLRuby code.
1853
1822
  # +level+ is the hierachical level of the object.
1854
1823
  def to_c(level = 0)
1855
1824
  # Gather the content to concat.
@@ -1893,10 +1862,10 @@ module HDLRuby::Low
1893
1862
  end
1894
1863
 
1895
1864
 
1896
- ## Extends the Ref class with generation of HDLRuby::High text.
1865
+ ## Extends the Ref class with generation of C text.
1897
1866
  class Ref
1898
1867
 
1899
- # Generates the C text of the equivalent HDLRuby::High code.
1868
+ # Generates the C text of the equivalent HDLRuby code.
1900
1869
  # +level+ is the hierachical level of the object and
1901
1870
  # +left+ tells if it is a left value or not.
1902
1871
  def to_c(level = 0, left = false)
@@ -1905,10 +1874,11 @@ module HDLRuby::Low
1905
1874
  end
1906
1875
  end
1907
1876
 
1908
- ## Extends the RefConcat class with generation of HDLRuby::High text.
1877
+
1878
+ ## Extends the RefConcat class with generation of C text.
1909
1879
  class RefConcat
1910
1880
 
1911
- # Generates the C text of the equivalent HDLRuby::High code.
1881
+ # Generates the C text of the equivalent HDLRuby code.
1912
1882
  # +level+ is the hierachical level of the object and
1913
1883
  # +left+ tells if it is a left value or not.
1914
1884
  def to_c(level = 0, left = false)
@@ -1937,10 +1907,10 @@ module HDLRuby::Low
1937
1907
  end
1938
1908
 
1939
1909
 
1940
- ## Extends the RefIndex class with generation of HDLRuby::High text.
1910
+ ## Extends the RefIndex class with generation of C text.
1941
1911
  class RefIndex
1942
1912
 
1943
- # Generates the C text of the equivalent HDLRuby::High code.
1913
+ # Generates the C text of the equivalent HDLRuby code.
1944
1914
  # +level+ is thehierachical level of the object and
1945
1915
  # +left+ tells if it is a left value or not.
1946
1916
  def to_c(level = 0, left = false)
@@ -1981,22 +1951,13 @@ module HDLRuby::Low
1981
1951
  end
1982
1952
 
1983
1953
 
1984
- ## Extends the RefRange class with generation of HDLRuby::High text.
1954
+ ## Extends the RefRange class with generation of C text.
1985
1955
  class RefRange
1986
1956
 
1987
- # Generates the C text of the equivalent HDLRuby::High code.
1957
+ # Generates the C text of the equivalent HDLRuby code.
1988
1958
  # +level+ is the hierachical level of the object and
1989
1959
  # +left+ tells if it is a left value or not.
1990
1960
  def to_c(level = 0, left = false)
1991
- # if left then
1992
- # res = "write_range(#{self.ref.to_c(level,left)},"
1993
- # else
1994
- # res = "read_range(#{self.ref.to_c(level,left)},"
1995
- # end
1996
- # res << "read64(#{self.range.first.to_c(level)})," +
1997
- # "read64(#{self.range.last.to_c(level)})," +
1998
- # "#{self.type.base.to_c(level)})"
1999
- # return res
2000
1961
  # Decide if it is a read or a write
2001
1962
  command = left ? "write" : "read"
2002
1963
  res = "({\n"
@@ -2041,10 +2002,11 @@ module HDLRuby::Low
2041
2002
  end
2042
2003
  end
2043
2004
 
2044
- ## Extends the RefName class with generation of HDLRuby::High text.
2005
+
2006
+ ## Extends the RefName class with generation of C text.
2045
2007
  class RefName
2046
2008
 
2047
- # Generates the C text of the equivalent HDLRuby::High code.
2009
+ # Generates the C text of the equivalent HDLRuby code.
2048
2010
  # +level+ is the hierachical level of the object and
2049
2011
  # +left+ tells if it is a left value or not.
2050
2012
  def to_c(level = 0, left = false)
@@ -2061,9 +2023,10 @@ module HDLRuby::Low
2061
2023
  end
2062
2024
  end
2063
2025
 
2064
- ## Extends the RefThis class with generation of HDLRuby::High text.
2026
+
2027
+ ## Extends the RefThis class with generation of C text.
2065
2028
  class RefThis
2066
- # Generates the C text of the equivalent HDLRuby::High code.
2029
+ # Generates the C text of the equivalent HDLRuby code.
2067
2030
  # +level+ is the hierachical level of the object and
2068
2031
  # +left+ tells if it is a left value or not.
2069
2032
  def to_c(level = 0, left = false)
@@ -2077,14 +2040,5 @@ module HDLRuby::Low
2077
2040
  end
2078
2041
  end
2079
2042
 
2080
- # ## Extends the Numeric class with generation of HDLRuby::High text.
2081
- # class ::Numeric
2082
-
2083
- # # Generates the text of the equivalent HDLRuby::High code.
2084
- # # +level+ is the hierachical level of the object.
2085
- # def to_c(level = 0)
2086
- # return self.to_s
2087
- # end
2088
- # end
2089
2043
 
2090
2044
  end