origen_verilog 0.3.0 → 0.3.1

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
  SHA1:
3
- metadata.gz: 46d8c90c2eace5e9de51b9391ae680e63107604e
4
- data.tar.gz: e15f496480ad467f7c472c1179d5d7376958b6b4
3
+ metadata.gz: 1be3a1740eb02ddf52433ffdf8d3b6eb3ca30657
4
+ data.tar.gz: d0d8602e57ecb3eeb04d1dbd0919bb3d36f7a252
5
5
  SHA512:
6
- metadata.gz: 4c92146efefda632b524ed0e7aac52c0c499d12e23398fb33abd2f596ffc8164b0c5cf035f18d17de2daa75ec03154dd2b7e8411c277140593014c44e3c37f1e
7
- data.tar.gz: d7c47379ab7e2eba83b5637166f956f970feeffaac0fe1f299d35f478316dda88e4a477ce8c46b59895fc5d342d65668330812208cc8db17e24771110da7cf82
6
+ metadata.gz: 7c4f3a008af2790d2479c594f5cb777fa7903fea17df2f1ad3daa1df728bf52e9ec498baaaf1ce5867c4aa7027b8ffb96c2eaa90475236af1f687d4a75de9036
7
+ data.tar.gz: a2468d8aeb390439016a517c1eb5bd55707f0c2bfa1addbcc801e69a88fdfdc07650600da81194c64806406ce0a30b221be9074397120398e21017494c26a72b
data/config/commands.rb CHANGED
@@ -34,6 +34,10 @@ when "build"
34
34
  end
35
35
  exit 0
36
36
 
37
+ when "parse"
38
+ require "origen_verilog/commands/parse"
39
+ exit 0
40
+
37
41
  ## Example of how to make a command to run unit tests, this simply invokes RSpec on
38
42
  ## the spec directory
39
43
  when "specs"
@@ -80,6 +84,7 @@ else
80
84
  # origen -h, you can do this by assigning the required text to @application_commands
81
85
  # before handing control back to Origen.
82
86
  @application_commands = <<-EOT
87
+ parse Command to test/debug the verilog parser (similar to the sim:build command)
83
88
  tags Build a tags file for this app
84
89
  build Build/compile the latest grammar files
85
90
  specs Run the specs (tests), -c will enable coverage
data/config/version.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  module OrigenVerilog
2
2
  MAJOR = 0
3
3
  MINOR = 3
4
- BUGFIX = 0
4
+ BUGFIX = 1
5
5
  DEV = nil
6
6
 
7
7
  VERSION = [MAJOR, MINOR, BUGFIX].join(".") + (DEV ? ".pre#{DEV}" : '')
data/grammars/verilog.rb CHANGED
@@ -1247,11 +1247,11 @@ module OrigenVerilog
1247
1247
 
1248
1248
  i0, s0 = index, []
1249
1249
  i1 = index
1250
- if (match_len = has_terminal?("1", false, index))
1251
- r2 = true
1250
+ if (match_len = has_terminal?("100", false, index))
1251
+ r2 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1252
1252
  @index += match_len
1253
1253
  else
1254
- terminal_parse_failure('"1"')
1254
+ terminal_parse_failure('"100"')
1255
1255
  r2 = nil
1256
1256
  end
1257
1257
  if r2
@@ -1269,11 +1269,11 @@ module OrigenVerilog
1269
1269
  r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
1270
1270
  r1 = r3
1271
1271
  else
1272
- if (match_len = has_terminal?("100", false, index))
1273
- r4 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1272
+ if (match_len = has_terminal?("1", false, index))
1273
+ r4 = true
1274
1274
  @index += match_len
1275
1275
  else
1276
- terminal_parse_failure('"100"')
1276
+ terminal_parse_failure('"1"')
1277
1277
  r4 = nil
1278
1278
  end
1279
1279
  if r4
@@ -0,0 +1,68 @@
1
+ require 'optparse'
2
+ require 'origen_verilog'
3
+
4
+ options = { source_dirs: [] }
5
+
6
+ # App options are options that the application can supply to extend this command
7
+ app_options = @application_options || []
8
+ opt_parser = OptionParser.new do |opts|
9
+ opts.banner = <<-EOT
10
+ Parse the given top-level verilog file and convert the top-level module to an Origen top-level
11
+ model.
12
+ Usage: origen parse TOP_LEVEL_RTL_FILE [options]
13
+ EOT
14
+ opts.on('-t', '--top NAME', String, 'Specify the top-level Verilog module name if OrigenSim can\'t work it out') { |t| options[:top_level_name] = t }
15
+ opts.on('-s', '--source_dir PATH', 'Directories to look for include files in (the directory containing the top-level is already considered)') do |path|
16
+ options[:source_dirs] << path
17
+ end
18
+ opts.on('-d', '--debugger', 'Enable the debugger') { options[:debugger] = true }
19
+ app_options.each do |app_option|
20
+ opts.on(*app_option) {}
21
+ end
22
+ opts.separator ''
23
+ opts.on('-h', '--help', 'Show this message') { puts opts; exit 0 }
24
+ end
25
+
26
+ opt_parser.parse! ARGV
27
+
28
+ unless ARGV.size > 0
29
+ puts 'You must supply a path to the top-level RTL file'
30
+ exit 1
31
+ end
32
+ rtl_top = ARGV.first
33
+ unless File.exist?(rtl_top)
34
+ puts "File does not exist: #{rtl_top}"
35
+ exit 1
36
+ end
37
+
38
+ ast = OrigenVerilog.parse_file(rtl_top)
39
+
40
+ unless ast
41
+ puts 'Sorry, but the given top-level RTL file failed to parse'
42
+ exit 1
43
+ end
44
+
45
+ candidates = ast.top_level_modules
46
+ candidates = ast.modules if candidates.empty?
47
+
48
+ if candidates.size == 0
49
+ puts "Sorry, couldn't find any Verilog module declarations in that file"
50
+ exit 1
51
+ elsif candidates.size > 1
52
+ if options[:top_level_name]
53
+ mod = candidates.find { |c| c.name == options[:top_level_name] }
54
+ end
55
+ unless mod
56
+ puts "Sorry, couldn't work out what the top-level module is, please help by running again and specifying it via the --top switch with one of the following names:"
57
+ candidates.each do |c|
58
+ puts " #{c.name}"
59
+ end
60
+ exit 1
61
+ end
62
+ else
63
+ mod = candidates.first
64
+ end
65
+
66
+ rtl_top_module = mod.name
67
+
68
+ mod.to_top_level # Creates dut
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: origen_verilog
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stephen McGinty
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-01-15 00:00:00.000000000 Z
11
+ date: 2018-02-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ast
@@ -53,6 +53,7 @@ files:
53
53
  - grammars/preprocessor.rb
54
54
  - grammars/verilog.rb
55
55
  - lib/origen_verilog.rb
56
+ - lib/origen_verilog/commands/parse.rb
56
57
  - lib/origen_verilog/node.rb
57
58
  - lib/origen_verilog/parser.rb
58
59
  - lib/origen_verilog/preprocessor/node.rb
@@ -90,7 +91,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
90
91
  version: 1.8.11
91
92
  requirements: []
92
93
  rubyforge_project:
93
- rubygems_version: 2.6.8
94
+ rubygems_version: 2.6.7
94
95
  signing_key:
95
96
  specification_version: 4
96
97
  summary: A parser and generator for Verilog (IEEE 1364)