HDLRuby 2.4.21 → 2.4.22

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: 28c1956d124429de349aede3dce3644cca530400479dedb09bedc3326a1fdb76
4
- data.tar.gz: cd76438901da8bff407b7db4abef07399192c19f0349af0c9e0e545a1a22cf1d
3
+ metadata.gz: bd32be1a749a209488dea4e2d6d05c8c90a2a181ce48575288e33dc65c25ff02
4
+ data.tar.gz: fc615ba447dc1fe712b2620f39d4f6fbbc1a5a698efa2c38b0ca4f075dc5a53f
5
5
  SHA512:
6
- metadata.gz: 89ccd495fa050a3f552ea73e52f726a08f56f5a937691209622a4d008a62905134d3a4765265ee07ff4c8aca59bc097221d4f75fc9da445ba3115fe6aee293ea
7
- data.tar.gz: 47150e816409de410e41f8aa5a22e7bcc514ac88d2798d0282cb1efa5f660ec0e20d35015f807c43e7823ef4ae406125aba45bcd28b2acaf740991528549c413
6
+ metadata.gz: 6b81a944107060ac2844260d83d90cac747decf72b3facf9fa06bb4453267679de12dbbc72c08a3016701a304ef1c1941b7689358e125cd00d1112f028e302cb
7
+ data.tar.gz: 369b9864dc3504ab0536c6e3a1df19b70cda921f46c1680bfdf7b78087348f93864285dada62e52db9ab105b15510cb98c1054bfd870d01ee13913e3d5216d4e
@@ -1,12 +1,14 @@
1
1
 
2
+ signed[7..0].typedef(:typ)
3
+
2
4
  # Describes an 8-bit data 4-bit address ROM.
3
5
  system :rom4_8 do
4
6
  [2..0].input :addr
5
7
  [7..0].output :data0,:data1,:data2
6
8
 
7
9
  bit[7..0][0..7].constant content0: [0,1,2,3,4,5,6,7]
8
- bit[7..0][-8].constant content1: [0,1,2,3,4,5,6,7]
9
- bit[7..0][-8].constant content2: (8).times.to_a
10
+ signed[7..0][-8].constant content1: [0,1,2,3,4,5,6,7]
11
+ typ[-8].constant content2: (8).times.to_a
10
12
 
11
13
  data0 <= content0[addr]
12
14
  data1 <= content1[addr]
@@ -1183,6 +1183,11 @@ module HDLRuby::Low
1183
1183
  return false
1184
1184
  end
1185
1185
 
1186
+ # Tells if the type of of vector kind.
1187
+ def vector?
1188
+ return false
1189
+ end
1190
+
1186
1191
  # Gets the bitwidth of the type, by default 0.
1187
1192
  # Bit, signed, unsigned and Float base have a width of 1.
1188
1193
  def width
@@ -1410,7 +1415,7 @@ module HDLRuby::Low
1410
1415
 
1411
1416
  # Sets the delegations
1412
1417
  self.extend Forwardable
1413
- [ :signed?, :unsigned?, :fixed?, :float?, :leaf?,
1418
+ [ :signed?, :unsigned?, :fixed?, :float?, :leaf?, :vector?,
1414
1419
  :width, :range?, :range, :base?, :base, :types?,
1415
1420
  :get_all_types, :get_type, :each, :each_type,
1416
1421
  :regular?,
@@ -1466,6 +1471,11 @@ module HDLRuby::Low
1466
1471
  # The base type of the vector
1467
1472
  attr_reader :base
1468
1473
 
1474
+ # Tells if the type of of vector kind.
1475
+ def vector?
1476
+ return true
1477
+ end
1478
+
1469
1479
  # Tells if the type has a base.
1470
1480
  def base?
1471
1481
  return true
@@ -11,6 +11,10 @@ include HDLRuby::Verilog
11
11
  module HDLRuby::Low
12
12
 
13
13
 
14
+ # The list of base types used both in verilog and HDLRuby
15
+ VERILOG_BASE_TYPES = ["signed"]
16
+
17
+
14
18
  # Sample of very handy for programming.
15
19
  # puts "class=#{self.yes.class}" # Confirm class of self.yes.
16
20
  # puts "methods=#{self.right.methods}" # Confirm method of self.right.
@@ -1349,7 +1353,8 @@ end
1349
1353
  class TypeVector
1350
1354
  # Converts the system to Verilog code.
1351
1355
  def to_verilog
1352
- if self.base.name.to_s != "bit"
1356
+ # if self.base.name.to_s != "bit"
1357
+ if VERILOG_BASE_TYPES.include?(self.base.name.to_s)
1353
1358
  return " #{self.base.name.to_s}[#{self.range.first}:#{self.range.last}]"
1354
1359
  end
1355
1360
  return " [#{self.range.first}:#{self.range.last}]"
@@ -1750,10 +1755,12 @@ class SystemT
1750
1755
  end
1751
1756
  # And the array types signals.
1752
1757
  self.each_signal do |sig|
1753
- regs << sig.to_verilog if sig.type.is_a?(TypeVector) && sig.type.base.is_a?(TypeVector)
1758
+ # regs << sig.to_verilog if sig.type.is_a?(TypeVector) && sig.type.base.is_a?(TypeVector)
1759
+ regs << sig.to_verilog if sig.type.vector? && sig.type.base.vector?
1754
1760
  end
1755
1761
  self.each_inner do |sig|
1756
- regs << sig.to_verilog if sig.type.is_a?(TypeVector) && sig.type.base.is_a?(TypeVector)
1762
+ # regs << sig.to_verilog if sig.type.is_a?(TypeVector) && sig.type.base.is_a?(TypeVector)
1763
+ regs << sig.to_verilog if sig.type.vector? && sig.type.base.vector?
1757
1764
  end
1758
1765
 
1759
1766
  # Code generation
@@ -1,3 +1,3 @@
1
1
  module HDLRuby
2
- VERSION = "2.4.21"
2
+ VERSION = "2.4.22"
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.4.21
4
+ version: 2.4.22
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-12-10 00:00:00.000000000 Z
11
+ date: 2021-01-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler