HDLRuby 2.6.8 → 2.6.18
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/lib/HDLRuby/hdr_samples/neg_arith_bench.rb +11 -0
- data/lib/HDLRuby/hdrcc.rb +64 -34
- data/lib/HDLRuby/hruby_high.rb +130 -114
- data/lib/HDLRuby/hruby_low.rb +27 -27
- data/lib/HDLRuby/hruby_low2c.rb +3 -1
- data/lib/HDLRuby/hruby_low_resolve.rb +24 -0
- data/lib/HDLRuby/hruby_low_without_namespace.rb +6 -2
- data/lib/HDLRuby/hruby_tools.rb +24 -0
- data/lib/HDLRuby/hruby_verilog.rb +5 -5
- data/lib/HDLRuby/hruby_verilog_name.rb +50 -32
- data/lib/HDLRuby/sim/hruby_sim_calc.c +168 -8
- data/lib/HDLRuby/std/function_generator.rb +9 -7
- data/lib/HDLRuby/version.rb +1 -1
- metadata +2 -2
data/lib/HDLRuby/hruby_high.rb
CHANGED
@@ -763,9 +763,9 @@ module HDLRuby::High
|
|
763
763
|
systemTL = HDLRuby::Low::SystemT.new(HDLRuby.uniq_name(name),
|
764
764
|
self.scope.to_low)
|
765
765
|
# puts "New low from system #{self.name}: #{systemTL.name}"
|
766
|
-
# For debugging: set the source high object
|
767
|
-
systemTL.properties[:low2high] = self.hdr_id
|
768
|
-
self.properties[:high2low] = systemTL
|
766
|
+
# # For debugging: set the source high object
|
767
|
+
# systemTL.properties[:low2high] = self.hdr_id
|
768
|
+
# self.properties[:high2low] = systemTL
|
769
769
|
|
770
770
|
# Fills the interface of the new system
|
771
771
|
# from the included systems.
|
@@ -1311,9 +1311,9 @@ module HDLRuby::High
|
|
1311
1311
|
# Create the resulting low scope.
|
1312
1312
|
# scopeL = HDLRuby::Low::Scope.new()
|
1313
1313
|
scopeL = HDLRuby::Low::Scope.new(self.name)
|
1314
|
-
# For debugging: set the source high object
|
1315
|
-
scopeL.properties[:low2high] = self.hdr_id
|
1316
|
-
self.properties[:high2low] = scopeL
|
1314
|
+
# # For debugging: set the source high object
|
1315
|
+
# scopeL.properties[:low2high] = self.hdr_id
|
1316
|
+
# self.properties[:high2low] = scopeL
|
1317
1317
|
|
1318
1318
|
# Push the private namespace for the low generation.
|
1319
1319
|
High.space_push(@namespace)
|
@@ -1545,9 +1545,9 @@ module HDLRuby::High
|
|
1545
1545
|
def to_low(name = self.name)
|
1546
1546
|
# return HDLRuby::Low::Type.new(name)
|
1547
1547
|
typeL = HDLRuby::Low::Type.new(name)
|
1548
|
-
# For debugging: set the source high object
|
1549
|
-
typeL.properties[:low2high] = self.hdr_id
|
1550
|
-
self.properties[:high2low] = typeL
|
1548
|
+
# # For debugging: set the source high object
|
1549
|
+
# typeL.properties[:low2high] = self.hdr_id
|
1550
|
+
# self.properties[:high2low] = typeL
|
1551
1551
|
return typeL
|
1552
1552
|
end
|
1553
1553
|
end
|
@@ -1699,9 +1699,9 @@ module HDLRuby::High
|
|
1699
1699
|
def to_low(name = self.name)
|
1700
1700
|
# return HDLRuby::Low::TypeDef.new(name,self.def.to_low)
|
1701
1701
|
typeDefL = HDLRuby::Low::TypeDef.new(name,self.def.to_low)
|
1702
|
-
# For debugging: set the source high object
|
1703
|
-
typeDefL.properties[:low2high] = self.hdr_id
|
1704
|
-
self.properties[:high2low] = typeDefL
|
1702
|
+
# # For debugging: set the source high object
|
1703
|
+
# typeDefL.properties[:low2high] = self.hdr_id
|
1704
|
+
# self.properties[:high2low] = typeDefL
|
1705
1705
|
return typeDefL
|
1706
1706
|
end
|
1707
1707
|
end
|
@@ -1752,9 +1752,9 @@ module HDLRuby::High
|
|
1752
1752
|
def to_low(name = self.name)
|
1753
1753
|
# return HDLRuby::Low::TypeDef.new(name,self.def.to_low)
|
1754
1754
|
typeDefL = HDLRuby::Low::TypeDef.new(name,self.def.to_low)
|
1755
|
-
# For debugging: set the source high object
|
1756
|
-
typeDefL.properties[:low2high] = self.hdr_id
|
1757
|
-
self.properties[:high2low] = typeDefL
|
1755
|
+
# # For debugging: set the source high object
|
1756
|
+
# typeDefL.properties[:low2high] = self.hdr_id
|
1757
|
+
# self.properties[:high2low] = typeDefL
|
1758
1758
|
return typeDefL
|
1759
1759
|
end
|
1760
1760
|
end
|
@@ -1770,9 +1770,9 @@ module HDLRuby::High
|
|
1770
1770
|
# self.range.to_low)
|
1771
1771
|
typeVectorL = HDLRuby::Low::TypeVector.new(name,self.base.to_low,
|
1772
1772
|
self.range.to_low)
|
1773
|
-
# For debugging: set the source high object
|
1774
|
-
typeVectorL.properties[:low2high] = self.hdr_id
|
1775
|
-
self.properties[:high2low] = typeVectorL
|
1773
|
+
# # For debugging: set the source high object
|
1774
|
+
# typeVectorL.properties[:low2high] = self.hdr_id
|
1775
|
+
# self.properties[:high2low] = typeVectorL
|
1776
1776
|
return typeVectorL
|
1777
1777
|
end
|
1778
1778
|
end
|
@@ -1850,9 +1850,9 @@ module HDLRuby::High
|
|
1850
1850
|
# *@types.map { |type| type.to_low } )
|
1851
1851
|
typeTupleL = HDLRuby::Low::TypeTuple.new(name,self.direction,
|
1852
1852
|
*@types.map { |type| type.to_low } )
|
1853
|
-
# For debugging: set the source high object
|
1854
|
-
typeTupleL.properties[:low2high] = self.hdr_id
|
1855
|
-
self.properties[:high2low] = typeTupleL
|
1853
|
+
# # For debugging: set the source high object
|
1854
|
+
# typeTupleL.properties[:low2high] = self.hdr_id
|
1855
|
+
# self.properties[:high2low] = typeTupleL
|
1856
1856
|
return typeTupleL
|
1857
1857
|
end
|
1858
1858
|
end
|
@@ -1871,9 +1871,9 @@ module HDLRuby::High
|
|
1871
1871
|
# @types.map { |name,type| [name,type.to_low] } )
|
1872
1872
|
typeStructL = HDLRuby::Low::TypeStruct.new(name,self.direction,
|
1873
1873
|
@types.map { |name,type| [name,type.to_low] } )
|
1874
|
-
# For debugging: set the source high object
|
1875
|
-
typeStructL.properties[:low2high] = self.hdr_id
|
1876
|
-
self.properties[:high2low] = typeStructL
|
1874
|
+
# # For debugging: set the source high object
|
1875
|
+
# typeStructL.properties[:low2high] = self.hdr_id
|
1876
|
+
# self.properties[:high2low] = typeStructL
|
1877
1877
|
return typeStructL
|
1878
1878
|
end
|
1879
1879
|
end
|
@@ -2111,9 +2111,9 @@ module HDLRuby::High
|
|
2111
2111
|
# Creates the resulting HDLRuby::Low instance
|
2112
2112
|
systemIL = HDLRuby::Low::SystemI.new(High.names_create(name),
|
2113
2113
|
systemTL)
|
2114
|
-
# For debugging: set the source high object
|
2115
|
-
systemIL.properties[:low2high] = self.hdr_id
|
2116
|
-
self.properties[:high2low] = systemIL
|
2114
|
+
# # For debugging: set the source high object
|
2115
|
+
# systemIL.properties[:low2high] = self.hdr_id
|
2116
|
+
# self.properties[:high2low] = systemIL
|
2117
2117
|
# Adds the other systemTs.
|
2118
2118
|
self.each_systemT do |systemT|
|
2119
2119
|
systemIL.add_systemT(systemT.to_low) unless systemT == self.systemT
|
@@ -2139,9 +2139,9 @@ module HDLRuby::High
|
|
2139
2139
|
lump = lump.respond_to?(:to_low) ? lump.to_low : lump.to_s
|
2140
2140
|
lump
|
2141
2141
|
end)
|
2142
|
-
# For debugging: set the source high object
|
2143
|
-
chunkL.properties[:low2high] = self.hdr_id
|
2144
|
-
self.properties[:high2low] = chunkL
|
2142
|
+
# # For debugging: set the source high object
|
2143
|
+
# chunkL.properties[:low2high] = self.hdr_id
|
2144
|
+
# self.properties[:high2low] = chunkL
|
2145
2145
|
return chunkL
|
2146
2146
|
end
|
2147
2147
|
end
|
@@ -2153,9 +2153,9 @@ module HDLRuby::High
|
|
2153
2153
|
def to_low
|
2154
2154
|
# Create the resulting code.
|
2155
2155
|
codeL = HDLRuby::Low::Code.new
|
2156
|
-
# For debugging: set the source high object
|
2157
|
-
codeL.properties[:low2high] = self.hdr_id
|
2158
|
-
self.properties[:high2low] = codeL
|
2156
|
+
# # For debugging: set the source high object
|
2157
|
+
# codeL.properties[:low2high] = self.hdr_id
|
2158
|
+
# self.properties[:high2low] = codeL
|
2159
2159
|
# Add the low-level events.
|
2160
2160
|
self.each_event { |event| codeL.add_event(event.to_low) }
|
2161
2161
|
# Add the low-level code chunks.
|
@@ -2247,9 +2247,9 @@ module HDLRuby::High
|
|
2247
2247
|
ifL = HDLRuby::Low::If.new(self.condition.to_low,
|
2248
2248
|
self.yes.to_low,noL)
|
2249
2249
|
self.each_noif {|cond,block| ifL.add_noif(cond.to_low,block.to_low)}
|
2250
|
-
# For debugging: set the source high object
|
2251
|
-
ifL.properties[:low2high] = self.hdr_id
|
2252
|
-
self.properties[:high2low] = ifL
|
2250
|
+
# # For debugging: set the source high object
|
2251
|
+
# ifL.properties[:low2high] = self.hdr_id
|
2252
|
+
# self.properties[:high2low] = ifL
|
2253
2253
|
return ifL
|
2254
2254
|
end
|
2255
2255
|
end
|
@@ -2272,9 +2272,9 @@ module HDLRuby::High
|
|
2272
2272
|
# self.statement.to_low)
|
2273
2273
|
whenL = HDLRuby::Low::When.new(self.match.to_low,
|
2274
2274
|
self.statement.to_low)
|
2275
|
-
# For debugging: set the source high object
|
2276
|
-
whenL.properties[:low2high] = self.hdr_id
|
2277
|
-
self.properties[:high2low] = whenL
|
2275
|
+
# # For debugging: set the source high object
|
2276
|
+
# whenL.properties[:low2high] = self.hdr_id
|
2277
|
+
# self.properties[:high2low] = whenL
|
2278
2278
|
return whenL
|
2279
2279
|
end
|
2280
2280
|
end
|
@@ -2320,9 +2320,9 @@ module HDLRuby::High
|
|
2320
2320
|
def to_low
|
2321
2321
|
# Create the low level case.
|
2322
2322
|
caseL = HDLRuby::Low::Case.new(@value.to_low)
|
2323
|
-
# For debugging: set the source high object
|
2324
|
-
caseL.properties[:low2high] = self.hdr_id
|
2325
|
-
self.properties[:high2low] = caseL
|
2323
|
+
# # For debugging: set the source high object
|
2324
|
+
# caseL.properties[:low2high] = self.hdr_id
|
2325
|
+
# self.properties[:high2low] = caseL
|
2326
2326
|
# Add each when case.
|
2327
2327
|
self.each_when do |w|
|
2328
2328
|
caseL.add_when(w.to_low)
|
@@ -2351,9 +2351,9 @@ module HDLRuby::High
|
|
2351
2351
|
def to_low
|
2352
2352
|
# return HDLRuby::Low::Delay.new(self.value, self.unit)
|
2353
2353
|
delayL = HDLRuby::Low::Delay.new(self.value, self.unit)
|
2354
|
-
# For debugging: set the source high object
|
2355
|
-
delayL.properties[:low2high] = self.hdr_id
|
2356
|
-
self.properties[:high2low] = delayL
|
2354
|
+
# # For debugging: set the source high object
|
2355
|
+
# delayL.properties[:low2high] = self.hdr_id
|
2356
|
+
# self.properties[:high2low] = delayL
|
2357
2357
|
return delayL
|
2358
2358
|
end
|
2359
2359
|
end
|
@@ -2367,9 +2367,9 @@ module HDLRuby::High
|
|
2367
2367
|
def to_low
|
2368
2368
|
# return HDLRuby::Low::TimeWait.new(self.delay.to_low)
|
2369
2369
|
timeWaitL = HDLRuby::Low::TimeWait.new(self.delay.to_low)
|
2370
|
-
# For debugging: set the source high object
|
2371
|
-
timeWaitL.properties[:low2high] = self.hdr_id
|
2372
|
-
self.properties[:high2low] = timeWaitL
|
2370
|
+
# # For debugging: set the source high object
|
2371
|
+
# timeWaitL.properties[:low2high] = self.hdr_id
|
2372
|
+
# self.properties[:high2low] = timeWaitL
|
2373
2373
|
return timeWaitL
|
2374
2374
|
end
|
2375
2375
|
end
|
@@ -2386,9 +2386,9 @@ module HDLRuby::High
|
|
2386
2386
|
# self.delay.to_low)
|
2387
2387
|
timeRepeatL = HDLRuby::Low::TimeRepeat.new(self.statement.to_low,
|
2388
2388
|
self.delay.to_low)
|
2389
|
-
# For debugging: set the source high object
|
2390
|
-
timeRepeatL.properties[:low2high] = self.hdr_id
|
2391
|
-
self.properties[:high2low] = timeRepeatL
|
2389
|
+
# # For debugging: set the source high object
|
2390
|
+
# timeRepeatL.properties[:low2high] = self.hdr_id
|
2391
|
+
# self.properties[:high2low] = timeRepeatL
|
2392
2392
|
return timeRepeatL
|
2393
2393
|
end
|
2394
2394
|
end
|
@@ -2746,9 +2746,9 @@ module HDLRuby::High
|
|
2746
2746
|
def to_low
|
2747
2747
|
# return HDLRuby::Low::Cast.new(self.type.to_low,self.child.to_low)
|
2748
2748
|
castL =HDLRuby::Low::Cast.new(self.type.to_low,self.child.to_low)
|
2749
|
-
# For debugging: set the source high object
|
2750
|
-
castL.properties[:low2high] = self.hdr_id
|
2751
|
-
self.properties[:high2low] = castL
|
2749
|
+
# # For debugging: set the source high object
|
2750
|
+
# castL.properties[:low2high] = self.hdr_id
|
2751
|
+
# self.properties[:high2low] = castL
|
2752
2752
|
return castL
|
2753
2753
|
end
|
2754
2754
|
end
|
@@ -2770,9 +2770,9 @@ module HDLRuby::High
|
|
2770
2770
|
# self.child.to_low)
|
2771
2771
|
unaryL = HDLRuby::Low::Unary.new(self.type.to_low, self.operator,
|
2772
2772
|
self.child.to_low)
|
2773
|
-
# For debugging: set the source high object
|
2774
|
-
unaryL.properties[:low2high] = self.hdr_id
|
2775
|
-
self.properties[:high2low] = unaryL
|
2773
|
+
# # For debugging: set the source high object
|
2774
|
+
# unaryL.properties[:low2high] = self.hdr_id
|
2775
|
+
# self.properties[:high2low] = unaryL
|
2776
2776
|
return unaryL
|
2777
2777
|
end
|
2778
2778
|
end
|
@@ -2795,9 +2795,9 @@ module HDLRuby::High
|
|
2795
2795
|
# self.left.to_low, self.right.to_low)
|
2796
2796
|
binaryL = HDLRuby::Low::Binary.new(self.type.to_low, self.operator,
|
2797
2797
|
self.left.to_low, self.right.to_low)
|
2798
|
-
# For debugging: set the source high object
|
2799
|
-
binaryL.properties[:low2high] = self.hdr_id
|
2800
|
-
self.properties[:high2low] = binaryL
|
2798
|
+
# # For debugging: set the source high object
|
2799
|
+
# binaryL.properties[:low2high] = self.hdr_id
|
2800
|
+
# self.properties[:high2low] = binaryL
|
2801
2801
|
return binaryL
|
2802
2802
|
end
|
2803
2803
|
end
|
@@ -2830,9 +2830,9 @@ module HDLRuby::High
|
|
2830
2830
|
*self.each_choice.map do |choice|
|
2831
2831
|
choice.to_low
|
2832
2832
|
end)
|
2833
|
-
# For debugging: set the source high object
|
2834
|
-
selectL.properties[:low2high] = self.hdr_id
|
2835
|
-
self.properties[:high2low] = selectL
|
2833
|
+
# # For debugging: set the source high object
|
2834
|
+
# selectL.properties[:low2high] = self.hdr_id
|
2835
|
+
# self.properties[:high2low] = selectL
|
2836
2836
|
return selectL
|
2837
2837
|
end
|
2838
2838
|
end
|
@@ -2864,9 +2864,9 @@ module HDLRuby::High
|
|
2864
2864
|
expr.to_low
|
2865
2865
|
end
|
2866
2866
|
)
|
2867
|
-
# For debugging: set the source high object
|
2868
|
-
concatL.properties[:low2high] = self.hdr_id
|
2869
|
-
self.properties[:high2low] = concatL
|
2867
|
+
# # For debugging: set the source high object
|
2868
|
+
# concatL.properties[:low2high] = self.hdr_id
|
2869
|
+
# self.properties[:high2low] = concatL
|
2870
2870
|
return concatL
|
2871
2871
|
end
|
2872
2872
|
end
|
@@ -2908,9 +2908,9 @@ module HDLRuby::High
|
|
2908
2908
|
# Create and return the resulting low-level value
|
2909
2909
|
# return HDLRuby::Low::Value.new(self.type.to_low,self.content)
|
2910
2910
|
valueL = HDLRuby::Low::Value.new(self.type.to_low,self.content)
|
2911
|
-
# For debugging: set the source high object
|
2912
|
-
valueL.properties[:low2high] = self.hdr_id
|
2913
|
-
self.properties[:high2low] = valueL
|
2911
|
+
# # For debugging: set the source high object
|
2912
|
+
# valueL.properties[:low2high] = self.hdr_id
|
2913
|
+
# self.properties[:high2low] = valueL
|
2914
2914
|
return valueL
|
2915
2915
|
end
|
2916
2916
|
|
@@ -3016,9 +3016,9 @@ module HDLRuby::High
|
|
3016
3016
|
# puts "to_low with base=#{@base} @object=#{@object}"
|
3017
3017
|
refNameL = HDLRuby::Low::RefName.new(self.type.to_low,
|
3018
3018
|
@base.to_ref.to_low,@object.name)
|
3019
|
-
# For debugging: set the source high object
|
3020
|
-
refNameL.properties[:low2high] = self.hdr_id
|
3021
|
-
self.properties[:high2low] = refNameL
|
3019
|
+
# # For debugging: set the source high object
|
3020
|
+
# refNameL.properties[:low2high] = self.hdr_id
|
3021
|
+
# self.properties[:high2low] = refNameL
|
3022
3022
|
return refNameL
|
3023
3023
|
end
|
3024
3024
|
|
@@ -3056,9 +3056,9 @@ module HDLRuby::High
|
|
3056
3056
|
ref.to_low
|
3057
3057
|
end
|
3058
3058
|
)
|
3059
|
-
# For debugging: set the source high object
|
3060
|
-
refConcatL.properties[:low2high] = self.hdr_id
|
3061
|
-
self.properties[:high2low] = refConcatL
|
3059
|
+
# # For debugging: set the source high object
|
3060
|
+
# refConcatL.properties[:low2high] = self.hdr_id
|
3061
|
+
# self.properties[:high2low] = refConcatL
|
3062
3062
|
return refConcatL
|
3063
3063
|
end
|
3064
3064
|
end
|
@@ -3080,9 +3080,9 @@ module HDLRuby::High
|
|
3080
3080
|
# self.ref.to_low,self.index.to_low)
|
3081
3081
|
refIndexL = HDLRuby::Low::RefIndex.new(self.type.to_low,
|
3082
3082
|
self.ref.to_low,self.index.to_low)
|
3083
|
-
# For debugging: set the source high object
|
3084
|
-
refIndexL.properties[:low2high] = self.hdr_id
|
3085
|
-
self.properties[:high2low] = refIndexL
|
3083
|
+
# # For debugging: set the source high object
|
3084
|
+
# refIndexL.properties[:low2high] = self.hdr_id
|
3085
|
+
# self.properties[:high2low] = refIndexL
|
3086
3086
|
return refIndexL
|
3087
3087
|
end
|
3088
3088
|
end
|
@@ -3104,9 +3104,9 @@ module HDLRuby::High
|
|
3104
3104
|
# self.ref.to_low,self.range.to_low)
|
3105
3105
|
refRangeL = HDLRuby::Low::RefRange.new(self.type.to_low,
|
3106
3106
|
self.ref.to_low,self.range.to_low)
|
3107
|
-
# For debugging: set the source high object
|
3108
|
-
refRangeL.properties[:low2high] = self.hdr_id
|
3109
|
-
self.properties[:high2low] = refRangeL
|
3107
|
+
# # For debugging: set the source high object
|
3108
|
+
# refRangeL.properties[:low2high] = self.hdr_id
|
3109
|
+
# self.properties[:high2low] = refRangeL
|
3110
3110
|
return refRangeL
|
3111
3111
|
end
|
3112
3112
|
end
|
@@ -3127,9 +3127,9 @@ module HDLRuby::High
|
|
3127
3127
|
# self.ref.to_low,self.name)
|
3128
3128
|
refNameL = HDLRuby::Low::RefName.new(self.type.to_low,
|
3129
3129
|
self.ref.to_low,self.name)
|
3130
|
-
# For debugging: set the source high object
|
3131
|
-
refNameL.properties[:low2high] = self.hdr_id
|
3132
|
-
self.properties[:high2low] = refNameL
|
3130
|
+
# # For debugging: set the source high object
|
3131
|
+
# refNameL.properties[:low2high] = self.hdr_id
|
3132
|
+
# self.properties[:high2low] = refNameL
|
3133
3133
|
return refNameL
|
3134
3134
|
end
|
3135
3135
|
end
|
@@ -3164,9 +3164,9 @@ module HDLRuby::High
|
|
3164
3164
|
def to_low
|
3165
3165
|
# return HDLRuby::Low::RefThis.new
|
3166
3166
|
refThisL = HDLRuby::Low::RefThis.new
|
3167
|
-
# For debugging: set the source high object
|
3168
|
-
refThisL.properties[:low2high] = self.hdr_id
|
3169
|
-
self.properties[:high2low] = refThisL
|
3167
|
+
# # For debugging: set the source high object
|
3168
|
+
# refThisL.properties[:low2high] = self.hdr_id
|
3169
|
+
# self.properties[:high2low] = refThisL
|
3170
3170
|
return refThisL
|
3171
3171
|
end
|
3172
3172
|
end
|
@@ -3237,9 +3237,9 @@ module HDLRuby::High
|
|
3237
3237
|
def to_low
|
3238
3238
|
# return HDLRuby::Low::Event.new(self.type,self.ref.to_low)
|
3239
3239
|
eventL = HDLRuby::Low::Event.new(self.type,self.ref.to_low)
|
3240
|
-
# For debugging: set the source high object
|
3241
|
-
eventL.properties[:low2high] = self.hdr_id
|
3242
|
-
self.properties[:high2low] = eventL
|
3240
|
+
# # For debugging: set the source high object
|
3241
|
+
# eventL.properties[:low2high] = self.hdr_id
|
3242
|
+
# self.properties[:high2low] = eventL
|
3243
3243
|
return eventL
|
3244
3244
|
end
|
3245
3245
|
end
|
@@ -3280,9 +3280,9 @@ module HDLRuby::High
|
|
3280
3280
|
# self.right.to_low)
|
3281
3281
|
transmitL = HDLRuby::Low::Transmit.new(self.left.to_low,
|
3282
3282
|
self.right.to_low)
|
3283
|
-
# For debugging: set the source high object
|
3284
|
-
transmitL.properties[:low2high] = self.hdr_id
|
3285
|
-
self.properties[:high2low] = transmitL
|
3283
|
+
# # For debugging: set the source high object
|
3284
|
+
# transmitL.properties[:low2high] = self.hdr_id
|
3285
|
+
# self.properties[:high2low] = transmitL
|
3286
3286
|
return transmitL
|
3287
3287
|
end
|
3288
3288
|
end
|
@@ -3373,9 +3373,9 @@ module HDLRuby::High
|
|
3373
3373
|
# self.right.to_low)
|
3374
3374
|
connectionL = HDLRuby::Low::Connection.new(self.left.to_low,
|
3375
3375
|
self.right.to_low)
|
3376
|
-
# For debugging: set the source high object
|
3377
|
-
connectionL.properties[:low2high] = self.hdr_id
|
3378
|
-
self.properties[:high2low] = connectionL
|
3376
|
+
# # For debugging: set the source high object
|
3377
|
+
# connectionL.properties[:low2high] = self.hdr_id
|
3378
|
+
# self.properties[:high2low] = connectionL
|
3379
3379
|
return connectionL
|
3380
3380
|
end
|
3381
3381
|
end
|
@@ -3487,9 +3487,9 @@ module HDLRuby::High
|
|
3487
3487
|
def to_low(name = self.name)
|
3488
3488
|
# return HDLRuby::Low::SignalI.new(name,self.type.to_low)
|
3489
3489
|
signalIL = HDLRuby::Low::SignalI.new(name,self.type.to_low)
|
3490
|
-
# For debugging: set the source high object
|
3491
|
-
signalIL.properties[:low2high] = self.hdr_id
|
3492
|
-
self.properties[:high2low] = signalIL
|
3490
|
+
# # For debugging: set the source high object
|
3491
|
+
# signalIL.properties[:low2high] = self.hdr_id
|
3492
|
+
# self.properties[:high2low] = signalIL
|
3493
3493
|
return signalIL
|
3494
3494
|
end
|
3495
3495
|
end
|
@@ -3553,9 +3553,9 @@ module HDLRuby::High
|
|
3553
3553
|
# self.value.to_low)
|
3554
3554
|
signalCL = HDLRuby::Low::SignalC.new(name,self.type.to_low,
|
3555
3555
|
self.value.to_low)
|
3556
|
-
# For debugging: set the source high object
|
3557
|
-
signalCL.properties[:low2high] = self.hdr_id
|
3558
|
-
self.properties[:high2low] = signalCL
|
3556
|
+
# # For debugging: set the source high object
|
3557
|
+
# signalCL.properties[:low2high] = self.hdr_id
|
3558
|
+
# self.properties[:high2low] = signalCL
|
3559
3559
|
return signalCL
|
3560
3560
|
end
|
3561
3561
|
end
|
@@ -3766,9 +3766,9 @@ module HDLRuby::High
|
|
3766
3766
|
def to_low
|
3767
3767
|
# Create the resulting block
|
3768
3768
|
blockL = HDLRuby::Low::Block.new(self.mode)
|
3769
|
-
# For debugging: set the source high object
|
3770
|
-
blockL.properties[:low2high] = self.hdr_id
|
3771
|
-
self.properties[:high2low] = blockL
|
3769
|
+
# # For debugging: set the source high object
|
3770
|
+
# blockL.properties[:low2high] = self.hdr_id
|
3771
|
+
# self.properties[:high2low] = blockL
|
3772
3772
|
# Push the namespace for the low generation.
|
3773
3773
|
High.space_push(@namespace)
|
3774
3774
|
# Pushes on the name stack for converting the internals of
|
@@ -3836,9 +3836,9 @@ module HDLRuby::High
|
|
3836
3836
|
def to_low
|
3837
3837
|
# Create the resulting block
|
3838
3838
|
blockL = HDLRuby::Low::TimeBlock.new(self.mode)
|
3839
|
-
# For debugging: set the source high object
|
3840
|
-
blockL.properties[:low2high] = self.hdr_id
|
3841
|
-
self.properties[:high2low] = blockL
|
3839
|
+
# # For debugging: set the source high object
|
3840
|
+
# blockL.properties[:low2high] = self.hdr_id
|
3841
|
+
# self.properties[:high2low] = blockL
|
3842
3842
|
# Add the inner signals
|
3843
3843
|
self.each_inner { |inner| blockL.add_inner(inner.to_low) }
|
3844
3844
|
# Add the statements
|
@@ -3930,9 +3930,9 @@ module HDLRuby::High
|
|
3930
3930
|
eventLs = self.each_event.map { |event| event.to_low }
|
3931
3931
|
# Create and return the resulting low level behavior.
|
3932
3932
|
behaviorL = HDLRuby::Low::Behavior.new(blockL)
|
3933
|
-
# For debugging: set the source high object
|
3934
|
-
behaviorL.properties[:low2high] = self.hdr_id
|
3935
|
-
self.properties[:high2low] = behaviorL
|
3933
|
+
# # For debugging: set the source high object
|
3934
|
+
# behaviorL.properties[:low2high] = self.hdr_id
|
3935
|
+
# self.properties[:high2low] = behaviorL
|
3936
3936
|
eventLs.each(&behaviorL.method(:add_event))
|
3937
3937
|
return behaviorL
|
3938
3938
|
end
|
@@ -3960,9 +3960,9 @@ module HDLRuby::High
|
|
3960
3960
|
eventLs = self.each_event.map { |event| event.to_low }
|
3961
3961
|
# Create and return the resulting low level behavior.
|
3962
3962
|
timeBehaviorL = HDLRuby::Low::TimeBehavior.new(blockL)
|
3963
|
-
# For debugging: set the source high object
|
3964
|
-
timeBehaviorL.properties[:low2high] = self.hdr_id
|
3965
|
-
self.properties[:high2low] = timeBehaviorL
|
3963
|
+
# # For debugging: set the source high object
|
3964
|
+
# timeBehaviorL.properties[:low2high] = self.hdr_id
|
3965
|
+
# self.properties[:high2low] = timeBehaviorL
|
3966
3966
|
eventLs.each(&timeBehaviorL.method(:add_event))
|
3967
3967
|
return timeBehaviorL
|
3968
3968
|
end
|
@@ -4237,6 +4237,22 @@ module HDLRuby::High
|
|
4237
4237
|
# end
|
4238
4238
|
# end
|
4239
4239
|
|
4240
|
+
# Extends the TrueClass class for computing for conversion to expression.
|
4241
|
+
class ::TrueClass
|
4242
|
+
# Converts to a new high-level expression.
|
4243
|
+
def to_expr
|
4244
|
+
return Value.new(Integer,1)
|
4245
|
+
end
|
4246
|
+
end
|
4247
|
+
|
4248
|
+
# Extends the FalseClass class for computing for conversion to expression.
|
4249
|
+
class ::FalseClass
|
4250
|
+
# Converts to a new high-level expression.
|
4251
|
+
def to_expr
|
4252
|
+
return Value.new(Integer,0)
|
4253
|
+
end
|
4254
|
+
end
|
4255
|
+
|
4240
4256
|
# Extends the Integer class for computing for conversion to expression.
|
4241
4257
|
class ::Integer
|
4242
4258
|
# Converts to a new high-level expression.
|
data/lib/HDLRuby/hruby_low.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require "HDLRuby/hruby_bstr"
|
2
2
|
require "HDLRuby/hruby_error"
|
3
|
-
require "HDLRuby/hruby_decorator"
|
3
|
+
# require "HDLRuby/hruby_decorator"
|
4
4
|
require 'forwardable'
|
5
5
|
|
6
6
|
|
@@ -36,7 +36,7 @@ module HDLRuby::Low
|
|
36
36
|
end
|
37
37
|
|
38
38
|
|
39
|
-
Hdecorator = HDLRuby::Hdecorator
|
39
|
+
# Hdecorator = HDLRuby::Hdecorator
|
40
40
|
|
41
41
|
##
|
42
42
|
# Gives parent definition and access properties to an hardware object.
|
@@ -118,8 +118,8 @@ module HDLRuby::Low
|
|
118
118
|
end
|
119
119
|
end
|
120
120
|
|
121
|
-
# Add decorator capability (modifies intialize to put after).
|
122
|
-
include Hdecorator
|
121
|
+
# # Add decorator capability (modifies intialize to put after).
|
122
|
+
# include Hdecorator
|
123
123
|
|
124
124
|
# Comparison for hash: structural comparison.
|
125
125
|
def eql?(obj)
|
@@ -455,8 +455,8 @@ module HDLRuby::Low
|
|
455
455
|
@behaviors = []
|
456
456
|
end
|
457
457
|
|
458
|
-
# Add decorator capability (modifies intialize to put after).
|
459
|
-
include Hdecorator
|
458
|
+
# # Add decorator capability (modifies intialize to put after).
|
459
|
+
# include Hdecorator
|
460
460
|
|
461
461
|
# Comparison for hash: structural comparison.
|
462
462
|
def eql?(obj)
|
@@ -1221,8 +1221,8 @@ module HDLRuby::Low
|
|
1221
1221
|
@name = name.to_sym
|
1222
1222
|
end
|
1223
1223
|
|
1224
|
-
# Add decorator capability (modifies intialize to put after).
|
1225
|
-
include Hdecorator
|
1224
|
+
# # Add decorator capability (modifies intialize to put after).
|
1225
|
+
# include Hdecorator
|
1226
1226
|
|
1227
1227
|
# Comparison for hash: structural comparison.
|
1228
1228
|
def eql?(obj)
|
@@ -2124,8 +2124,8 @@ module HDLRuby::Low
|
|
2124
2124
|
# @block = block
|
2125
2125
|
end
|
2126
2126
|
|
2127
|
-
# Add decorator capability (modifies intialize to put after).
|
2128
|
-
include Hdecorator
|
2127
|
+
# # Add decorator capability (modifies intialize to put after).
|
2128
|
+
# include Hdecorator
|
2129
2129
|
|
2130
2130
|
# Sets the block if not already set.
|
2131
2131
|
def block=(block)
|
@@ -2348,8 +2348,8 @@ module HDLRuby::Low
|
|
2348
2348
|
ref.parent = self
|
2349
2349
|
end
|
2350
2350
|
|
2351
|
-
# Add decorator capability (modifies intialize to put after).
|
2352
|
-
include Hdecorator
|
2351
|
+
# # Add decorator capability (modifies intialize to put after).
|
2352
|
+
# include Hdecorator
|
2353
2353
|
|
2354
2354
|
# Comparison for hash: structural comparison.
|
2355
2355
|
def eql?(obj)
|
@@ -2432,8 +2432,8 @@ module HDLRuby::Low
|
|
2432
2432
|
false
|
2433
2433
|
end
|
2434
2434
|
|
2435
|
-
# Add decorator capability (modifies intialize to put after).
|
2436
|
-
include Hdecorator
|
2435
|
+
# # Add decorator capability (modifies intialize to put after).
|
2436
|
+
# include Hdecorator
|
2437
2437
|
|
2438
2438
|
# Iterates over each object deeply.
|
2439
2439
|
#
|
@@ -2517,8 +2517,8 @@ module HDLRuby::Low
|
|
2517
2517
|
@systemTs = [ @systemT ]
|
2518
2518
|
end
|
2519
2519
|
|
2520
|
-
# Add decorator capability (modifies intialize to put after).
|
2521
|
-
include Hdecorator
|
2520
|
+
# # Add decorator capability (modifies intialize to put after).
|
2521
|
+
# include Hdecorator
|
2522
2522
|
|
2523
2523
|
# Iterates over each object deeply.
|
2524
2524
|
#
|
@@ -2649,8 +2649,8 @@ module HDLRuby::Low
|
|
2649
2649
|
lumps.each { |lump| self.add_lump(lump) }
|
2650
2650
|
end
|
2651
2651
|
|
2652
|
-
# Add decorator capability (modifies intialize to put after).
|
2653
|
-
include Hdecorator
|
2652
|
+
# # Add decorator capability (modifies intialize to put after).
|
2653
|
+
# include Hdecorator
|
2654
2654
|
|
2655
2655
|
# Adds a +lump+ of code, it is ment to become an expression or
|
2656
2656
|
# some text.
|
@@ -2698,8 +2698,8 @@ module HDLRuby::Low
|
|
2698
2698
|
@chunks = HashName.new
|
2699
2699
|
end
|
2700
2700
|
|
2701
|
-
# Add decorator capability (modifies intialize to put after).
|
2702
|
-
include Hdecorator
|
2701
|
+
# # Add decorator capability (modifies intialize to put after).
|
2702
|
+
# include Hdecorator
|
2703
2703
|
|
2704
2704
|
# Adds a +chunk+ to the sensitivity list.
|
2705
2705
|
def add_chunk(chunk)
|
@@ -2810,7 +2810,7 @@ module HDLRuby::Low
|
|
2810
2810
|
# NOTE: this is an abstract class which is not to be used directly.
|
2811
2811
|
class Statement
|
2812
2812
|
include Hparent
|
2813
|
-
include Hdecorator
|
2813
|
+
# include Hdecorator
|
2814
2814
|
|
2815
2815
|
# Clones (deeply)
|
2816
2816
|
def clone
|
@@ -3298,8 +3298,8 @@ module HDLRuby::Low
|
|
3298
3298
|
match.parent = statement.parent = self
|
3299
3299
|
end
|
3300
3300
|
|
3301
|
-
# Add decorator capability (modifies intialize to put after).
|
3302
|
-
include Hdecorator
|
3301
|
+
# # Add decorator capability (modifies intialize to put after).
|
3302
|
+
# include Hdecorator
|
3303
3303
|
|
3304
3304
|
# Iterates over each object deeply.
|
3305
3305
|
#
|
@@ -3623,8 +3623,8 @@ module HDLRuby::Low
|
|
3623
3623
|
@unit = unit.to_sym
|
3624
3624
|
end
|
3625
3625
|
|
3626
|
-
# Add decorator capability (modifies intialize to put after).
|
3627
|
-
include Hdecorator
|
3626
|
+
# # Add decorator capability (modifies intialize to put after).
|
3627
|
+
# include Hdecorator
|
3628
3628
|
|
3629
3629
|
# Iterates over each object deeply.
|
3630
3630
|
#
|
@@ -4333,8 +4333,8 @@ module HDLRuby::Low
|
|
4333
4333
|
end
|
4334
4334
|
end
|
4335
4335
|
|
4336
|
-
# Add decorator capability (modifies intialize to put after).
|
4337
|
-
include Hdecorator
|
4336
|
+
# # Add decorator capability (modifies intialize to put after).
|
4337
|
+
# include Hdecorator
|
4338
4338
|
|
4339
4339
|
# Comparison for hash: structural comparison.
|
4340
4340
|
def eql?(obj)
|
data/lib/HDLRuby/hruby_low2c.rb
CHANGED
@@ -1570,7 +1570,9 @@ module HDLRuby::Low
|
|
1570
1570
|
# puts "content=#{self.content} str=#{str}"
|
1571
1571
|
end
|
1572
1572
|
# Is it a fully defined number?
|
1573
|
-
|
1573
|
+
# NOTE: bignum values are not supported by the simulation engine
|
1574
|
+
# yet, therefore numeric values are limited to 64 max.
|
1575
|
+
if str =~ /^[01]+$/ && str.length <= 64 then
|
1574
1576
|
# Yes, generate a numeral value.
|
1575
1577
|
res << " " * (level+1)*3
|
1576
1578
|
res << "static unsigned long long data[] = { "
|