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