HDLRuby 2.4.28 → 2.4.29
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/hdrcc.rb +3 -0
- data/lib/HDLRuby/hruby_low2c.rb +67 -0
- data/lib/HDLRuby/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a583dff628b7090369ac26e9136e3c911204ea3078135fecfd249e1cd4521d2b
|
|
4
|
+
data.tar.gz: 1ac0f7881ab17a0ac1bf69cccc2028ae129eb5ac99640440ddb05fdb18605fe1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c6883993bfcd2f3956710c1a88550faa6bc892b579a1741c85f43c19a44baafa3429d0735cbbdc7cacba7f51cbf40d92bfa3b0b74ba5c6fe014779935b82f6b5
|
|
7
|
+
data.tar.gz: e94a1ea16d576f5b1424ac2a3274ff43d5ed8a95471ad6ee4c86d45ec7d956c375f64c8011f8bdf7c7c85d2f02c882f869ca3d4e81f986831263a633f60e14e8
|
data/lib/HDLRuby/hdrcc.rb
CHANGED
|
@@ -461,6 +461,9 @@ elsif $options[:clang] then
|
|
|
461
461
|
# top_system = $top_system
|
|
462
462
|
# Preprocess the HW description for valid C generation.
|
|
463
463
|
$top_system.each_systemT_deep do |systemT|
|
|
464
|
+
# Coverts the par blocks in seq blocks to seq blocks to match
|
|
465
|
+
# the simulation engine.
|
|
466
|
+
systemT.par_in_seq2seq!
|
|
464
467
|
# Converts the connections to behaviors.
|
|
465
468
|
systemT.connections_to_behaviors!
|
|
466
469
|
# Break the RefConcat.
|
data/lib/HDLRuby/hruby_low2c.rb
CHANGED
|
@@ -178,6 +178,7 @@ module HDLRuby::Low
|
|
|
178
178
|
end
|
|
179
179
|
end
|
|
180
180
|
self.scope.each_block_deep do |block|
|
|
181
|
+
# puts "treating for block=#{Low2C.obj_name(block)} with=#{block.each_inner.count} inners"
|
|
181
182
|
block.each_inner do |signal|
|
|
182
183
|
# res << signal.value.to_c_make(level) if signal.value
|
|
183
184
|
signal.value.each_node_deep do |node|
|
|
@@ -837,6 +838,7 @@ module HDLRuby::Low
|
|
|
837
838
|
## Generates the content of the h file.
|
|
838
839
|
def to_ch
|
|
839
840
|
res = ""
|
|
841
|
+
# puts "to_ch for SignalI: #{self.to_c_signal()}"
|
|
840
842
|
# Declare the global variable holding the signal.
|
|
841
843
|
res << "extern SignalI #{self.to_c_signal()};\n\n"
|
|
842
844
|
|
|
@@ -1050,6 +1052,12 @@ module HDLRuby::Low
|
|
|
1050
1052
|
raise AnyError, "Internal error: to_c should be implemented in class :#{self.class}"
|
|
1051
1053
|
end
|
|
1052
1054
|
|
|
1055
|
+
## Generates the content of the h file.
|
|
1056
|
+
def to_ch
|
|
1057
|
+
# By default nothing to generate.
|
|
1058
|
+
return ""
|
|
1059
|
+
end
|
|
1060
|
+
|
|
1053
1061
|
# Adds the c code of the blocks to +res+ at +level+
|
|
1054
1062
|
def add_blocks_code(res,level)
|
|
1055
1063
|
if self.respond_to?(:each_node) then
|
|
@@ -1060,6 +1068,17 @@ module HDLRuby::Low
|
|
|
1060
1068
|
end
|
|
1061
1069
|
end
|
|
1062
1070
|
end
|
|
1071
|
+
|
|
1072
|
+
# Adds the creation of the blocks to +res+ at +level+.
|
|
1073
|
+
def add_make_block(res,level)
|
|
1074
|
+
if self.respond_to?(:each_node) then
|
|
1075
|
+
self.each_node do |node|
|
|
1076
|
+
if node.respond_to?(:add_blocks_code) then
|
|
1077
|
+
node.add_make_block(res,level)
|
|
1078
|
+
end
|
|
1079
|
+
end
|
|
1080
|
+
end
|
|
1081
|
+
end
|
|
1063
1082
|
end
|
|
1064
1083
|
|
|
1065
1084
|
## Extends the Transmit class with generation of HDLRuby::High text.
|
|
@@ -1143,6 +1162,18 @@ module HDLRuby::Low
|
|
|
1143
1162
|
# Return the result.
|
|
1144
1163
|
return res
|
|
1145
1164
|
end
|
|
1165
|
+
|
|
1166
|
+
## Generates the content of the h file.
|
|
1167
|
+
def to_ch
|
|
1168
|
+
res = ""
|
|
1169
|
+
# Recurse on the sub statements.
|
|
1170
|
+
res << self.yes.to_ch
|
|
1171
|
+
self.each_noif do |cond,stmnt|
|
|
1172
|
+
res << stmnt.to_ch
|
|
1173
|
+
end
|
|
1174
|
+
res << self.no.to_ch if self.no
|
|
1175
|
+
return res
|
|
1176
|
+
end
|
|
1146
1177
|
end
|
|
1147
1178
|
|
|
1148
1179
|
## Extends the When class with generation of HDLRuby::High text.
|
|
@@ -1164,10 +1195,20 @@ module HDLRuby::Low
|
|
|
1164
1195
|
return res
|
|
1165
1196
|
end
|
|
1166
1197
|
|
|
1198
|
+
## Generates the content of the h file.
|
|
1199
|
+
def to_ch
|
|
1200
|
+
return self.statement.to_ch
|
|
1201
|
+
end
|
|
1202
|
+
|
|
1167
1203
|
# Adds the c code of the blocks to +res+ at +level+
|
|
1168
1204
|
def add_blocks_code(res,level)
|
|
1169
1205
|
self.statement.add_blocks_code(res,level)
|
|
1170
1206
|
end
|
|
1207
|
+
|
|
1208
|
+
# Adds the creation of the blocks to +res+ at +level+.
|
|
1209
|
+
def add_make_block(res,level)
|
|
1210
|
+
self.statement.add_make_block(res,level)
|
|
1211
|
+
end
|
|
1171
1212
|
end
|
|
1172
1213
|
|
|
1173
1214
|
## Extends the Case class with generation of HDLRuby::High text.
|
|
@@ -1215,6 +1256,16 @@ module HDLRuby::Low
|
|
|
1215
1256
|
# Return the resulting string.
|
|
1216
1257
|
return res
|
|
1217
1258
|
end
|
|
1259
|
+
|
|
1260
|
+
## Generates the content of the h file.
|
|
1261
|
+
def to_ch
|
|
1262
|
+
res = ""
|
|
1263
|
+
# Recurse on the whens.
|
|
1264
|
+
self.each_when {|w| res << w.to_ch }
|
|
1265
|
+
# Recurse on the default statement.
|
|
1266
|
+
res << self.default.to_ch if self.default
|
|
1267
|
+
return res
|
|
1268
|
+
end
|
|
1218
1269
|
end
|
|
1219
1270
|
|
|
1220
1271
|
|
|
@@ -1272,6 +1323,12 @@ module HDLRuby::Low
|
|
|
1272
1323
|
res << self.to_c_code(level)
|
|
1273
1324
|
end
|
|
1274
1325
|
|
|
1326
|
+
# Adds the creation of the blocks to +res+ at +level+.
|
|
1327
|
+
def add_make_block(res,level)
|
|
1328
|
+
res << " " * level*3
|
|
1329
|
+
res << "#{Low2C.make_name(self)}();\n"
|
|
1330
|
+
end
|
|
1331
|
+
|
|
1275
1332
|
# Generates the C text of the equivalent HDLRuby::High code.
|
|
1276
1333
|
# +level+ is the hierachical level of the object.
|
|
1277
1334
|
def to_c_code(level = 0)
|
|
@@ -1351,6 +1408,11 @@ module HDLRuby::Low
|
|
|
1351
1408
|
res << " " * (level+1)*3
|
|
1352
1409
|
res << "block->function = &#{Low2C.code_name(self)};\n"
|
|
1353
1410
|
|
|
1411
|
+
# Generate creation of the sub blocks.
|
|
1412
|
+
self.each_statement do |stmnt|
|
|
1413
|
+
stmnt.add_make_block(res,level+1)
|
|
1414
|
+
end
|
|
1415
|
+
|
|
1354
1416
|
# Generate the Returns of the result.
|
|
1355
1417
|
res << "\n"
|
|
1356
1418
|
res << " " * (level+1)*3
|
|
@@ -1373,6 +1435,7 @@ module HDLRuby::Low
|
|
|
1373
1435
|
|
|
1374
1436
|
## Generates the content of the h file.
|
|
1375
1437
|
def to_ch
|
|
1438
|
+
# puts "to_ch for block=#{Low2C.obj_name(self)} with=#{self.each_inner.count} inners"
|
|
1376
1439
|
res = ""
|
|
1377
1440
|
# Declare the global variable holding the block.
|
|
1378
1441
|
res << "extern Block #{Low2C.obj_name(self)};\n\n"
|
|
@@ -1383,6 +1446,10 @@ module HDLRuby::Low
|
|
|
1383
1446
|
# Generate the accesses to the ports.
|
|
1384
1447
|
self.each_inner { |inner| res << inner.to_ch }
|
|
1385
1448
|
|
|
1449
|
+
# Recurse on the statements.
|
|
1450
|
+
self.each_statement { |stmnt| res << stmnt.to_ch }
|
|
1451
|
+
|
|
1452
|
+
|
|
1386
1453
|
return res
|
|
1387
1454
|
end
|
|
1388
1455
|
end
|
data/lib/HDLRuby/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: HDLRuby
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.4.
|
|
4
|
+
version: 2.4.29
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Lovic Gauthier
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2021-
|
|
11
|
+
date: 2021-02-06 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|