rvvm 0.9.2 → 0.9.3
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/CHANGELOG.md +35 -5
 - data/bin/sandbox +4 -0
 - data/lib/rvvm/templates.rb +7 -1
 - data/lib/rvvm/utils.rb +60 -3
 - data/lib/rvvm/version.rb +3 -1
 - data/lib/rvvm.rb +149 -28
 - metadata +2 -1
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 01a0976fb744924367077dfda5f613dbf6912032fbc61896c41aa647f606863e
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 188c360b6cf73c1c4478c1cbb8d1f665daf6523a97b5c286a63ea0b3ab056fc2
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: ea4aaab4ac74410dcded24b69db2953ee51e2811539fec0e08891097231f4551ace3cb25fd7a68fe6a8afceeeddce9bed4ba277edddf453036d88ddea2e986ee
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 67315687f47c4648af7db0b66530bfb3dae52affd5ee1ea97b7d1b16099ba1409e1fc4df805b4639dedebffd7afe43fdec91166c33f23c778928ca8585e49400
         
     | 
    
        data/CHANGELOG.md
    CHANGED
    
    | 
         @@ -47,16 +47,46 @@ 
     | 
|
| 
       47 
47 
     | 
    
         | 
| 
       48 
48 
     | 
    
         
             
            1. Test list parsing and batch simulation
         
     | 
| 
       49 
49 
     | 
    
         
             
            2. Unit tests
         
     | 
| 
       50 
     | 
    
         
            -
            3. CLI log  
     | 
| 
      
 50 
     | 
    
         
            +
            3. CLI log graphic
         
     | 
| 
       51 
51 
     | 
    
         | 
| 
       52 
52 
     | 
    
         
             
            ## [0.9.1] - 2024-09-16
         
     | 
| 
       53 
53 
     | 
    
         | 
| 
       54 
     | 
    
         
            -
            ### Fixes
         
     | 
| 
      
 54 
     | 
    
         
            +
            ### Fixes:
         
     | 
| 
       55 
55 
     | 
    
         | 
| 
       56 
     | 
    
         
            -
            1. Fixed rvvm exacutable being excluded by gemspec
         
     | 
| 
      
 56 
     | 
    
         
            +
            1. Fixed `rvvm` exacutable being excluded by gemspec
         
     | 
| 
       57 
57 
     | 
    
         | 
| 
       58 
58 
     | 
    
         
             
            ## [0.9.2] - 2024-09-16
         
     | 
| 
       59 
59 
     | 
    
         | 
| 
       60 
     | 
    
         
            -
            ### Fixes
         
     | 
| 
      
 60 
     | 
    
         
            +
            ### Fixes:
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
            1. `rvvm` executable still missing after 0.9.1 update
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
            ### TBI:
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
            1. Test list parsing and batch simulation
         
     | 
| 
      
 67 
     | 
    
         
            +
            2. Tests
         
     | 
| 
      
 68 
     | 
    
         
            +
            3. CLI log graphic
         
     | 
| 
      
 69 
     | 
    
         
            +
            4. Project config load failure handling/error message when parsing invalid json
         
     | 
| 
      
 70 
     | 
    
         
            +
            5. Template file generation in pwd
         
     | 
| 
      
 71 
     | 
    
         
            +
            6. Elaboration and simulation custom waveform trace dump file
         
     | 
| 
      
 72 
     | 
    
         
            +
             
     | 
| 
      
 73 
     | 
    
         
            +
            ## [0.9.3] - 2024-09-16
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
      
 75 
     | 
    
         
            +
            ### Added:
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
      
 77 
     | 
    
         
            +
            1. Test list parsing and batch simulation
         
     | 
| 
      
 78 
     | 
    
         
            +
            2. Tests
         
     | 
| 
      
 79 
     | 
    
         
            +
            3. Updated gitlab pipeline
         
     | 
| 
      
 80 
     | 
    
         
            +
            4. `sandbox` script to play with during development
         
     | 
| 
      
 81 
     | 
    
         
            +
            5. Code documentation
         
     | 
| 
      
 82 
     | 
    
         
            +
             
     | 
| 
      
 83 
     | 
    
         
            +
            ### Fixed:
         
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
      
 85 
     | 
    
         
            +
            1. Hash key conversion to symbols when parsing config json
         
     | 
| 
      
 86 
     | 
    
         
            +
             
     | 
| 
      
 87 
     | 
    
         
            +
            ### TBI:
         
     | 
| 
       61 
88 
     | 
    
         | 
| 
       62 
     | 
    
         
            -
            1.  
     | 
| 
      
 89 
     | 
    
         
            +
            1. CLI log graphic
         
     | 
| 
      
 90 
     | 
    
         
            +
            2. Project config load failure handling/error message when parsing invalid json
         
     | 
| 
      
 91 
     | 
    
         
            +
            3. Template file generation in pwd
         
     | 
| 
      
 92 
     | 
    
         
            +
            4. Elaboration and simulation custom waveform trace dump file
         
     | 
    
        data/bin/sandbox
    ADDED
    
    
    
        data/lib/rvvm/templates.rb
    CHANGED
    
    | 
         @@ -1,5 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # frozen_string_literal: true
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
      
 3 
     | 
    
         
            +
            # Module containing template hashes for rvvm.
         
     | 
| 
       3 
4 
     | 
    
         
             
            module Templates
         
     | 
| 
       4 
5 
     | 
    
         
             
              @templates = {}
         
     | 
| 
       5 
6 
     | 
    
         | 
| 
         @@ -49,7 +50,7 @@ module Templates 
     | 
|
| 
       49 
50 
     | 
    
         
             
                "verbosity": "LOW",
         
     | 
| 
       50 
51 
     | 
    
         
             
                "defTest": " ",
         
     | 
| 
       51 
52 
     | 
    
         
             
                "batch": 0,
         
     | 
| 
       52 
     | 
    
         
            -
                " 
     | 
| 
      
 53 
     | 
    
         
            +
                "testlist": [" "],
         
     | 
| 
       53 
54 
     | 
    
         
             
                "args": " "
         
     | 
| 
       54 
55 
     | 
    
         
             
              }
         
     | 
| 
       55 
56 
     | 
    
         
             
            })
         
     | 
| 
         @@ -245,6 +246,11 @@ endpackage 
     | 
|
| 
       245 
246 
     | 
    
         
             
            )
         
     | 
| 
       246 
247 
     | 
    
         
             
              }
         
     | 
| 
       247 
248 
     | 
    
         | 
| 
      
 249 
     | 
    
         
            +
              # Loads template hashes.
         
     | 
| 
      
 250 
     | 
    
         
            +
              #
         
     | 
| 
      
 251 
     | 
    
         
            +
              # @return [Hash] template hashes
         
     | 
| 
      
 252 
     | 
    
         
            +
              #
         
     | 
| 
      
 253 
     | 
    
         
            +
              # @since 0.8.0
         
     | 
| 
       248 
254 
     | 
    
         
             
              def self.load
         
     | 
| 
       249 
255 
     | 
    
         
             
                @templates
         
     | 
| 
       250 
256 
     | 
    
         
             
              end
         
     | 
    
        data/lib/rvvm/utils.rb
    CHANGED
    
    | 
         @@ -1,12 +1,35 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # frozen_string_literal: true
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
      
 3 
     | 
    
         
            +
            # Utils module providing utilities and helper methods to rvvm.
         
     | 
| 
      
 4 
     | 
    
         
            +
            #
         
     | 
| 
      
 5 
     | 
    
         
            +
            # Mainly used to generate files and templates.
         
     | 
| 
      
 6 
     | 
    
         
            +
            #
         
     | 
| 
      
 7 
     | 
    
         
            +
            # @since 0.1.0
         
     | 
| 
       3 
8 
     | 
    
         
             
            module Utils
         
     | 
| 
       4 
     | 
    
         
            -
               
     | 
| 
      
 9 
     | 
    
         
            +
              # Interpolates string.
         
     | 
| 
      
 10 
     | 
    
         
            +
              #
         
     | 
| 
      
 11 
     | 
    
         
            +
              # Replaces named keys `${example_key}` with provided values based on a hash.
         
     | 
| 
      
 12 
     | 
    
         
            +
              #
         
     | 
| 
      
 13 
     | 
    
         
            +
              # @param string [String] string to be interpolated
         
     | 
| 
      
 14 
     | 
    
         
            +
              # @param hash [Hash] Hash to provide values to replace instead of the named keys
         
     | 
| 
      
 15 
     | 
    
         
            +
              #
         
     | 
| 
      
 16 
     | 
    
         
            +
              # @return [string] interpolated string
         
     | 
| 
      
 17 
     | 
    
         
            +
              #
         
     | 
| 
      
 18 
     | 
    
         
            +
              # @since 0.1.0
         
     | 
| 
      
 19 
     | 
    
         
            +
              def self.interpolate(string, hash)
         
     | 
| 
       5 
20 
     | 
    
         
             
                string.gsub(/\$\{([^}]+)\}/) do |match|
         
     | 
| 
       6 
21 
     | 
    
         
             
                  hash[Regexp.last_match(1).to_sym] || match
         
     | 
| 
       7 
22 
     | 
    
         
             
                end
         
     | 
| 
       8 
23 
     | 
    
         
             
              end
         
     | 
| 
       9 
24 
     | 
    
         | 
| 
      
 25 
     | 
    
         
            +
              # Generates a file with a provided content.
         
     | 
| 
      
 26 
     | 
    
         
            +
              #
         
     | 
| 
      
 27 
     | 
    
         
            +
              # @param path [String] path of the file to be generated
         
     | 
| 
      
 28 
     | 
    
         
            +
              # @param content [String] content of the file to be generated
         
     | 
| 
      
 29 
     | 
    
         
            +
              #
         
     | 
| 
      
 30 
     | 
    
         
            +
              # @return [void]
         
     | 
| 
      
 31 
     | 
    
         
            +
              #
         
     | 
| 
      
 32 
     | 
    
         
            +
              # @since 0.8.0
         
     | 
| 
       10 
33 
     | 
    
         
             
              def self.gen_file(path, content)
         
     | 
| 
       11 
34 
     | 
    
         
             
                File.open(path, "w") do |file|
         
     | 
| 
       12 
35 
     | 
    
         
             
                  file.write(content)
         
     | 
| 
         @@ -15,16 +38,36 @@ module Utils 
     | 
|
| 
       15 
38 
     | 
    
         
             
                puts "\nFailed to create a file!\nError #{e.message}"
         
     | 
| 
       16 
39 
     | 
    
         
             
              end
         
     | 
| 
       17 
40 
     | 
    
         | 
| 
      
 41 
     | 
    
         
            +
              # Generates a file based on a template.
         
     | 
| 
      
 42 
     | 
    
         
            +
              #
         
     | 
| 
      
 43 
     | 
    
         
            +
              # @param template [Hash] hash with the template content
         
     | 
| 
      
 44 
     | 
    
         
            +
              # @param name [String] name of the file to be generated
         
     | 
| 
      
 45 
     | 
    
         
            +
              # @param config [Hash] template config hash for content interpolation
         
     | 
| 
      
 46 
     | 
    
         
            +
              # @param path [String] path of the template file to be generated (excluding file name)
         
     | 
| 
      
 47 
     | 
    
         
            +
              #
         
     | 
| 
      
 48 
     | 
    
         
            +
              # @return [void]
         
     | 
| 
      
 49 
     | 
    
         
            +
              #
         
     | 
| 
      
 50 
     | 
    
         
            +
              # @since 0.8.0
         
     | 
| 
       18 
51 
     | 
    
         
             
              def self.gen_template(template, name = nil, config = nil, path = nil)
         
     | 
| 
       19 
52 
     | 
    
         
             
                temp_config = config || template[:config]
         
     | 
| 
       20 
     | 
    
         
            -
                content =  
     | 
| 
      
 53 
     | 
    
         
            +
                content = interpolate(template[:content], temp_config)
         
     | 
| 
       21 
54 
     | 
    
         
             
                filename = name || template[:file][:name]
         
     | 
| 
       22 
55 
     | 
    
         
             
                filepath = path || template[:file][:path]
         
     | 
| 
       23 
56 
     | 
    
         | 
| 
       24 
     | 
    
         
            -
                puts "Generating: #{filepath}/#{filename}"
         
     | 
| 
      
 57 
     | 
    
         
            +
                puts "      Generating: #{filepath}/#{filename}"
         
     | 
| 
       25 
58 
     | 
    
         
             
                gen_file("#{filepath}/#{filename}", content)
         
     | 
| 
       26 
59 
     | 
    
         
             
              end
         
     | 
| 
       27 
60 
     | 
    
         | 
| 
      
 61 
     | 
    
         
            +
              # Recursively searches provided directory for a file.
         
     | 
| 
      
 62 
     | 
    
         
            +
              #
         
     | 
| 
      
 63 
     | 
    
         
            +
              # @param filename [String] name of the file to look for
         
     | 
| 
      
 64 
     | 
    
         
            +
              # @param path [String] path to start search on
         
     | 
| 
      
 65 
     | 
    
         
            +
              #
         
     | 
| 
      
 66 
     | 
    
         
            +
              # @return [String] path of the first occurence of the file
         
     | 
| 
      
 67 
     | 
    
         
            +
              # or
         
     | 
| 
      
 68 
     | 
    
         
            +
              # @return [nil] if file not found
         
     | 
| 
      
 69 
     | 
    
         
            +
              #
         
     | 
| 
      
 70 
     | 
    
         
            +
              # @since 0.8.0
         
     | 
| 
       28 
71 
     | 
    
         
             
              def self.find_file_dir(filename, path)
         
     | 
| 
       29 
72 
     | 
    
         
             
                Dir.foreach(path) do |file|
         
     | 
| 
       30 
73 
     | 
    
         
             
                  next if file == "."
         
     | 
| 
         @@ -42,6 +85,11 @@ module Utils 
     | 
|
| 
       42 
85 
     | 
    
         
             
                nil
         
     | 
| 
       43 
86 
     | 
    
         
             
              end
         
     | 
| 
       44 
87 
     | 
    
         | 
| 
      
 88 
     | 
    
         
            +
              # Extracts git username using git config system call.
         
     | 
| 
      
 89 
     | 
    
         
            +
              #
         
     | 
| 
      
 90 
     | 
    
         
            +
              # @return [String] git username
         
     | 
| 
      
 91 
     | 
    
         
            +
              #
         
     | 
| 
      
 92 
     | 
    
         
            +
              # @since 0.9.0
         
     | 
| 
       45 
93 
     | 
    
         
             
              def self.git_userame
         
     | 
| 
       46 
94 
     | 
    
         
             
                username = nil
         
     | 
| 
       47 
95 
     | 
    
         
             
                IO.popen("git config --get user.name") do |handle|
         
     | 
| 
         @@ -52,6 +100,15 @@ module Utils 
     | 
|
| 
       52 
100 
     | 
    
         
             
                username
         
     | 
| 
       53 
101 
     | 
    
         
             
              end
         
     | 
| 
       54 
102 
     | 
    
         | 
| 
      
 103 
     | 
    
         
            +
              # Checks if hash contains keys provided from an array.
         
     | 
| 
      
 104 
     | 
    
         
            +
              #
         
     | 
| 
      
 105 
     | 
    
         
            +
              # @param hash [Hash] hash to analyze
         
     | 
| 
      
 106 
     | 
    
         
            +
              # @param arra [Array] array of keys to look for in the hash
         
     | 
| 
      
 107 
     | 
    
         
            +
              #
         
     | 
| 
      
 108 
     | 
    
         
            +
              # @return [Bolean] true if all provided keys from a hash return nil
         
     | 
| 
      
 109 
     | 
    
         
            +
              # @return [Boolean] false if a provided key is found in the hash
         
     | 
| 
      
 110 
     | 
    
         
            +
              #
         
     | 
| 
      
 111 
     | 
    
         
            +
              # @since 0.9.0
         
     | 
| 
       55 
112 
     | 
    
         
             
              def self.all_nil?(hash, array)
         
     | 
| 
       56 
113 
     | 
    
         
             
                array.each do |key|
         
     | 
| 
       57 
114 
     | 
    
         
             
                  return false if hash[key]
         
     | 
    
        data/lib/rvvm/version.rb
    CHANGED
    
    
    
        data/lib/rvvm.rb
    CHANGED
    
    | 
         @@ -8,13 +8,28 @@ require "optparse" 
     | 
|
| 
       8 
8 
     | 
    
         
             
            require "fileutils"
         
     | 
| 
       9 
9 
     | 
    
         
             
            require "json"
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
      
 11 
     | 
    
         
            +
            # Top level module of the rvvm cli meta tool.
         
     | 
| 
      
 12 
     | 
    
         
            +
            #
         
     | 
| 
      
 13 
     | 
    
         
            +
            # Handles argument parsing, project creation, template file
         
     | 
| 
      
 14 
     | 
    
         
            +
            # generation and all interaction with Xilinx Vivado tools.
         
     | 
| 
      
 15 
     | 
    
         
            +
            #
         
     | 
| 
      
 16 
     | 
    
         
            +
            # Argument parsing runs on `require`, rest is run using run
         
     | 
| 
      
 17 
     | 
    
         
            +
            #
         
     | 
| 
      
 18 
     | 
    
         
            +
            # @example
         
     | 
| 
      
 19 
     | 
    
         
            +
            #   require "rvvm"
         
     | 
| 
      
 20 
     | 
    
         
            +
            #
         
     | 
| 
      
 21 
     | 
    
         
            +
            #   Rvvm.run
         
     | 
| 
      
 22 
     | 
    
         
            +
            #
         
     | 
| 
      
 23 
     | 
    
         
            +
            # @since 0.1.0
         
     | 
| 
       11 
24 
     | 
    
         
             
            module Rvvm
         
     | 
| 
       12 
25 
     | 
    
         
             
              class Error < StandardError; end
         
     | 
| 
       13 
26 
     | 
    
         | 
| 
      
 27 
     | 
    
         
            +
              # Module instance variables to hold tempaltes and project config
         
     | 
| 
       14 
28 
     | 
    
         
             
              @templates = Templates.load
         
     | 
| 
       15 
29 
     | 
    
         
             
              @config_path = nil
         
     | 
| 
       16 
30 
     | 
    
         
             
              @config = nil
         
     | 
| 
       17 
31 
     | 
    
         | 
| 
      
 32 
     | 
    
         
            +
              # Instance variables to hold parsed args and required arg symbol list
         
     | 
| 
       18 
33 
     | 
    
         
             
              @args = {}
         
     | 
| 
       19 
34 
     | 
    
         
             
              @required_args = %i[
         
     | 
| 
       20 
35 
     | 
    
         
             
                version
         
     | 
| 
         @@ -34,6 +49,8 @@ module Rvvm 
     | 
|
| 
       34 
49 
     | 
    
         
             
                covreport
         
     | 
| 
       35 
50 
     | 
    
         
             
              ]
         
     | 
| 
       36 
51 
     | 
    
         | 
| 
      
 52 
     | 
    
         
            +
              # Script argument parsing block.
         
     | 
| 
      
 53 
     | 
    
         
            +
              # Runs on loading the module using require.
         
     | 
| 
       37 
54 
     | 
    
         
             
              OptionParser.new do |args|
         
     | 
| 
       38 
55 
     | 
    
         
             
                args.on("-h", "--help", "Shows this help") do
         
     | 
| 
       39 
56 
     | 
    
         
             
                  puts "\nRVvM - Ruby Vivado Manager\n\n"
         
     | 
| 
         @@ -44,16 +61,11 @@ module Rvvm 
     | 
|
| 
       44 
61 
     | 
    
         
             
                  @current_time = Time.now
         
     | 
| 
       45 
62 
     | 
    
         
             
                  @formatted_time = @current_time.strftime("%Y-%m-%d %H:%M:%S")
         
     | 
| 
       46 
63 
     | 
    
         | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
       48 
64 
     | 
    
         
             
                  req_args = String.new
         
     | 
| 
       49 
65 
     | 
    
         
             
                  @required_args.each do |arg|
         
     | 
| 
       50 
66 
     | 
    
         
             
                    req_args << "--#{arg} "
         
     | 
| 
       51 
67 
     | 
    
         
             
                  end
         
     | 
| 
       52 
68 
     | 
    
         
             
                  puts "\nRequired args (at least one): #{req_args}\n\n"
         
     | 
| 
       53 
     | 
    
         
            -
                  # puts "\nRequired args (at least one):"
         
     | 
| 
       54 
     | 
    
         
            -
                  # @required_args.each do |arg|
         
     | 
| 
       55 
     | 
    
         
            -
                  #   puts "\t--#{arg}"
         
     | 
| 
       56 
     | 
    
         
            -
                  # end
         
     | 
| 
       57 
69 
     | 
    
         
             
                  exit(0)
         
     | 
| 
       58 
70 
     | 
    
         
             
                end
         
     | 
| 
       59 
71 
     | 
    
         
             
                args.on("-v", "--version", "Displays RVvM gem version") do
         
     | 
| 
         @@ -66,7 +78,6 @@ module Rvvm 
     | 
|
| 
       66 
78 
     | 
    
         
             
                args.on("--pkg NAME", "Creates a SystemVerilog package template (default path: <prj dir>/design/pkg)")
         
     | 
| 
       67 
79 
     | 
    
         
             
                args.on("--itf NAME", "Creates a SystemVerilog interface template (default path: <prj dir>/design/itf)")
         
     | 
| 
       68 
80 
     | 
    
         
             
                args.on("--svfile NAME", "Creates a generic SystemVerilog file template (default path: <prj dir>/design/src)")
         
     | 
| 
       69 
     | 
    
         
            -
                # args.on("--here", "Speciies pwd as a path when creating a file template")
         
     | 
| 
       70 
81 
     | 
    
         
             
                args.on("--path PATH", "Specifies a path relative to <prj dir> when creating a file template")
         
     | 
| 
       71 
82 
     | 
    
         
             
                args.on("-c", "--comp", "Compile SystemVerilog sources")
         
     | 
| 
       72 
83 
     | 
    
         
             
                args.on("-e", "--elab", "Elaborates project")
         
     | 
| 
         @@ -97,22 +108,31 @@ module Rvvm 
     | 
|
| 
       97 
108 
     | 
    
         
             
                args.on("--debug", "Script debug")
         
     | 
| 
       98 
109 
     | 
    
         
             
              end.parse!(into: @args)
         
     | 
| 
       99 
110 
     | 
    
         | 
| 
       100 
     | 
    
         
            -
               
     | 
| 
       101 
     | 
    
         
            -
             
     | 
| 
       102 
     | 
    
         
            -
               
     | 
| 
       103 
     | 
    
         
            -
             
     | 
| 
      
 111 
     | 
    
         
            +
              # Simple argument check.
         
     | 
| 
      
 112 
     | 
    
         
            +
              #
         
     | 
| 
      
 113 
     | 
    
         
            +
              # @return [void]
         
     | 
| 
      
 114 
     | 
    
         
            +
              #
         
     | 
| 
      
 115 
     | 
    
         
            +
              # @since 0.8.0
         
     | 
| 
       104 
116 
     | 
    
         
             
              def self.check_args
         
     | 
| 
       105 
117 
     | 
    
         
             
                if @args[:all]
         
     | 
| 
       106 
118 
     | 
    
         
             
                  @args[:comp] = 1
         
     | 
| 
       107 
119 
     | 
    
         
             
                  @args[:elab] = 1
         
     | 
| 
       108 
120 
     | 
    
         
             
                  @args[:run] = 1
         
     | 
| 
       109 
121 
     | 
    
         
             
                end
         
     | 
| 
      
 122 
     | 
    
         
            +
             
     | 
| 
      
 123 
     | 
    
         
            +
                # Check if a required arg is provided
         
     | 
| 
       110 
124 
     | 
    
         
             
                if Utils.all_nil?(@args, @required_args)
         
     | 
| 
       111 
125 
     | 
    
         
             
                  puts "\nNo required options provided!\nFor more info use -h or --help\n"
         
     | 
| 
       112 
     | 
    
         
            -
                  exit
         
     | 
| 
      
 126 
     | 
    
         
            +
                  exit(1)
         
     | 
| 
       113 
127 
     | 
    
         
             
                end
         
     | 
| 
       114 
128 
     | 
    
         
             
              end
         
     | 
| 
       115 
129 
     | 
    
         | 
| 
      
 130 
     | 
    
         
            +
              # Argument collision handling and additional settings for
         
     | 
| 
      
 131 
     | 
    
         
            +
              # batch simulation and dpi compilation.
         
     | 
| 
      
 132 
     | 
    
         
            +
              #
         
     | 
| 
      
 133 
     | 
    
         
            +
              # @return [void]
         
     | 
| 
      
 134 
     | 
    
         
            +
              #
         
     | 
| 
      
 135 
     | 
    
         
            +
              # @since 0.8.0
         
     | 
| 
       116 
136 
     | 
    
         
             
              def self.handle_args
         
     | 
| 
       117 
137 
     | 
    
         
             
                @args[:dpi] = 1 if @args[:all] && @config[:dpi][:dpilib] == 1
         
     | 
| 
       118 
138 
     | 
    
         | 
| 
         @@ -127,6 +147,16 @@ module Rvvm 
     | 
|
| 
       127 
147 
     | 
    
         
             
                end
         
     | 
| 
       128 
148 
     | 
    
         
             
              end
         
     | 
| 
       129 
149 
     | 
    
         | 
| 
      
 150 
     | 
    
         
            +
              # Shell command with debug printout.
         
     | 
| 
      
 151 
     | 
    
         
            +
              #
         
     | 
| 
      
 152 
     | 
    
         
            +
              # If --debug arg provided instead of calling `system` 
         
     | 
| 
      
 153 
     | 
    
         
            +
              # prints the input command.
         
     | 
| 
      
 154 
     | 
    
         
            +
              #
         
     | 
| 
      
 155 
     | 
    
         
            +
              # @param command [String] command to be called/printed
         
     | 
| 
      
 156 
     | 
    
         
            +
              #
         
     | 
| 
      
 157 
     | 
    
         
            +
              # @return [void]
         
     | 
| 
      
 158 
     | 
    
         
            +
              #
         
     | 
| 
      
 159 
     | 
    
         
            +
              # @since 0.8.0
         
     | 
| 
       130 
160 
     | 
    
         
             
              def self.execute(command)
         
     | 
| 
       131 
161 
     | 
    
         
             
                if @args[:debug]
         
     | 
| 
       132 
162 
     | 
    
         
             
                  puts command
         
     | 
| 
         @@ -135,6 +165,13 @@ module Rvvm 
     | 
|
| 
       135 
165 
     | 
    
         
             
                end
         
     | 
| 
       136 
166 
     | 
    
         
             
              end
         
     | 
| 
       137 
167 
     | 
    
         | 
| 
      
 168 
     | 
    
         
            +
              # Creates a new RVvM project template in pwd with a given name.
         
     | 
| 
      
 169 
     | 
    
         
            +
              #
         
     | 
| 
      
 170 
     | 
    
         
            +
              # @param name [String] project name
         
     | 
| 
      
 171 
     | 
    
         
            +
              #
         
     | 
| 
      
 172 
     | 
    
         
            +
              # @return [void]
         
     | 
| 
      
 173 
     | 
    
         
            +
              #
         
     | 
| 
      
 174 
     | 
    
         
            +
              # @since 0.8.0
         
     | 
| 
       138 
175 
     | 
    
         
             
              def self.create_new_project(name)
         
     | 
| 
       139 
176 
     | 
    
         
             
                puts "\nRVvM: Generating new project: #{name} ...\n"
         
     | 
| 
       140 
177 
     | 
    
         | 
| 
         @@ -187,15 +224,22 @@ module Rvvm 
     | 
|
| 
       187 
224 
     | 
    
         
             
                temp_conf[:PRJNAME] = name.upcase
         
     | 
| 
       188 
225 
     | 
    
         
             
                Utils.gen_template(@templates[:tbtop], "#{name}_tb_top.sv", temp_conf)
         
     | 
| 
       189 
226 
     | 
    
         | 
| 
      
 227 
     | 
    
         
            +
                puts " "
         
     | 
| 
       190 
228 
     | 
    
         
             
                system("git init")
         
     | 
| 
       191 
229 
     | 
    
         
             
                system("git add .")
         
     | 
| 
       192 
230 
     | 
    
         
             
                system('git commit -am "Initial commit"')
         
     | 
| 
       193 
231 
     | 
    
         | 
| 
       194 
     | 
    
         
            -
                puts "\nRVvM: New project generated.  
     | 
| 
      
 232 
     | 
    
         
            +
                puts "\nRVvM: New project generated. ^^\n\n"
         
     | 
| 
       195 
233 
     | 
    
         | 
| 
       196 
234 
     | 
    
         
             
                exit(0)
         
     | 
| 
       197 
235 
     | 
    
         
             
              end
         
     | 
| 
       198 
236 
     | 
    
         | 
| 
      
 237 
     | 
    
         
            +
              # Loads and parses rvvmconf.json config file from
         
     | 
| 
      
 238 
     | 
    
         
            +
              # an RVvM project rvvm directory.
         
     | 
| 
      
 239 
     | 
    
         
            +
              #
         
     | 
| 
      
 240 
     | 
    
         
            +
              # @return [void]
         
     | 
| 
      
 241 
     | 
    
         
            +
              #
         
     | 
| 
      
 242 
     | 
    
         
            +
              # @since 0.8.0
         
     | 
| 
       199 
243 
     | 
    
         
             
              def self.load_config
         
     | 
| 
       200 
244 
     | 
    
         
             
                puts "\nRVvM: Loading RVvM project config..."
         
     | 
| 
       201 
245 
     | 
    
         | 
| 
         @@ -210,14 +254,26 @@ module Rvvm 
     | 
|
| 
       210 
254 
     | 
    
         | 
| 
       211 
255 
     | 
    
         
             
                @config = JSON.parse(json_file) if json_file
         
     | 
| 
       212 
256 
     | 
    
         
             
                @config = @config.transform_values do |v|
         
     | 
| 
       213 
     | 
    
         
            -
                  v.transform_keys(&:to_sym)
         
     | 
| 
      
 257 
     | 
    
         
            +
                  v.is_a?(Hash) ? v.transform_keys(&:to_sym) : v
         
     | 
| 
       214 
258 
     | 
    
         
             
                end.transform_keys(&:to_sym)
         
     | 
| 
       215 
     | 
    
         
            -
              end
         
     | 
| 
       216 
259 
     | 
    
         | 
| 
      
 260 
     | 
    
         
            +
                puts @config[:simulation][:testlist]
         
     | 
| 
      
 261 
     | 
    
         
            +
              end
         
     | 
| 
      
 262 
     | 
    
         
            +
              
         
     | 
| 
      
 263 
     | 
    
         
            +
              # Navigates to project top (rvvm directory of the RVvM project).
         
     | 
| 
      
 264 
     | 
    
         
            +
              #
         
     | 
| 
      
 265 
     | 
    
         
            +
              # @return [void]
         
     | 
| 
      
 266 
     | 
    
         
            +
              #
         
     | 
| 
      
 267 
     | 
    
         
            +
              # @since 0.8.0
         
     | 
| 
       217 
268 
     | 
    
         
             
              def self.prj_top
         
     | 
| 
       218 
269 
     | 
    
         
             
                Dir.chdir(@config_path)
         
     | 
| 
       219 
270 
     | 
    
         
             
              end
         
     | 
| 
       220 
     | 
    
         
            -
             
     | 
| 
      
 271 
     | 
    
         
            +
              
         
     | 
| 
      
 272 
     | 
    
         
            +
              # Compiles project SystemVerilog sources using xvlog.
         
     | 
| 
      
 273 
     | 
    
         
            +
              #
         
     | 
| 
      
 274 
     | 
    
         
            +
              # @return [void]
         
     | 
| 
      
 275 
     | 
    
         
            +
              #
         
     | 
| 
      
 276 
     | 
    
         
            +
              # @since 0.8.0
         
     | 
| 
       221 
277 
     | 
    
         
             
              def self.compile
         
     | 
| 
       222 
278 
     | 
    
         
             
                cmd_args = @config[:compilation][:args]
         
     | 
| 
       223 
279 
     | 
    
         
             
                logname = @args[:complog] || File.join([@config[:project][:logDir], @config[:compilation][:logDir], @config[:compilation][:log]])
         
     | 
| 
         @@ -228,7 +284,13 @@ module Rvvm 
     | 
|
| 
       228 
284 
     | 
    
         
             
                cmd = "xvlog -sv -f #{complist} -log #{logname} #{cmd_args}"
         
     | 
| 
       229 
285 
     | 
    
         
             
                execute(cmd)
         
     | 
| 
       230 
286 
     | 
    
         
             
              end
         
     | 
| 
       231 
     | 
    
         
            -
             
     | 
| 
      
 287 
     | 
    
         
            +
              
         
     | 
| 
      
 288 
     | 
    
         
            +
              # Compiles C/C++ sources into a shared library to use during
         
     | 
| 
      
 289 
     | 
    
         
            +
              # elaboration and simulation using DPI-C.
         
     | 
| 
      
 290 
     | 
    
         
            +
              #
         
     | 
| 
      
 291 
     | 
    
         
            +
              # @return [void]
         
     | 
| 
      
 292 
     | 
    
         
            +
              #
         
     | 
| 
      
 293 
     | 
    
         
            +
              # @Since 0.9.0
         
     | 
| 
       232 
294 
     | 
    
         
             
              def self.dpi_c
         
     | 
| 
       233 
295 
     | 
    
         
             
                cmd_args = @config[:dpi][:args]
         
     | 
| 
       234 
296 
     | 
    
         
             
                dpilist = @args[:dpilist] || @config[:dpi][:list]
         
     | 
| 
         @@ -238,7 +300,12 @@ module Rvvm 
     | 
|
| 
       238 
300 
     | 
    
         
             
                cmd = "sxc -f #{dpilist} #{cmd_args}"
         
     | 
| 
       239 
301 
     | 
    
         
             
                execute(cmd)
         
     | 
| 
       240 
302 
     | 
    
         
             
              end
         
     | 
| 
       241 
     | 
    
         
            -
             
     | 
| 
      
 303 
     | 
    
         
            +
              
         
     | 
| 
      
 304 
     | 
    
         
            +
              # Elaborates project into a testbench snapshot using xelab.
         
     | 
| 
      
 305 
     | 
    
         
            +
              #
         
     | 
| 
      
 306 
     | 
    
         
            +
              # @return [void]
         
     | 
| 
      
 307 
     | 
    
         
            +
              #
         
     | 
| 
      
 308 
     | 
    
         
            +
              # @since 0.8.0
         
     | 
| 
       242 
309 
     | 
    
         
             
              def self.elaborate
         
     | 
| 
       243 
310 
     | 
    
         
             
                cmd_args = @config[:elaboration][:args]
         
     | 
| 
       244 
311 
     | 
    
         
             
                cmd_args << " -sv_lib dpi" if @args[:dpi] || @args[:dpilib] || @config[:dpi][:dpilib] == 1
         
     | 
| 
         @@ -255,7 +322,12 @@ module Rvvm 
     | 
|
| 
       255 
322 
     | 
    
         
             
                cmd = "xelab #{tb_top} -relax -s #{tb} -timescale #{timescale} -log #{logname} #{cmd_args}"
         
     | 
| 
       256 
323 
     | 
    
         
             
                execute(cmd)
         
     | 
| 
       257 
324 
     | 
    
         
             
              end
         
     | 
| 
       258 
     | 
    
         
            -
             
     | 
| 
      
 325 
     | 
    
         
            +
              
         
     | 
| 
      
 326 
     | 
    
         
            +
              # Runs UVM test simulation on an elaborated testbench snapshot using xrun.
         
     | 
| 
      
 327 
     | 
    
         
            +
              #
         
     | 
| 
      
 328 
     | 
    
         
            +
              # @return [void]
         
     | 
| 
      
 329 
     | 
    
         
            +
              #
         
     | 
| 
      
 330 
     | 
    
         
            +
              # @since 0.8.0
         
     | 
| 
       259 
331 
     | 
    
         
             
              def self.run_sim
         
     | 
| 
       260 
332 
     | 
    
         
             
                cmd_args = @config[:simulation][:args]
         
     | 
| 
       261 
333 
     | 
    
         
             
                if @args[:wave]
         
     | 
| 
         @@ -263,10 +335,12 @@ module Rvvm 
     | 
|
| 
       263 
335 
     | 
    
         
             
                else
         
     | 
| 
       264 
336 
     | 
    
         
             
                  cmd_args << "-R"
         
     | 
| 
       265 
337 
     | 
    
         
             
                end
         
     | 
| 
       266 
     | 
    
         
            -
             
     | 
| 
      
 338 
     | 
    
         
            +
                
         
     | 
| 
      
 339 
     | 
    
         
            +
                # Run simulaton on an array of tests.
         
     | 
| 
      
 340 
     | 
    
         
            +
                # If in not running in batch mode testlist is an array with a single test
         
     | 
| 
       267 
341 
     | 
    
         
             
                test = @args[:test] || @config[:simulation][:defTest]
         
     | 
| 
       268 
     | 
    
         
            -
                # TODO: parse test list
         
     | 
| 
       269 
342 
     | 
    
         
             
                testlist = [test]
         
     | 
| 
      
 343 
     | 
    
         
            +
                testlist = @args[:testlist] || @config[:simulation][:testlist] if @args[:batch] || @config[:simulation][:batch] == 1
         
     | 
| 
       270 
344 
     | 
    
         | 
| 
       271 
345 
     | 
    
         
             
                tb = @args[:simtb] || @args[:tb] || @config[:elaboration][:tb]
         
     | 
| 
       272 
346 
     | 
    
         | 
| 
         @@ -276,7 +350,7 @@ module Rvvm 
     | 
|
| 
       276 
350 
     | 
    
         
             
                  puts "RVvM: Running test #{i + 1}/#{testlist.size}: #{simtest}"
         
     | 
| 
       277 
351 
     | 
    
         | 
| 
       278 
352 
     | 
    
         
             
                  logname = File.join([@config[:project][:logDir], @config[:simulation][:logDir], @config[:simulation][:log]])
         
     | 
| 
       279 
     | 
    
         
            -
                  logname = Utils. 
     | 
| 
      
 353 
     | 
    
         
            +
                  logname = Utils.interpolate(logname, { testname: simtest })
         
     | 
| 
       280 
354 
     | 
    
         | 
| 
       281 
355 
     | 
    
         
             
                  verb = "UVM_#{@args[:verb] || @config[:simulation][:verbosity]}"
         
     | 
| 
       282 
356 
     | 
    
         | 
| 
         @@ -285,6 +359,11 @@ module Rvvm 
     | 
|
| 
       285 
359 
     | 
    
         
             
                end
         
     | 
| 
       286 
360 
     | 
    
         
             
              end
         
     | 
| 
       287 
361 
     | 
    
         | 
| 
      
 362 
     | 
    
         
            +
              # Runs a pure SystemVerilog/Verilog simulation using xrun.
         
     | 
| 
      
 363 
     | 
    
         
            +
              #
         
     | 
| 
      
 364 
     | 
    
         
            +
              # @return [void]
         
     | 
| 
      
 365 
     | 
    
         
            +
              #
         
     | 
| 
      
 366 
     | 
    
         
            +
              # @since 0.9.0
         
     | 
| 
       288 
367 
     | 
    
         
             
              def self.run_sv
         
     | 
| 
       289 
368 
     | 
    
         
             
                cmd_args = @config[:simulation][:args]
         
     | 
| 
       290 
369 
     | 
    
         
             
                tb = @args[:simtb] || @args[:tb] || @config[:elaboration][:tb]
         
     | 
| 
         @@ -295,24 +374,47 @@ module Rvvm 
     | 
|
| 
       295 
374 
     | 
    
         
             
                cmd = "xsim #{tb} -log #{logname} #{cmd_args}"
         
     | 
| 
       296 
375 
     | 
    
         
             
                execute(cmd)
         
     | 
| 
       297 
376 
     | 
    
         
             
              end
         
     | 
| 
       298 
     | 
    
         
            -
             
     | 
| 
      
 377 
     | 
    
         
            +
              
         
     | 
| 
      
 378 
     | 
    
         
            +
              # Opens last generated waveform trace dump to inspect in Vivado GUI.
         
     | 
| 
      
 379 
     | 
    
         
            +
              #
         
     | 
| 
      
 380 
     | 
    
         
            +
              # @return [void]
         
     | 
| 
      
 381 
     | 
    
         
            +
              #
         
     | 
| 
      
 382 
     | 
    
         
            +
              # @since 0.9.0
         
     | 
| 
       299 
383 
     | 
    
         
             
              def self.gui
         
     | 
| 
       300 
384 
     | 
    
         
             
                dump = @args[:wavefile] || "#{@config[:elaboration][:tb]}.wdb"
         
     | 
| 
       301 
385 
     | 
    
         | 
| 
       302 
386 
     | 
    
         
             
                cmd = "xsim --gui #{dump}"
         
     | 
| 
       303 
387 
     | 
    
         
             
                execute(cmd)
         
     | 
| 
       304 
388 
     | 
    
         
             
              end
         
     | 
| 
       305 
     | 
    
         
            -
             
     | 
| 
      
 389 
     | 
    
         
            +
              
         
     | 
| 
      
 390 
     | 
    
         
            +
              # Generates UVM test functional coverage report using xcrg.
         
     | 
| 
      
 391 
     | 
    
         
            +
              #
         
     | 
| 
      
 392 
     | 
    
         
            +
              # @return [void]
         
     | 
| 
      
 393 
     | 
    
         
            +
              #
         
     | 
| 
      
 394 
     | 
    
         
            +
              # @since 0.9.0
         
     | 
| 
       306 
395 
     | 
    
         
             
              def self.coverage
         
     | 
| 
       307 
396 
     | 
    
         
             
                cmd = "xcrg -report_format html -dir xsim.covdb"
         
     | 
| 
       308 
397 
     | 
    
         
             
                execute(cmd)
         
     | 
| 
       309 
398 
     | 
    
         
             
              end
         
     | 
| 
       310 
     | 
    
         
            -
             
     | 
| 
      
 399 
     | 
    
         
            +
              
         
     | 
| 
      
 400 
     | 
    
         
            +
              # Opens last generated functional coverage report in a HTML dashboard.
         
     | 
| 
      
 401 
     | 
    
         
            +
              #
         
     | 
| 
      
 402 
     | 
    
         
            +
              # @return [void]
         
     | 
| 
      
 403 
     | 
    
         
            +
              #
         
     | 
| 
      
 404 
     | 
    
         
            +
              # @since 0.9.0
         
     | 
| 
       311 
405 
     | 
    
         
             
              def self.cov_report
         
     | 
| 
       312 
406 
     | 
    
         
             
                Dir.chdir("xcrg_func_cov_report")
         
     | 
| 
       313 
407 
     | 
    
         
             
                execute("./dashboard.html")
         
     | 
| 
       314 
408 
     | 
    
         
             
              end
         
     | 
| 
       315 
     | 
    
         
            -
             
     | 
| 
      
 409 
     | 
    
         
            +
              
         
     | 
| 
      
 410 
     | 
    
         
            +
              # Generates a SystemVerilog module/interface template.
         
     | 
| 
      
 411 
     | 
    
         
            +
              #
         
     | 
| 
      
 412 
     | 
    
         
            +
              # @param type [String] specifies modudle/itf
         
     | 
| 
      
 413 
     | 
    
         
            +
              # @param name [String] specifies module/itf name
         
     | 
| 
      
 414 
     | 
    
         
            +
              #
         
     | 
| 
      
 415 
     | 
    
         
            +
              # @return [void]
         
     | 
| 
      
 416 
     | 
    
         
            +
              #
         
     | 
| 
      
 417 
     | 
    
         
            +
              # @since 0.9.0
         
     | 
| 
       316 
418 
     | 
    
         
             
              def self.create_module(type, name)
         
     | 
| 
       317 
419 
     | 
    
         
             
                conf = @templates[:module][:conf]
         
     | 
| 
       318 
420 
     | 
    
         
             
                conf[:module] = name
         
     | 
| 
         @@ -329,7 +431,14 @@ module Rvvm 
     | 
|
| 
       329 
431 
     | 
    
         | 
| 
       330 
432 
     | 
    
         
             
                exit(0)
         
     | 
| 
       331 
433 
     | 
    
         
             
              end
         
     | 
| 
       332 
     | 
    
         
            -
             
     | 
| 
      
 434 
     | 
    
         
            +
              
         
     | 
| 
      
 435 
     | 
    
         
            +
              # Generates a SystemVerilog package template.
         
     | 
| 
      
 436 
     | 
    
         
            +
              #
         
     | 
| 
      
 437 
     | 
    
         
            +
              # @param name [String] specifies package name
         
     | 
| 
      
 438 
     | 
    
         
            +
              #
         
     | 
| 
      
 439 
     | 
    
         
            +
              # @return [void]
         
     | 
| 
      
 440 
     | 
    
         
            +
              #
         
     | 
| 
      
 441 
     | 
    
         
            +
              # @since 0.9.0
         
     | 
| 
       333 
442 
     | 
    
         
             
              def self.create_pkg(name)
         
     | 
| 
       334 
443 
     | 
    
         
             
                conf = @templates[:package][:conf]
         
     | 
| 
       335 
444 
     | 
    
         
             
                conf[:package] = name
         
     | 
| 
         @@ -345,7 +454,14 @@ module Rvvm 
     | 
|
| 
       345 
454 
     | 
    
         | 
| 
       346 
455 
     | 
    
         
             
                exit(0)
         
     | 
| 
       347 
456 
     | 
    
         
             
              end
         
     | 
| 
       348 
     | 
    
         
            -
             
     | 
| 
      
 457 
     | 
    
         
            +
              
         
     | 
| 
      
 458 
     | 
    
         
            +
              # Generates a generic SystemVerilog template file.
         
     | 
| 
      
 459 
     | 
    
         
            +
              #
         
     | 
| 
      
 460 
     | 
    
         
            +
              # @param name [String] specifies template name
         
     | 
| 
      
 461 
     | 
    
         
            +
              #
         
     | 
| 
      
 462 
     | 
    
         
            +
              # @return [void]
         
     | 
| 
      
 463 
     | 
    
         
            +
              #
         
     | 
| 
      
 464 
     | 
    
         
            +
              # @since 0.9.0
         
     | 
| 
       349 
465 
     | 
    
         
             
              def self.create_svfile(name)
         
     | 
| 
       350 
466 
     | 
    
         
             
                conf = @templates[:svfile][:conf]
         
     | 
| 
       351 
467 
     | 
    
         
             
                conf[:NAME] = name.upcase
         
     | 
| 
         @@ -360,7 +476,12 @@ module Rvvm 
     | 
|
| 
       360 
476 
     | 
    
         | 
| 
       361 
477 
     | 
    
         
             
                exit(0)
         
     | 
| 
       362 
478 
     | 
    
         
             
              end
         
     | 
| 
       363 
     | 
    
         
            -
             
     | 
| 
      
 479 
     | 
    
         
            +
              
         
     | 
| 
      
 480 
     | 
    
         
            +
              # Runs rvvm calling its methods based on provided script args.
         
     | 
| 
      
 481 
     | 
    
         
            +
              #
         
     | 
| 
      
 482 
     | 
    
         
            +
              # @return [void]
         
     | 
| 
      
 483 
     | 
    
         
            +
              #
         
     | 
| 
      
 484 
     | 
    
         
            +
              # @since 0.8.0
         
     | 
| 
       364 
485 
     | 
    
         
             
              def self.run
         
     | 
| 
       365 
486 
     | 
    
         
             
                create_new_project(@args[:new]) if @args[:new]
         
     | 
| 
       366 
487 
     | 
    
         | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: rvvm
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.9. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.9.3
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - mrbya
         
     | 
| 
         @@ -26,6 +26,7 @@ files: 
     | 
|
| 
       26 
26 
     | 
    
         
             
            - LICENSE.txt
         
     | 
| 
       27 
27 
     | 
    
         
             
            - README.md
         
     | 
| 
       28 
28 
     | 
    
         
             
            - Rakefile
         
     | 
| 
      
 29 
     | 
    
         
            +
            - bin/sandbox
         
     | 
| 
       29 
30 
     | 
    
         
             
            - exe/rvvm
         
     | 
| 
       30 
31 
     | 
    
         
             
            - lib/rvvm.rb
         
     | 
| 
       31 
32 
     | 
    
         
             
            - lib/rvvm/templates.rb
         
     |