HDLRuby 2.2.5 → 2.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/HDLRuby/hruby_low_without_connection.rb +17 -3
- data/lib/HDLRuby/hruby_verilog.rb +1 -1
- data/lib/HDLRuby/sim/hruby_sim_calc.c +22 -0
- data/lib/HDLRuby/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 586ce6da5943ec0473a7849a515c9a673d3467e1acb5a5214cbccc0794e33848
|
4
|
+
data.tar.gz: fd6d45a53a35154b4936a9e146028e74fa2b351185a6f7f0f87e16b884188a42
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9cd1a599cadb487012df47fcce184de6b5eab1d64a631869ad508ce52833ebbaa1320dd692d3657f30e0b8cb50829d001f2529161f0255963969469a1b1338e3
|
7
|
+
data.tar.gz: e71c9dff6b99b9a037b9d8e7a14ca5adb757ca4a21e45481c4816b26e909f92db221e1acdbad1d53ceb65b04f207e3b07b95b0f08745681d856b1eee44f234b5
|
@@ -86,14 +86,28 @@ module HDLRuby::Low
|
|
86
86
|
outputs_blk.add_statement(
|
87
87
|
Transmit.new(left.clone,right.clone))
|
88
88
|
else
|
89
|
-
# puts "left/right is inout"
|
89
|
+
# # puts "left/right is inout"
|
90
|
+
# if (left.is_a?(Ref)) then
|
91
|
+
# inputs_blk.add_statement(
|
92
|
+
# Transmit.new(left.clone,right.clone))
|
93
|
+
# end
|
94
|
+
# if (right.is_a?(Ref)) then
|
95
|
+
# outputs_blk.add_statement(
|
96
|
+
# Transmit.new(right.clone,left.clone))
|
97
|
+
# end
|
98
|
+
# Both or neither input/output, make a behavior
|
99
|
+
# for each.
|
90
100
|
if (left.is_a?(Ref)) then
|
91
|
-
|
101
|
+
blk = Block.new(:par)
|
102
|
+
blk.add_statement(
|
92
103
|
Transmit.new(left.clone,right.clone))
|
104
|
+
scope.add_behavior(Behavior.new(blk))
|
93
105
|
end
|
94
106
|
if (right.is_a?(Ref)) then
|
95
|
-
|
107
|
+
blk = Block.new(:par)
|
108
|
+
blk.add_statement(
|
96
109
|
Transmit.new(right.clone,left.clone))
|
110
|
+
scope.add_behavior(Behavior.new(blk))
|
97
111
|
end
|
98
112
|
end
|
99
113
|
end
|
@@ -1446,7 +1446,7 @@ class If
|
|
1446
1446
|
# If noif (else if) exists, it outputs it.
|
1447
1447
|
# Since noif is directly under, respond_to is unnecessary.
|
1448
1448
|
self.each_noif do |condition, block|
|
1449
|
-
result << "#{" " * $space_count} else if (#{condition.to_verilog})\n"
|
1449
|
+
result << "#{" " * $space_count} else if (#{condition.to_verilog}) begin\n"
|
1450
1450
|
block.each_statement do |statement|
|
1451
1451
|
result << "#{" " * $space_count} #{statement.to_verilog(mode)}"
|
1452
1452
|
end
|
@@ -585,6 +585,22 @@ static Value sub_value_bitstring(Value src0, Value src1, Value dst) {
|
|
585
585
|
}
|
586
586
|
|
587
587
|
|
588
|
+
/** Computes the multiplication of two defined bitstring values.
|
589
|
+
* @param src0 the first source value of the addition
|
590
|
+
* @param src1 the second source value of the addition
|
591
|
+
* @param dst the destination value
|
592
|
+
* @return dst */
|
593
|
+
static Value mul_value_defined_bitstring(Value src0, Value src1, Value dst) {
|
594
|
+
/* Sets state of the destination using the first source. */
|
595
|
+
dst->type = src0->type;
|
596
|
+
dst->numeric = 1;
|
597
|
+
|
598
|
+
/* Perform the addition. */
|
599
|
+
dst->data_int = value2integer(src0) * value2integer(src1);
|
600
|
+
return dst;
|
601
|
+
}
|
602
|
+
|
603
|
+
|
588
604
|
/** Computes the NOT of a bitstring value.
|
589
605
|
* @param src the source value of the not
|
590
606
|
* @param dst the destination value
|
@@ -1803,8 +1819,14 @@ Value mul_value(Value src0, Value src1, Value dst) {
|
|
1803
1819
|
if (src0->numeric && src1->numeric) {
|
1804
1820
|
/* Both sources are numeric. */
|
1805
1821
|
return mul_value_numeric(src0,src1,dst);
|
1822
|
+
} else if (is_defined_value(src0) && is_defined_value(src1)) {
|
1823
|
+
/* Both sources can be converted to numeric values. */
|
1824
|
+
return mul_value_defined_bitstring(src0,src1,dst);
|
1806
1825
|
} else {
|
1807
1826
|
/* Cannot compute (for now), simply undefines the destination. */
|
1827
|
+
/* First ensure dst has the right shape. */
|
1828
|
+
copy_value(src0,dst);
|
1829
|
+
/* Then make it undefined. */
|
1808
1830
|
set_undefined_bitstring(dst);
|
1809
1831
|
}
|
1810
1832
|
return dst;
|
data/lib/HDLRuby/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: HDLRuby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.2.
|
4
|
+
version: 2.2.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lovic Gauthier
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-03-
|
11
|
+
date: 2020-03-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|