HDLRuby 2.11.11 → 3.0.0
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 +4 -4
- data/README.html +3274 -0
- data/README.md +608 -99
- data/ext/hruby_sim/hruby_rcsim_build.c +27 -0
- data/ext/hruby_sim/hruby_sim.h +3 -0
- data/ext/hruby_sim/hruby_sim_calc.c +2 -0
- data/ext/hruby_sim/hruby_sim_core.c +17 -5
- data/ext/hruby_sim/hruby_sim_stack_calc.c +1 -1
- data/ext/hruby_sim/hruby_sim_tree_calc.c +8 -1
- data/ext/hruby_sim/hruby_sim_vcd.c +24 -7
- data/ext/hruby_sim/hruby_sim_vizualize.c +9 -1
- data/lib/HDLRuby/backend/hruby_allocator.rb +2 -2
- data/lib/HDLRuby/backend/hruby_c_allocator.rb +7 -7
- data/lib/HDLRuby/hdr_samples/constant_in_function.rb +3 -1
- data/lib/HDLRuby/hdr_samples/counter_dff_bench.rb +3 -1
- data/lib/HDLRuby/hdr_samples/huge_rom.rb +1 -1
- data/lib/HDLRuby/hdr_samples/mei8.rb +11 -11
- data/lib/HDLRuby/hdr_samples/mei8_bench.rb +12 -12
- data/lib/HDLRuby/hdr_samples/neg_arith_bench.rb +4 -4
- data/lib/HDLRuby/hdr_samples/rom_nest.rb +1 -1
- data/lib/HDLRuby/hdr_samples/ruby_fir_hw.rb +4 -4
- data/lib/HDLRuby/hdr_samples/struct.rb +44 -10
- data/lib/HDLRuby/hdr_samples/with_bram.rb +45 -0
- data/lib/HDLRuby/hdr_samples/with_bram_frame_stack.rb +105 -0
- data/lib/HDLRuby/hdr_samples/with_bram_stack.rb +69 -0
- data/lib/HDLRuby/hdr_samples/with_casts.rb +3 -3
- data/lib/HDLRuby/hdr_samples/with_concat.rb +6 -6
- data/lib/HDLRuby/hdr_samples/with_connector_memory.rb +2 -2
- data/lib/HDLRuby/hdr_samples/with_def.rb +10 -3
- data/lib/HDLRuby/hdr_samples/with_define_operator.rb +44 -0
- data/lib/HDLRuby/hdr_samples/with_fixpoint.rb +12 -12
- data/lib/HDLRuby/hdr_samples/with_init.rb +3 -3
- data/lib/HDLRuby/hdr_samples/with_leftright.rb +21 -0
- data/lib/HDLRuby/hdr_samples/with_reduce.rb +13 -13
- data/lib/HDLRuby/hdr_samples/with_ref_array.rb +6 -6
- data/lib/HDLRuby/hdr_samples/with_register_stack.rb +150 -0
- data/lib/HDLRuby/hdr_samples/with_sequencer.rb +190 -0
- data/lib/HDLRuby/hdr_samples/with_sequencer_deep.rb +91 -0
- data/lib/HDLRuby/hdr_samples/with_sequencer_enumerable.rb +405 -0
- data/lib/HDLRuby/hdr_samples/with_sequencer_enumerator.rb +89 -0
- data/lib/HDLRuby/hdr_samples/with_sequencer_sync.rb +120 -0
- data/lib/HDLRuby/hdr_samples/with_subsums.rb +3 -3
- data/lib/HDLRuby/hdr_samples/with_terminate.rb +3 -3
- data/lib/HDLRuby/hdr_samples/with_to_a.rb +10 -10
- data/lib/HDLRuby/hdr_samples/with_values.rb +3 -3
- data/lib/HDLRuby/hdrcc.rb +29 -3
- data/lib/HDLRuby/hdrlib.rb +1 -1
- data/lib/HDLRuby/hruby_bstr.rb +10 -5
- data/lib/HDLRuby/hruby_db.rb +2 -2
- data/lib/HDLRuby/hruby_high.rb +152 -47
- data/lib/HDLRuby/hruby_high_fullname.rb +3 -1
- data/lib/HDLRuby/hruby_low.rb +189 -18
- data/lib/HDLRuby/hruby_low2c.rb +129 -54
- data/lib/HDLRuby/hruby_low2hdr.rb +66 -40
- data/lib/HDLRuby/hruby_low2high.rb +86 -44
- data/lib/HDLRuby/hruby_low2seq.rb +26 -18
- data/lib/HDLRuby/hruby_low2sym.rb +14 -13
- data/lib/HDLRuby/hruby_low2vhd.rb +80 -44
- data/lib/HDLRuby/hruby_low_bool2select.rb +61 -46
- data/lib/HDLRuby/hruby_low_casts_without_expression.rb +56 -44
- data/lib/HDLRuby/hruby_low_cleanup.rb +18 -16
- data/lib/HDLRuby/hruby_low_fix_types.rb +65 -32
- data/lib/HDLRuby/hruby_low_mutable.rb +83 -119
- data/lib/HDLRuby/hruby_low_resolve.rb +38 -30
- data/lib/HDLRuby/hruby_low_with_bool.rb +33 -16
- data/lib/HDLRuby/hruby_low_with_port.rb +3 -3
- data/lib/HDLRuby/hruby_low_with_var.rb +23 -9
- data/lib/HDLRuby/hruby_low_without_concat.rb +45 -19
- data/lib/HDLRuby/hruby_low_without_namespace.rb +47 -32
- data/lib/HDLRuby/hruby_low_without_parinseq.rb +32 -16
- data/lib/HDLRuby/hruby_low_without_select.rb +37 -24
- data/lib/HDLRuby/hruby_low_without_subsignals.rb +280 -0
- data/lib/HDLRuby/hruby_rcsim.rb +158 -134
- data/lib/HDLRuby/hruby_rsim.rb +194 -20
- data/lib/HDLRuby/hruby_rsim_mute.rb +2 -3
- data/lib/HDLRuby/hruby_rsim_vcd.rb +125 -50
- data/lib/HDLRuby/hruby_values.rb +48 -33
- data/lib/HDLRuby/hruby_verilog.rb +90 -48
- data/lib/HDLRuby/soft/stacks.rb +219 -0
- data/lib/HDLRuby/std/bram.rb +26 -0
- data/lib/HDLRuby/std/clocks.rb +1 -1
- data/lib/HDLRuby/std/fixpoint.rb +2 -2
- data/lib/HDLRuby/std/fsm.rb +48 -11
- data/lib/HDLRuby/std/function_generator.rb +2 -2
- data/lib/HDLRuby/std/sequencer.rb +1857 -0
- data/lib/HDLRuby/std/sequencer_sync.rb +400 -0
- data/lib/HDLRuby/std/std.rb +12 -0
- data/lib/HDLRuby/version.rb +1 -1
- data/tuto/adder_sat_flags_vcd.png +0 -0
- data/tuto/addsub_vcd.png +0 -0
- data/tuto/alu_vcd.png +0 -0
- data/tuto/bit_pong_vcd.png +0 -0
- data/tuto/checksum_vcd.png +0 -0
- data/tuto/circuit_hdr.odg +0 -0
- data/tuto/circuit_hdr.png +0 -0
- data/tuto/circuit_hie.odg +0 -0
- data/tuto/circuit_hie.png +0 -0
- data/tuto/circuit_view.odg +0 -0
- data/tuto/circuit_view.png +0 -0
- data/tuto/clock_counter_vcd.png +0 -0
- data/tuto/counter_ext_vcd.png +0 -0
- data/tuto/fact_vcd.png +0 -0
- data/tuto/hw_flow.odg +0 -0
- data/tuto/hw_flow.png +0 -0
- data/tuto/maxxer_vcd.png +0 -0
- data/tuto/pingpong0_vcd.png +0 -0
- data/tuto/pingpong1_vcd.png +0 -0
- data/tuto/pingpong2_vcd.png +0 -0
- data/tuto/ram_vcd.png +0 -0
- data/tuto/serializer_vcd.png +0 -0
- data/tuto/sw_flow.odg +0 -0
- data/tuto/sw_flow.png +0 -0
- data/tuto/the_counter_vcd.png +0 -0
- data/tuto/tutorial_sw.html +2359 -0
- data/tuto/tutorial_sw.md +2684 -0
- data/tuto/tutorial_sw.pdf +0 -0
- data/tuto/tutorial_sw_jp.md +417 -0
- metadata +49 -3
- data/lib/HDLRuby/hdr_samples/sumprod.rb +0 -29
data/lib/HDLRuby/hruby_low2c.rb
CHANGED
@@ -165,8 +165,8 @@ module HDLRuby::Low
|
|
165
165
|
end
|
166
166
|
|
167
167
|
|
168
|
-
## Extends the SystemT class with generation of C text.
|
169
168
|
class SystemT
|
169
|
+
## Extends the SystemT class with generation of C text.
|
170
170
|
|
171
171
|
# Generates the text of the equivalent HDLRuby code.
|
172
172
|
# +level+ is the hierachical level of the object and +hnames+
|
@@ -402,8 +402,8 @@ module HDLRuby::Low
|
|
402
402
|
end
|
403
403
|
|
404
404
|
|
405
|
-
## Extends the Scope class with generation of C text.
|
406
405
|
class Scope
|
406
|
+
## Extends the Scope class with generation of C text.
|
407
407
|
|
408
408
|
# Generates the C text of the equivalent HDLRuby code.
|
409
409
|
# +level+ is the hierachical level of the object.
|
@@ -567,8 +567,8 @@ module HDLRuby::Low
|
|
567
567
|
end
|
568
568
|
|
569
569
|
|
570
|
-
## Extends the Type class with generation of C text.
|
571
570
|
class Type
|
571
|
+
## Extends the Type class with generation of C text.
|
572
572
|
|
573
573
|
# Generates the C text of the equivalent HDLRuby code.
|
574
574
|
# +level+ is the hierachical level of the object.
|
@@ -587,8 +587,9 @@ module HDLRuby::Low
|
|
587
587
|
end
|
588
588
|
end
|
589
589
|
|
590
|
-
|
590
|
+
|
591
591
|
class TypeDef
|
592
|
+
## Extends the TypeDef class with generation of C text.
|
592
593
|
|
593
594
|
# Generates the C text of the equivalent HDLRuby code.
|
594
595
|
# +level+ is the hierachical level of the object.
|
@@ -601,8 +602,9 @@ module HDLRuby::Low
|
|
601
602
|
end
|
602
603
|
end
|
603
604
|
|
604
|
-
|
605
|
+
|
605
606
|
class TypeVector
|
607
|
+
## Extends the TypeVector class with generation of C text.
|
606
608
|
|
607
609
|
# Generates the C text of the equivalent HDLRuby code.
|
608
610
|
# +level+ is the hierachical level of the object.
|
@@ -618,8 +620,9 @@ module HDLRuby::Low
|
|
618
620
|
end
|
619
621
|
end
|
620
622
|
|
621
|
-
|
623
|
+
|
622
624
|
class TypeTuple
|
625
|
+
## Extends the TypeTuple class with generation of C text.
|
623
626
|
|
624
627
|
# Generates the C text of the equivalent HDLRuby code.
|
625
628
|
# +level+ is the hierachical level of the object.
|
@@ -634,26 +637,24 @@ module HDLRuby::Low
|
|
634
637
|
end
|
635
638
|
|
636
639
|
|
637
|
-
## Extends the TypeStruct class with generation of C text.
|
638
640
|
class TypeStruct
|
641
|
+
## Extends the TypeStruct class with generation of C text.
|
639
642
|
|
640
643
|
# Generates the text of the equivalent HDLRuby code.
|
641
644
|
# +level+ is the hierachical level of the object.
|
642
645
|
# def to_c(level = 0)
|
643
646
|
def to_c(res,level = 0)
|
644
|
-
#
|
645
|
-
# "\"#{key.to_s}\",#{type.to_c(level+1)}"
|
646
|
-
# end})"
|
647
|
-
|
648
|
-
"\"#{key.to_s}\",#{type.to_c("",level+1)}"
|
649
|
-
end})"
|
647
|
+
# res << "get_type_struct(#{self.each.map do |key,type|
|
648
|
+
# "\"#{key.to_s}\",#{type.to_c("",level+1)}"
|
649
|
+
# end.join(",")})"
|
650
|
+
self.to_vector.to_c(res,level)
|
650
651
|
return res
|
651
652
|
end
|
652
653
|
end
|
653
654
|
|
654
655
|
|
655
|
-
## Extends the Behavior class with generation of C text.
|
656
656
|
class Behavior
|
657
|
+
## Extends the Behavior class with generation of C text.
|
657
658
|
|
658
659
|
# Generates the text of the equivalent HDLRuby code.
|
659
660
|
# +level+ is the hierachical level of the object and
|
@@ -839,8 +840,9 @@ module HDLRuby::Low
|
|
839
840
|
end
|
840
841
|
end
|
841
842
|
|
842
|
-
|
843
|
+
|
843
844
|
class TimeBehavior
|
845
|
+
## Extends the TimeBehavior class with generation of C text.
|
844
846
|
|
845
847
|
# Generates the C text of the equivalent HDLRuby code.
|
846
848
|
# +level+ is the hierachical level of the object.
|
@@ -852,8 +854,8 @@ module HDLRuby::Low
|
|
852
854
|
end
|
853
855
|
|
854
856
|
|
855
|
-
## Extends the Event class with generation of C text.
|
856
857
|
class Event
|
858
|
+
## Extends the Event class with generation of C text.
|
857
859
|
|
858
860
|
# Generates the C text of the equivalent HDLRuby code.
|
859
861
|
# +level+ is the hierachical level of the object.
|
@@ -872,8 +874,8 @@ module HDLRuby::Low
|
|
872
874
|
end
|
873
875
|
|
874
876
|
|
875
|
-
## Extends the SignalI class with generation of C text.
|
876
877
|
class SignalI
|
878
|
+
## Extends the SignalI class with generation of C text.
|
877
879
|
|
878
880
|
# The id of a signal in the simulator.
|
879
881
|
@@signal_id = 0
|
@@ -897,8 +899,17 @@ module HDLRuby::Low
|
|
897
899
|
# +level+ is the hierachical level of the object.
|
898
900
|
# def to_c(level = 0)
|
899
901
|
def to_c(res,level = 0)
|
902
|
+
# First generate the sub signals if any.
|
903
|
+
if self.each_signal.any? then
|
904
|
+
self.each_signal do |signal|
|
905
|
+
signal.to_c(res,level)
|
906
|
+
end
|
907
|
+
# return res
|
908
|
+
end
|
900
909
|
|
901
|
-
#
|
910
|
+
# No sub signals, generate for the current one.
|
911
|
+
|
912
|
+
# puts "Signal.to_c with signal #{self.name} and c_name: #{Low2C.obj_name(self)}"
|
902
913
|
# Declare the global variable holding the signal.
|
903
914
|
res << "SignalI "
|
904
915
|
self.to_c_signal(res,level+1)
|
@@ -943,6 +954,22 @@ module HDLRuby::Low
|
|
943
954
|
res << "signalI->type = "
|
944
955
|
self.type.to_c(res,level+2)
|
945
956
|
res << ";\n"
|
957
|
+
|
958
|
+
# Generate and set the sub signals if any.
|
959
|
+
res << " " * (level+1)*3
|
960
|
+
num_sig = self.each_signal.to_a.size
|
961
|
+
res << "signalI->num_signals = #{num_sig};\n"
|
962
|
+
if num_sig > 0 then
|
963
|
+
res << " " * (level+1)*3
|
964
|
+
res << "signalI->signals = calloc(sizeof(SignalI),#{num_sig});\n"
|
965
|
+
self.each_signal.with_index do |sig,i|
|
966
|
+
res << " " * (level+1)*3
|
967
|
+
res << "#{Low2C.obj_name(sig)} = #{Low2C.make_name(sig)}();\n"
|
968
|
+
res << " " * (level+1)*3
|
969
|
+
res << "signalI->signals[#{i}] = #{Low2C.obj_name(sig)};\n"
|
970
|
+
end
|
971
|
+
end
|
972
|
+
|
946
973
|
# Set the current and the next value.
|
947
974
|
res << " " * (level+1)*3
|
948
975
|
res << "signalI->c_value = make_value(signalI->type,0);\n"
|
@@ -1000,6 +1027,15 @@ module HDLRuby::Low
|
|
1000
1027
|
## Generates the content of the h file.
|
1001
1028
|
# def to_ch
|
1002
1029
|
def to_ch(res)
|
1030
|
+
# First generate the sub signals if any.
|
1031
|
+
if self.each_signal.any? then
|
1032
|
+
self.each_signal do |signal|
|
1033
|
+
signal.to_ch(res)
|
1034
|
+
end
|
1035
|
+
# return res
|
1036
|
+
end
|
1037
|
+
|
1038
|
+
# No sub sub signal, generate for the current signal.
|
1003
1039
|
# res = ""
|
1004
1040
|
# puts "to_ch for SignalI: #{self.to_c_signal()}"
|
1005
1041
|
# Declare the global variable holding the signal.
|
@@ -1053,8 +1089,8 @@ module HDLRuby::Low
|
|
1053
1089
|
end
|
1054
1090
|
|
1055
1091
|
|
1056
|
-
## Extends the SystemI class with generation of C text.
|
1057
1092
|
class SystemI
|
1093
|
+
## Extends the SystemI class with generation of C text.
|
1058
1094
|
|
1059
1095
|
## Generates the C text of the equivalent HDLRuby code.
|
1060
1096
|
# +level+ is the hierachical level of the object.
|
@@ -1134,8 +1170,8 @@ module HDLRuby::Low
|
|
1134
1170
|
end
|
1135
1171
|
|
1136
1172
|
|
1137
|
-
# Extend the Chunk cass with generation of text code.
|
1138
1173
|
class HDLRuby::Low::Chunk
|
1174
|
+
# Extend the Chunk cass with generation of text code.
|
1139
1175
|
|
1140
1176
|
# Generates the C text of the equivalent HDLRuby code.
|
1141
1177
|
# +level+ is the hierachical level of the object.
|
@@ -1166,8 +1202,9 @@ module HDLRuby::Low
|
|
1166
1202
|
end
|
1167
1203
|
|
1168
1204
|
|
1169
|
-
## Extends the SystemI class with generation of C text.
|
1170
1205
|
class Code
|
1206
|
+
## Extends the SystemI class with generation of C text.
|
1207
|
+
|
1171
1208
|
# Generates the C text of the equivalent HDLRuby code.
|
1172
1209
|
# +level+ is the hierachical level of the object.
|
1173
1210
|
# def to_c(level = 0)
|
@@ -1288,8 +1325,8 @@ module HDLRuby::Low
|
|
1288
1325
|
end
|
1289
1326
|
|
1290
1327
|
|
1291
|
-
## Extends the Statement class with generation of C text.
|
1292
1328
|
class Statement
|
1329
|
+
## Extends the Statement class with generation of C text.
|
1293
1330
|
|
1294
1331
|
# Generates the C text of the equivalent HDLRuby code.
|
1295
1332
|
# +level+ is the hierachical level of the object.
|
@@ -1330,8 +1367,8 @@ module HDLRuby::Low
|
|
1330
1367
|
end
|
1331
1368
|
end
|
1332
1369
|
|
1333
|
-
## Extends the Transmit class with generation of C text.
|
1334
1370
|
class Transmit
|
1371
|
+
## Extends the Transmit class with generation of C text.
|
1335
1372
|
|
1336
1373
|
# # Generates the C text of the equivalent HDLRuby code.
|
1337
1374
|
# # +level+ is the hierachical level of the object.
|
@@ -1432,8 +1469,8 @@ module HDLRuby::Low
|
|
1432
1469
|
end
|
1433
1470
|
|
1434
1471
|
|
1435
|
-
## Extends the Print class with generation of C text.
|
1436
1472
|
class Print
|
1473
|
+
## Extends the Print class with generation of C text.
|
1437
1474
|
|
1438
1475
|
# # Generates the C text of the equivalent HDLRuby code.
|
1439
1476
|
# # +level+ is the hierachical level of the object.
|
@@ -1501,8 +1538,9 @@ module HDLRuby::Low
|
|
1501
1538
|
end
|
1502
1539
|
end
|
1503
1540
|
|
1504
|
-
|
1541
|
+
|
1505
1542
|
class TimeTerminate
|
1543
|
+
## Extends the TimeTerminate class with generation of C text.
|
1506
1544
|
|
1507
1545
|
# Generates the C text of the equivalent HDLRuby code.
|
1508
1546
|
# +level+ is the hierachical level of the object.
|
@@ -1512,8 +1550,9 @@ module HDLRuby::Low
|
|
1512
1550
|
end
|
1513
1551
|
end
|
1514
1552
|
|
1515
|
-
|
1553
|
+
|
1516
1554
|
class Configure
|
1555
|
+
## Extends the Configure class with generation of C text.
|
1517
1556
|
|
1518
1557
|
# Generates the C text of the equivalent HDLRuby code.
|
1519
1558
|
# +level+ is the hierachical level of the object.
|
@@ -1524,8 +1563,8 @@ module HDLRuby::Low
|
|
1524
1563
|
end
|
1525
1564
|
|
1526
1565
|
|
1527
|
-
## Extends the If class with generation of C text.
|
1528
1566
|
class If
|
1567
|
+
## Extends the If class with generation of C text.
|
1529
1568
|
|
1530
1569
|
# # Generates the C text of the equivalent HDLRuby code.
|
1531
1570
|
# # +level+ is the hierachical level of the object.
|
@@ -1645,8 +1684,8 @@ module HDLRuby::Low
|
|
1645
1684
|
end
|
1646
1685
|
end
|
1647
1686
|
|
1648
|
-
## Extends the When class with generation of C text.
|
1649
1687
|
class When
|
1688
|
+
## Extends the When class with generation of C text.
|
1650
1689
|
|
1651
1690
|
# Generates the C text of the equivalent HDLRuby code.
|
1652
1691
|
# +level+ is the hierachical level of the object.
|
@@ -1689,8 +1728,9 @@ module HDLRuby::Low
|
|
1689
1728
|
end
|
1690
1729
|
end
|
1691
1730
|
|
1692
|
-
|
1731
|
+
|
1693
1732
|
class Case
|
1733
|
+
## Extends the Case class with generation of C text.
|
1694
1734
|
|
1695
1735
|
# # Generates the text of the equivalent HDLRuby code.
|
1696
1736
|
# # +level+ is the hierachical level of the object.
|
@@ -1823,8 +1863,8 @@ module HDLRuby::Low
|
|
1823
1863
|
end
|
1824
1864
|
|
1825
1865
|
|
1826
|
-
## Extends the Delay class with generation of C text.
|
1827
1866
|
class Delay
|
1867
|
+
## Extends the Delay class with generation of C text.
|
1828
1868
|
|
1829
1869
|
# Generates the C text of the equivalent HDLRuby code.
|
1830
1870
|
# +level+ is the hierachical level of the object.
|
@@ -1839,8 +1879,8 @@ module HDLRuby::Low
|
|
1839
1879
|
end
|
1840
1880
|
|
1841
1881
|
|
1842
|
-
## Extends the TimeWait class with generation of C text.
|
1843
1882
|
class TimeWait
|
1883
|
+
## Extends the TimeWait class with generation of C text.
|
1844
1884
|
|
1845
1885
|
# Generates the C text of the equivalent HDLRuby code.
|
1846
1886
|
# +level+ is the hierachical level of the object.
|
@@ -1860,8 +1900,9 @@ module HDLRuby::Low
|
|
1860
1900
|
end
|
1861
1901
|
end
|
1862
1902
|
|
1863
|
-
|
1903
|
+
|
1864
1904
|
class TimeRepeat
|
1905
|
+
## Extends the TimeRepeat class with generation of C text.
|
1865
1906
|
|
1866
1907
|
# # Generates the C text of the equivalent HDLRuby code.
|
1867
1908
|
# # +level+ is the hierachical level of the object.
|
@@ -1901,8 +1942,9 @@ module HDLRuby::Low
|
|
1901
1942
|
end
|
1902
1943
|
end
|
1903
1944
|
|
1904
|
-
|
1945
|
+
|
1905
1946
|
class Block
|
1947
|
+
## Extends the Block class with generation of C text.
|
1906
1948
|
|
1907
1949
|
# Adds the c code of the blocks to +res+ at +level+
|
1908
1950
|
def add_blocks_code(res,level)
|
@@ -2054,20 +2096,22 @@ module HDLRuby::Low
|
|
2054
2096
|
end
|
2055
2097
|
|
2056
2098
|
|
2057
|
-
## Extends the Block class with generation of C text.
|
2058
2099
|
class TimeBlock
|
2100
|
+
## Extends the Block class with generation of C text.
|
2101
|
+
|
2059
2102
|
# TimeBlock is identical to Block in C
|
2060
2103
|
end
|
2061
2104
|
|
2062
2105
|
|
2063
|
-
## Extends the Connection class with generation of C text.
|
2064
2106
|
class Connection
|
2107
|
+
## Extends the Connection class with generation of C text.
|
2108
|
+
|
2065
2109
|
# Nothing required, Transmit is generated identically.
|
2066
2110
|
end
|
2067
2111
|
|
2068
2112
|
|
2069
|
-
## Extends the Expression class with generation of C text.
|
2070
2113
|
class Expression
|
2114
|
+
## Extends the Expression class with generation of C text.
|
2071
2115
|
|
2072
2116
|
# Generates the C text of the equivalent HDLRuby code.
|
2073
2117
|
# +level+ is the hierachical level of the object.
|
@@ -2089,8 +2133,8 @@ module HDLRuby::Low
|
|
2089
2133
|
end
|
2090
2134
|
|
2091
2135
|
|
2092
|
-
## Extends the Value class with generation of C text.
|
2093
2136
|
class Value
|
2137
|
+
## Extends the Value class with generation of C text.
|
2094
2138
|
|
2095
2139
|
## Generates the C text for an access to the value.
|
2096
2140
|
# +level+ is the hierachical level of the object.
|
@@ -2205,7 +2249,7 @@ module HDLRuby::Low
|
|
2205
2249
|
res << "value->data_int = #{self.content}LLU;\n"
|
2206
2250
|
else
|
2207
2251
|
res << "value->data_int = "
|
2208
|
-
res << "#{self.content &
|
2252
|
+
res << "#{self.content & 0xFFFF_FFFF_FFFF_FFFF}LLU;\n"
|
2209
2253
|
end
|
2210
2254
|
# Close the value.
|
2211
2255
|
res << " " * (level+1)*3
|
@@ -2258,8 +2302,8 @@ module HDLRuby::Low
|
|
2258
2302
|
end
|
2259
2303
|
|
2260
2304
|
|
2261
|
-
## Extends the Cast class with generation of C text.
|
2262
2305
|
class Cast
|
2306
|
+
## Extends the Cast class with generation of C text.
|
2263
2307
|
|
2264
2308
|
# # Generates the C text of the equivalent HDLRuby code.
|
2265
2309
|
# # +level+ is the hierachical level of the object.
|
@@ -2314,8 +2358,8 @@ module HDLRuby::Low
|
|
2314
2358
|
end
|
2315
2359
|
|
2316
2360
|
|
2317
|
-
## Extends the Operation class with generation of C text.
|
2318
2361
|
class Operation
|
2362
|
+
## Extends the Operation class with generation of C text.
|
2319
2363
|
|
2320
2364
|
# Generates the C text of the equivalent HDLRuby code.
|
2321
2365
|
# +level+ is the hierachical level of the object.
|
@@ -2326,8 +2370,9 @@ module HDLRuby::Low
|
|
2326
2370
|
end
|
2327
2371
|
end
|
2328
2372
|
|
2329
|
-
|
2373
|
+
|
2330
2374
|
class Unary
|
2375
|
+
## Extends the Unary class with generation of C text.
|
2331
2376
|
|
2332
2377
|
# # Generates the C text of the equivalent HDLRuby code.
|
2333
2378
|
# # +level+ is the hierachical level of the object.
|
@@ -2410,8 +2455,8 @@ module HDLRuby::Low
|
|
2410
2455
|
end
|
2411
2456
|
|
2412
2457
|
|
2413
|
-
## Extends the Binary class with generation of C text.
|
2414
2458
|
class Binary
|
2459
|
+
## Extends the Binary class with generation of C text.
|
2415
2460
|
|
2416
2461
|
# # Generates the C text of the equivalent HDLRuby code.
|
2417
2462
|
# # +level+ is the hierachical level of the object.
|
@@ -2559,8 +2604,9 @@ module HDLRuby::Low
|
|
2559
2604
|
end
|
2560
2605
|
end
|
2561
2606
|
|
2562
|
-
|
2607
|
+
|
2563
2608
|
class Select
|
2609
|
+
## Extends the Select class with generation of C text.
|
2564
2610
|
|
2565
2611
|
# # Generates the C text of the equivalent HDLRuby code.
|
2566
2612
|
# # +level+ is the hierachical level of the object.
|
@@ -2637,9 +2683,9 @@ module HDLRuby::Low
|
|
2637
2683
|
end
|
2638
2684
|
end
|
2639
2685
|
|
2640
|
-
## Extends the Concat class with generation of C text.
|
2641
|
-
class Concat
|
2642
2686
|
|
2687
|
+
class Concat
|
2688
|
+
## Extends the Concat class with generation of C text.
|
2643
2689
|
|
2644
2690
|
# # Generates the C text for the equivalent HDLRuby code.
|
2645
2691
|
# # +level+ is the hierachical level of the object.
|
@@ -2697,7 +2743,7 @@ module HDLRuby::Low
|
|
2697
2743
|
end
|
2698
2744
|
# Compute the resulting concatenation.
|
2699
2745
|
res << (" " * ((level+1)*3))
|
2700
|
-
# puts "self.type.direction=#{self.type.direction}\n"
|
2746
|
+
# puts "self.type=#{self.type} self.type.direction=#{self.type.direction}\n"
|
2701
2747
|
res << "sconcat(#{expressions.size},"
|
2702
2748
|
res << (self.type.direction == :little ? "1" : "0")
|
2703
2749
|
res << ");\n"
|
@@ -2768,8 +2814,8 @@ module HDLRuby::Low
|
|
2768
2814
|
|
2769
2815
|
|
2770
2816
|
|
2771
|
-
## Extends the Ref class with generation of C text.
|
2772
2817
|
class Ref
|
2818
|
+
## Extends the Ref class with generation of C text.
|
2773
2819
|
|
2774
2820
|
# Generates the C text of the equivalent HDLRuby code.
|
2775
2821
|
# +level+ is the hierachical level of the object and
|
@@ -2782,8 +2828,8 @@ module HDLRuby::Low
|
|
2782
2828
|
end
|
2783
2829
|
|
2784
2830
|
|
2785
|
-
## Extends the RefConcat class with generation of C text.
|
2786
2831
|
class RefConcat
|
2832
|
+
## Extends the RefConcat class with generation of C text.
|
2787
2833
|
|
2788
2834
|
# Generates the C text of the equivalent HDLRuby code.
|
2789
2835
|
# +level+ is the hierachical level of the object and
|
@@ -2816,8 +2862,8 @@ module HDLRuby::Low
|
|
2816
2862
|
end
|
2817
2863
|
|
2818
2864
|
|
2819
|
-
## Extends the RefIndex class with generation of C text.
|
2820
2865
|
class RefIndex
|
2866
|
+
## Extends the RefIndex class with generation of C text.
|
2821
2867
|
|
2822
2868
|
# # Generates the C text of the equivalent HDLRuby code.
|
2823
2869
|
# # +level+ is thehierachical level of the object and
|
@@ -2926,8 +2972,8 @@ module HDLRuby::Low
|
|
2926
2972
|
end
|
2927
2973
|
|
2928
2974
|
|
2929
|
-
## Extends the RefRange class with generation of C text.
|
2930
2975
|
class RefRange
|
2976
|
+
## Extends the RefRange class with generation of C text.
|
2931
2977
|
|
2932
2978
|
# # Generates the C text of the equivalent HDLRuby code.
|
2933
2979
|
# # +level+ is the hierachical level of the object and
|
@@ -3039,8 +3085,8 @@ module HDLRuby::Low
|
|
3039
3085
|
end
|
3040
3086
|
|
3041
3087
|
|
3042
|
-
## Extends the RefName class with generation of C text.
|
3043
3088
|
class RefName
|
3089
|
+
## Extends the RefName class with generation of C text.
|
3044
3090
|
|
3045
3091
|
# Generates the C text of the equivalent HDLRuby code.
|
3046
3092
|
# +level+ is the hierachical level of the object and
|
@@ -3054,22 +3100,51 @@ module HDLRuby::Low
|
|
3054
3100
|
res << "->" << (left ? "f_value" : "c_value")
|
3055
3101
|
res << ");\n"
|
3056
3102
|
return res
|
3103
|
+
# sig = self.resolve
|
3104
|
+
# if sig.each_signal.any? then
|
3105
|
+
# # Save the value pool state.
|
3106
|
+
# res << (" " * (level*3)) << "PV;\n"
|
3107
|
+
# # There are sub signals, get and concat their values.
|
3108
|
+
# subs = sig.each_signal.to_a
|
3109
|
+
# subs.each do |sub|
|
3110
|
+
# res << (" " * (level*3))
|
3111
|
+
# res << "push("
|
3112
|
+
# sub.to_c_signal(res,level+1)
|
3113
|
+
# res << "->" << (left ? "f_value" : "c_value")
|
3114
|
+
# res << ");\n"
|
3115
|
+
# end
|
3116
|
+
# # Compute the resulting concatenation.
|
3117
|
+
# res << (" " * ((level+1)*3))
|
3118
|
+
# res << "sconcat(#{subs.size},"
|
3119
|
+
# res << (sig.type.direction == :little ? "1" : "0")
|
3120
|
+
# res << ");\n"
|
3121
|
+
# # Restore the value pool state.
|
3122
|
+
# res << (" " * (level*3)) << "RV;\n"
|
3123
|
+
# else
|
3124
|
+
# # There is no sub signals, get the signal value.
|
3125
|
+
# res << (" " * (level*3))
|
3126
|
+
# res << "push("
|
3127
|
+
# sig.to_c_signal(res,level+1)
|
3128
|
+
# res << "->" << (left ? "f_value" : "c_value")
|
3129
|
+
# res << ");\n"
|
3130
|
+
# end
|
3131
|
+
# return res
|
3057
3132
|
end
|
3058
3133
|
|
3059
3134
|
# Generates the C text for reference as left value to a signal.
|
3060
3135
|
# +level+ is the hierarchical level of the object.
|
3061
3136
|
# def to_c_signal(level = 0)
|
3062
3137
|
def to_c_signal(res,level = 0)
|
3063
|
-
# puts "to_c_signal with self=#{self.name}
|
3064
|
-
# return "#{self.resolve.to_c_signal(level+1)}"
|
3138
|
+
# puts "to_c_signal with self=#{self.name}"
|
3065
3139
|
self.resolve.to_c_signal(res,level+1)
|
3066
3140
|
return res
|
3067
3141
|
end
|
3068
3142
|
end
|
3069
3143
|
|
3070
3144
|
|
3071
|
-
## Extends the RefThis class with generation of C text.
|
3072
3145
|
class RefThis
|
3146
|
+
## Extends the RefThis class with generation of C text.
|
3147
|
+
|
3073
3148
|
# Generates the C text of the equivalent HDLRuby code.
|
3074
3149
|
# +level+ is the hierachical level of the object and
|
3075
3150
|
# +left+ tells if it is a left value or not.
|