HDLRuby 2.6.8 → 2.6.18

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: 01f27a3801dbe93fa55cba40a6a66b91f94df070e255689ac9d73f894b006bd0
4
- data.tar.gz: 911aadbbb04317300946682df515527e72602d36aacb792bc2c3f80ea88fa14d
3
+ metadata.gz: 2d49fb40d2d1233c59c0ae1f6d7afea51ab17e70aaac5f605295f4c44e478fa4
4
+ data.tar.gz: 0b14393197c0af246dae6c221d2beb94580fa9b4c30b234e82efdae4eebf5bca
5
5
  SHA512:
6
- metadata.gz: ea09062dfce477be1db11be382672323711d6fa996cb2f3716cd43692ba1063f9ccd651b6b870a09b319fbd8374b82635075a72b00b89a8e305385adf72c097b
7
- data.tar.gz: 0ecc3b863e4e41ed3f25083dcf579b014a2a6d04dfb41cd71262d45d115b4efb23d8d869c714508ada05b0a239afd484143733a16343f9fd8738375bbf871dbe
6
+ metadata.gz: e2c55c6966faa1274aee2ae712b376aec22670e9a574b4d5312e73a8a8a1f85713b8312d6b923e4daef030398667c327245ee8aeb813c3d379d137dd63ec9af8
7
+ data.tar.gz: a28d25d1a5ff5893e64ede5229a4b53c7ad0c4ff6479807e3f76764c9f464fc5d0b6a41f8cce3ea8b49338895a3d95e8582760c64a0d8df21a5683fd0acba4d3
@@ -2,6 +2,7 @@
2
2
  # A benchmark for testing the arithmetic with signed values.
3
3
  system :neg_arith_bench do
4
4
  signed[11..0].inner :x,:y,:z
5
+ inner :cmp
5
6
 
6
7
  timed do
7
8
  x <= 10
@@ -9,41 +10,51 @@ system :neg_arith_bench do
9
10
  z <= 0
10
11
  !10.ns
11
12
  z <= 10 * 10
13
+ cmp <= (10 < 10)
12
14
  !10.ns
13
15
  z <= x * y
16
+ cmp <= (x < y)
14
17
  !10.ns
15
18
  x <= 10
16
19
  y <= -10
17
20
  !10.ns
18
21
  z <= 10 * (-10)
22
+ cmp <= (10 < -10)
19
23
  !10.ns
20
24
  z <= x * y
25
+ cmp <= (x < y)
21
26
  !10.ns
22
27
  x <= -10
23
28
  y <= 10
24
29
  !10.ns
25
30
  z <= (-10) * 10
31
+ cmp <= (-10 < 10)
26
32
  !10.ns
27
33
  z <= x * y
34
+ cmp <= (x < y)
28
35
  !10.ns
29
36
  x <= -10
30
37
  y <= -10
31
38
  !10.ns
32
39
  z <= (-10) * (-10)
40
+ cmp <= (-10 < -10)
33
41
  !10.ns
34
42
  z <= x * y
43
+ cmp <= (x < y)
35
44
  !10.ns
36
45
  x <= _000000011010
37
46
  y <= _000011111010
38
47
  z <= 0
39
48
  !10.ns
40
49
  z <= x * y
50
+ cmp <= (x < y)
41
51
  !10.ns
42
52
  x <= _000000011010
43
53
  y <= _111111111010
44
54
  z <= 0
45
55
  !10.ns
46
56
  z <= x * y
57
+ cmp <= (x < y)
47
58
  !10.ns
48
59
  end
49
60
  end
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