HDLRuby 2.6.10 → 2.6.19

Sign up to get free protection for your applications and to get access to all the features.
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