HDLRuby 2.6.10 → 2.6.19

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 219077a50d543c3ecdb964a7bd7571f5c0db02ece82a0efb7670e5531acf437d
4
- data.tar.gz: 2bbff4911a6c7ff9ec3c33287b61d4a1b7efd5c7dc789975d89e53b3f42638c1
3
+ metadata.gz: 752424361455f2bd949a8f90c9802337f3ce1d853ebff6bfa44bbe25ebeda369
4
+ data.tar.gz: f9c2dd84c0c875c423a94211948beaea44b54bfe234c01d6f35716b7df26053c
5
5
  SHA512:
6
- metadata.gz: c95ef3fa229c2e9283cd78f86c9f6fa4ad4f80d0e3f6153ee444e2c75d754dc7098a5547ce623f8aa85b1860e24522f8404a6e654849d0250897acca26134f9a
7
- data.tar.gz: '023502192d5189e2a85a4d69d3f63bb81d58d38496812be03b8c7c5c92791309412e21cbb4d68aa79f03372d296635cafe55264e5483d12d8eef56236b188aeb'
6
+ metadata.gz: cc71caee7a2435e579b533b4cbba22c6bc9ca9e8e75be4e57d4a629b7a467ac28a2a302f6d53cf7552a1c1f115e17f5ec7b7648eadc482ab62bc2fdff1319cc6
7
+ data.tar.gz: 4053a2050e82212db5901c7cb4756b21bca3465ec9ee4d08cd2875d8b57e5c53cd05df0405e2f5b249ec96b28271f514c8707fbb43b8e69db901ff9713a9b1f4
data/lib/HDLRuby/hdrcc.rb CHANGED
@@ -110,7 +110,7 @@ module HDLRuby
110
110
  else
111
111
  # A standard file is found, skip it since it does not
112
112
  # need to be read.
113
- # puts "Standard files: #{founds}"
113
+ # show? "Standard files: #{founds}"
114
114
  return false
115
115
  end
116
116
  end
@@ -134,7 +134,7 @@ module HDLRuby
134
134
  file = @top_file_name
135
135
  end
136
136
  end
137
- # puts "read_all with file=#{file}"
137
+ # show? "read_all with file=#{file}"
138
138
  # Read the file
139
139
  # read(file)
140
140
  unless read(file) then
@@ -158,7 +158,7 @@ module HDLRuby
158
158
 
159
159
  # Displays the syntax tree of all the files.
160
160
  def show_all(outfile = $stdout)
161
- # puts "@checks.size=#{@checks.size}"
161
+ # show? "@checks.size=#{@checks.size}"
162
162
  @checks.each { |check| check.show(outfile) }
163
163
  end
164
164
 
@@ -166,7 +166,7 @@ module HDLRuby
166
166
  def get_top
167
167
  # Get all the systems.
168
168
  systems = @checks.reduce([]) {|ar,check| ar + check.get_all_systems}
169
- # puts "First systems=#{systems}"
169
+ # show? "First systems=#{systems}"
170
170
  # Remove the systems that are instantiated or included
171
171
  # (they cannot be tops)
172
172
  @checks.each do |check|
@@ -183,7 +183,7 @@ module HDLRuby
183
183
  systems -= check.get_inherit_systems(inherit)
184
184
  end
185
185
  end
186
- # puts "Now systems=#{systems}"
186
+ # show? "Now systems=#{systems}"
187
187
  # Return the first top of the list.
188
188
  return systems[-1]
189
189
  end
@@ -195,7 +195,7 @@ module HDLRuby
195
195
  if @top_system == "" then
196
196
  # No, look for it.
197
197
  @top_system = get_top
198
- # puts "@top_system=#{@top_system}"
198
+ # show? "@top_system=#{@top_system}"
199
199
  unless @top_system then
200
200
  # Not found? Error.
201
201
  # Maybe it is a parse error, look for it.
@@ -238,7 +238,7 @@ module HDLRuby
238
238
  # Dump to a file.
239
239
  if chunk.name != :sim then
240
240
  # The chunk is to be dumbed to a file.
241
- # puts "Outputing chunk:#{HDLRuby::Low::Low2C.obj_name(chunk)}"
241
+ # show? "Outputing chunk:#{HDLRuby::Low::Low2C.obj_name(chunk)}"
242
242
  outfile = File.open(path + "/" +
243
243
  HDLRuby::Low::Low2C.obj_name(chunk) + "." +
244
244
  chunk.name.to_s,"w")
@@ -351,6 +351,12 @@ $optparse = OptionParser.new do |opts|
351
351
  opts.on("-D", "--debug","Set the HDLRuby debug mode") do |d|
352
352
  $options[:debug] = d
353
353
  end
354
+ opts.on("--verbose","Set verbose mode.") do |d|
355
+ HDLRuby.verbosity = 2
356
+ end
357
+ opts.on("--volubile","Set extreme verbose mode.") do |d|
358
+ HDLRuby.verbosity = 3
359
+ end
354
360
  opts.on("-T","--test t0,t1,t2","Compile the unit tests named t0,t1,...") do |t|
355
361
  $options[:test] = t
356
362
  end
@@ -396,7 +402,7 @@ $optparse = OptionParser.new do |opts|
396
402
  end
397
403
  $optparse.parse!
398
404
 
399
- # puts "options=#{$options}"
405
+ # show? "options=#{$options}"
400
406
 
401
407
  # Check the compatibility of the options
402
408
  if $options.count {|op| [:yaml,:hdr,:verilog,:vhdl].include?(op) } > 1 then
@@ -436,7 +442,7 @@ if ($options[:test] || $options[:testall]) then
436
442
  $test_file.write("require 'std/hruby_unit.rb'\nrequire_relative '#{$input}'\n\n" +
437
443
  "HDLRuby::Unit.test(:\"#{$top}\"#{tests})\n")
438
444
  # $test_file.rewind
439
- # puts $test_file.read
445
+ # show? $test_file.read
440
446
  # exit
441
447
  $test_file.rewind
442
448
  # It is the new input file.
@@ -491,24 +497,28 @@ end
491
497
 
492
498
  # Generate the result.
493
499
  # Get the top systemT.
500
+ HDLRuby.show Time.now
494
501
  $top_system = $top_instance.to_low.systemT
495
-
496
-
497
- # Apply the pre drivers if any.
498
- Hdecorator.each_with_property(:pre_driver) do |obj, value|
499
- unless value.is_a?(Array) && value.size == 2 then
500
- raise "pre_driver requires a driver file name command name."
501
- end
502
- # Load the driver.
503
- require_relative(value[0].to_s)
504
- # Ensure obj is the low version.
505
- if obj.properties.key?(:high2low) then
506
- # obj is high, get the corresponding low.
507
- obj = obj.properties[:high2low][0]
508
- end
509
- # Execute it.
510
- send(value[1].to_sym,obj,*value[2..-1])
511
- end
502
+ $top_intance = nil # Free as much memory as possible.
503
+ HDLRuby.show "##### Top system built #####"
504
+ HDLRuby.show Time.now
505
+
506
+
507
+ # # Apply the pre drivers if any.
508
+ # Hdecorator.each_with_property(:pre_driver) do |obj, value|
509
+ # unless value.is_a?(Array) && value.size == 2 then
510
+ # raise "pre_driver requires a driver file name command name."
511
+ # end
512
+ # # Load the driver.
513
+ # require_relative(value[0].to_s)
514
+ # # Ensure obj is the low version.
515
+ # if obj.properties.key?(:high2low) then
516
+ # # obj is high, get the corresponding low.
517
+ # obj = obj.properties[:high2low][0]
518
+ # end
519
+ # # Execute it.
520
+ # send(value[1].to_sym,obj,*value[2..-1])
521
+ # end
512
522
 
513
523
 
514
524
  # Gather the non-HDLRuby code.
@@ -558,15 +568,23 @@ elsif $options[:clang] then
558
568
  # top_system = $top_system
559
569
  # Preprocess the HW description for valid C generation.
560
570
  $top_system.each_systemT_deep do |systemT|
571
+ HDLRuby.show "seq2seq step..."
561
572
  # Coverts the par blocks in seq blocks to seq blocks to match
562
573
  # the simulation engine.
563
574
  systemT.par_in_seq2seq!
575
+ HDLRuby.show Time.now
576
+ HDLRuby.show "connections_to_behaviors step..."
564
577
  # Converts the connections to behaviors.
565
578
  systemT.connections_to_behaviors!
579
+ HDLRuby.show Time.now
566
580
  # Break the RefConcat.
581
+ HDLRuby.show "concat_assigns step..."
567
582
  systemT.break_concat_assigns!
583
+ HDLRuby.show Time.now
568
584
  # Explicits the types.
585
+ HDLRuby.show "explicit_types step..."
569
586
  systemT.explicit_types!
587
+ HDLRuby.show Time.now
570
588
  end
571
589
  # Generate the C.
572
590
  if $options[:multiple] then
@@ -637,7 +655,7 @@ elsif $options[:clang] then
637
655
  name = $output + "/" +
638
656
  HDLRuby::Low::Low2C.c_name(systemT.name) +
639
657
  ".c"
640
- # puts "for systemT=#{systemT.name} generating: #{name}"
658
+ # show? "for systemT=#{systemT.name} generating: #{name}"
641
659
  # Open the file for current systemT
642
660
  outfile = File.open(name,"w")
643
661
  # Generate the C code in to.
@@ -691,14 +709,26 @@ elsif $options[:verilog] then
691
709
  # top_system = $top_system
692
710
  # Make description compatible with verilog generation.
693
711
  $top_system.each_systemT_deep do |systemT|
712
+ HDLRuby.show "casts_without_expression! step..."
694
713
  systemT.casts_without_expression!
714
+ HDLRuby.show Time.now
715
+ HDLRuby.show "to_upper_space! step..."
695
716
  systemT.to_upper_space!
717
+ HDLRuby.show Time.now
718
+ HDLRuby.show "to_global_space! step..."
696
719
  systemT.to_global_systemTs!
720
+ HDLRuby.show Time.now
697
721
  # systemT.break_types!
698
722
  # systemT.expand_types!
723
+ HDLRuby.show "par_in_seq2seq! step..."
699
724
  systemT.par_in_seq2seq!
725
+ HDLRuby.show Time.now
726
+ HDLRuby.show "initial_concat_to_timed! step..."
700
727
  systemT.initial_concat_to_timed!
728
+ HDLRuby.show Time.now
729
+ HDLRuby.show "with_port! step..."
701
730
  systemT.with_port!
731
+ HDLRuby.show Time.now
702
732
  end
703
733
  # # Verilog generation
704
734
  # $output << top_system.to_verilog
@@ -788,13 +818,13 @@ elsif $options[:vhdl] then
788
818
  end
789
819
  end
790
820
 
791
- # Apply the post drivers if any.
792
- Hdecorator.each_with_property(:post_driver) do |obj, value|
793
- # Load the driver.
794
- require_relative(value[0].to_s)
795
- # Execute it.
796
- send(value[1].to_sym,obj,$output)
797
- end
821
+ # # Apply the post drivers if any.
822
+ # Hdecorator.each_with_property(:post_driver) do |obj, value|
823
+ # # Load the driver.
824
+ # require_relative(value[0].to_s)
825
+ # # Execute it.
826
+ # send(value[1].to_sym,obj,$output)
827
+ # end
798
828
 
799
829
  # Dump the properties
800
830
  if $options[:dump] then
@@ -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
@@ -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)
@@ -165,6 +165,30 @@ module HDLRuby::Low
165
165
  return false
166
166
  end
167
167
 
168
+ ## Gets the systemI the reference comes from if any.
169
+ def get_systemI
170
+ # Look for the owner from the name hierarchy.
171
+ if self.ref.is_a?(RefName) then
172
+ # Look in the parent hierachy for the sub reference name.
173
+ parent = self.parent
174
+ # puts "self.ref.name=#{self.ref.name}"
175
+ while parent
176
+ # puts "parent=#{parent}"
177
+ if parent.respond_to?(:get_by_name) then
178
+ found = parent.get_by_name(self.ref.name)
179
+ # puts "found is a :#{found.class}"
180
+ return found if found.is_a?(SystemI)
181
+ end
182
+ parent = parent.parent
183
+ end
184
+ # Not found, look further in the reference hierarchy.
185
+ return self.ref.get_systemI
186
+ end
187
+ # Not from a systemI.
188
+ # puts "Not from systemI for #{self.name}"
189
+ return nil
190
+ end
191
+
168
192
 
169
193
  ## Resolves the name of the reference and return the
170
194
  # corresponding object.
@@ -44,8 +44,10 @@ module HDLRuby::Low
44
44
  def to_global_systemTs!
45
45
  # Force a name if not.
46
46
  self.force_name!
47
+ # puts "to_global_systemTs! for #{self.name}"
47
48
  # For each local systemT
48
49
  self.scope.each_systemT.to_a.each do |systemT|
50
+ # puts "Processing system: #{systemT}"
49
51
  # Rename it for globalization.
50
52
  former = systemT.name
51
53
  self.extend_name!(systemT)
@@ -211,6 +213,7 @@ module HDLRuby::Low
211
213
  # Replaces recursively +former+ name by +nname+ until it is redeclared
212
214
  # in the internals.
213
215
  def replace_names_subs!(former,nname)
216
+ # puts "replace_names_subs! for #{self} with former=#{former} and nname=#{nname}"
214
217
  self.each_type do |type|
215
218
  type.replace_names!(former,nname)
216
219
  end
@@ -416,8 +419,9 @@ module HDLRuby::Low
416
419
  if self.name == former then
417
420
  self.set_name!(nname)
418
421
  end
419
- # Recurse on the system type.
420
- self.systemT.replace_names!(former,nname)
422
+ # Not needed since treated through scope and systemT.
423
+ # # Recurse on the system type.
424
+ # self.systemT.replace_names!(former,nname)
421
425
  end
422
426
  end
423
427
 
@@ -50,4 +50,28 @@ module HDLRuby
50
50
 
51
51
  end
52
52
 
53
+
54
+ # Display some messages depending on the verbosity mode.
55
+ @@verbosity = 1 # The verbosity level: default 1, only critical messages.
56
+
57
+ # Sets the verbosity.
58
+ def self.verbosity=(val)
59
+ @@verbosity = val.to_i
60
+ end
61
+
62
+ # Display a critical message.
63
+ def self.show!(*args)
64
+ puts(*args) if @@verbosity > 0
65
+ end
66
+
67
+ # Display a common message.
68
+ def self.show(*args)
69
+ puts(*args) if @@verbosity > 1
70
+ end
71
+
72
+ # Display a minor message.
73
+ def self.show?(*args)
74
+ puts(*args) if @@verbosity > 2
75
+ end
76
+
53
77
  end
@@ -134,7 +134,7 @@ module HDLRuby::Low
134
134
  if self.name && !self.name.empty? then
135
135
  vname = name_to_verilog(self.name)
136
136
  code << " : #{vname}"
137
- self.properties[:verilog_name] = vname
137
+ # self.properties[:verilog_name] = vname
138
138
  end
139
139
  code << "\n" if block.each_inner.any?
140
140
  # Declaration of "inner" part within "always".
@@ -1371,7 +1371,7 @@ module HDLRuby::Low
1371
1371
  # Converts the system to Verilog code using +renamer+ for producing Verilog-compatible names.
1372
1372
  def to_verilog
1373
1373
  vname = name_to_verilog(self.name)
1374
- self.properties[:verilog_name] = vname
1374
+ # self.properties[:verilog_name] = vname
1375
1375
  return "#{vname}"
1376
1376
  end
1377
1377
 
@@ -1677,7 +1677,7 @@ module HDLRuby::Low
1677
1677
  def to_verilog
1678
1678
  # Convert unusable characters and return them.
1679
1679
  vname = name_to_verilog(self.name)
1680
- self.properties[:verilog_name] = vname
1680
+ # self.properties[:verilog_name] = vname
1681
1681
  return "#{vname}"
1682
1682
  end
1683
1683
  end
@@ -1842,7 +1842,7 @@ module HDLRuby::Low
1842
1842
  code = "`timescale 1ps/1ps\n\n"
1843
1843
 
1844
1844
  vname = name_to_verilog(self.name)
1845
- self.properties[:verilog_name] = vname
1845
+ # self.properties[:verilog_name] = vname
1846
1846
  # Output the module name.
1847
1847
  code << "module #{vname}("
1848
1848
 
@@ -2007,7 +2007,7 @@ module HDLRuby::Low
2007
2007
  systemT = systemI.systemT
2008
2008
  code << name_to_verilog(systemT.name) << " "
2009
2009
  vname = name_to_verilog(systemI.name)
2010
- systemI.properties[:verilog_name] = vname
2010
+ # systemI.properties[:verilog_name] = vname
2011
2011
  code << vname << "("
2012
2012
  # Its ports connections
2013
2013
  # Inputs
@@ -6,63 +6,35 @@ module HDLRuby::Verilog
6
6
  # This is sample.
7
7
  # n = "abc_ABC_いろは"
8
8
  # puts n
9
- # name = n.split("")
9
+ # name = n.split("")
10
+
11
+ @@hdr2verilog = {}
10
12
 
11
13
  # Since it is possible to use $ and numbers other than the beginning of the character string, it is divided.
12
14
  def name_to_verilog(name)
13
- # ref = "" # For storing the converted character.
14
- # name = name.to_s # Ensure name is a string
15
- #
16
- # if (name[0] =~ /[a-zA-Z]/) then
17
- # ref << name[0]
18
- # # _ To convert it to __.
19
- # elsif (name[0] == "_") then
20
- # ref << "__"
21
- # # If it does not satisfy the above, it is another character.
22
- # # In that case, convert it to UTF-8 and convert it to a usable character string.
23
- # else
24
- # l = name[0].bytes.map{|v| v.to_s(16)}.join # Conversion to UTF-8 hexadecimal number.
25
-
26
- # ref << "_" + l.rjust(6,"0") # Add an underscore indicating conversion.
27
- # # The remainder of 6 digits is filled with 0.
28
- # end
29
- #
30
- # name[1..-1].each_char do |c|
31
- # # Confirmation of characters in array.
32
- # # If it is a-zA-Z 0 - 9, it is added to ref as it is.
33
- # if (c =~ /[a-zA-Z0-9]|\$/) then
34
- # ref << c
35
- # # _ To convert it to __.
36
- # elsif (c == "_") then
37
- # ref << "__"
38
- # # If it does not satisfy the above, it is another character.
39
- # # In that case, convert it to UTF-8 and convert it to a usable character string.
40
- # else
41
- # l = c.bytes.map{|v| v.to_s(16)}.join # Conversion to UTF-8 hexadecimal number.
42
- #
43
- # ref << "_" + l.rjust(6,"0") # Add an underscore indicating conversion.
44
- # # The remainder of 6 digits is filled with 0.
45
- # end
46
- # end
47
- # return ref
48
-
49
-
15
+ # name = name.to_s
16
+ # # Convert special characters.
17
+ # name = name.each_char.map do |c|
18
+ # if c=~ /[a-z0-9]/ then
19
+ # c
20
+ # elsif c == "_" then
21
+ # "__"
22
+ # else
23
+ # "_" + c.ord.to_s
24
+ # end
25
+ # end.join
26
+ # # First character: only letter is possible.
27
+ # unless name[0] =~ /[a-z_]/ then
28
+ # name = "_" + name
29
+ # end
30
+ # return name
50
31
  name = name.to_s
51
- # Convert special characters.
52
- name = name.each_char.map do |c|
53
- if c=~ /[a-z0-9]/ then
54
- c
55
- elsif c == "_" then
56
- "__"
57
- else
58
- "_" + c.ord.to_s
59
- end
60
- end.join
61
- # First character: only letter is possible.
62
- unless name[0] =~ /[a-z_]/ then
63
- name = "_" + name
32
+ vname = @@hdr2verilog[name]
33
+ unless vname then
34
+ vname = "_v#{@@hdr2verilog.size}_#{name.split(/[^a-zA-Z_0-9]/)[-1]}"
35
+ @@hdr2verilog[name] = vname
64
36
  end
65
- return name
37
+ return vname
66
38
  end
67
39
 
68
40
  #puts ref
@@ -107,13 +107,15 @@ module HDLRuby::High::Std
107
107
  end
108
108
 
109
109
  # Make the interpolation.
110
- diff <= (next_data-base).as(diff.type) * remaining
111
- if(otyp.signed?) then
112
- interpolated_value <= base +
113
- ([[diff[diff.type.width-1]]*shift_bits,
114
- diff[diff.type.width-1..shift_bits]]).to_expr
115
- else
116
- interpolated_value <= base + (diff >> shift_bits)
110
+ par do
111
+ diff <= (next_data-base).as(diff.type) * remaining
112
+ if(otyp.signed?) then
113
+ interpolated_value <= base +
114
+ ([[diff[diff.type.width-1]]*shift_bits,
115
+ diff[diff.type.width-1..shift_bits]]).to_expr
116
+ else
117
+ interpolated_value <= base + (diff >> shift_bits)
118
+ end
117
119
  end
118
120
  end
119
121
 
@@ -1,3 +1,3 @@
1
1
  module HDLRuby
2
- VERSION = "2.6.10"
2
+ VERSION = "2.6.19"
3
3
  end
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.6.10
4
+ version: 2.6.19
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-08-16 00:00:00.000000000 Z
11
+ date: 2021-10-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler