rvvm 0.9.5 → 1.0.0
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 +16 -0
 - data/lib/rvvm/crayons.rb +135 -0
 - data/lib/rvvm/templates.rb +3 -3
 - data/lib/rvvm/utils.rb +6 -4
 - data/lib/rvvm/version.rb +1 -1
 - data/lib/rvvm.rb +129 -59
 - 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: 9232781d6d02b88aa6d9442091845ad5a167046cc6149fffa4b69323dbcef3f2
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: b1777bfa093994e1d9e6abac38aea4e286fb13099a9f1fdb1ad4c37daeb5b134
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: a3a0253c53db3ffba91ffa310b0cba9001f5b5d34efd70cdc1f85fef13e09149ed0afcf117ebec4e28d22aa1c1a31e324b963a23515a6ab52dba6423f43e5d0d
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 17c5b7eb71ac667fff426a7570c8e86f98a0a3ddfbc59d034fbb24820074799cbc8cd595fa5f0666e8dc60e4edd9c992e6048497e8f0b2382ee4835689b9d878
         
     | 
    
        data/CHANGELOG.md
    CHANGED
    
    | 
         @@ -129,3 +129,19 @@ 
     | 
|
| 
       129 
129 
     | 
    
         
             
            3. Elaboration and simulation custom waveform trace dump file
         
     | 
| 
       130 
130 
     | 
    
         
             
            4. Project template files regeneration/restoration to default
         
     | 
| 
       131 
131 
     | 
    
         | 
| 
      
 132 
     | 
    
         
            +
            ## [1.0.0] - 2024-09-17
         
     | 
| 
      
 133 
     | 
    
         
            +
             
     | 
| 
      
 134 
     | 
    
         
            +
            ### Added:
         
     | 
| 
      
 135 
     | 
    
         
            +
             
     | 
| 
      
 136 
     | 
    
         
            +
            1. CLI log graphics (Crayons module)
         
     | 
| 
      
 137 
     | 
    
         
            +
            2. Template file generation in pwd
         
     | 
| 
      
 138 
     | 
    
         
            +
             
     | 
| 
      
 139 
     | 
    
         
            +
            ### Fixed:
         
     | 
| 
      
 140 
     | 
    
         
            +
             
     | 
| 
      
 141 
     | 
    
         
            +
            1. Missing testlist arg conversion to array
         
     | 
| 
      
 142 
     | 
    
         
            +
            2. Module/itf template creation
         
     | 
| 
      
 143 
     | 
    
         
            +
             
     | 
| 
      
 144 
     | 
    
         
            +
            ### TBI:
         
     | 
| 
      
 145 
     | 
    
         
            +
             
     | 
| 
      
 146 
     | 
    
         
            +
            1. Elaboration and simulation custom waveform trace dump file
         
     | 
| 
      
 147 
     | 
    
         
            +
            2. Project template files regeneration/restoration to default
         
     | 
    
        data/lib/rvvm/crayons.rb
    ADDED
    
    | 
         @@ -0,0 +1,135 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            require "tty-spinner"
         
     | 
| 
      
 4 
     | 
    
         
            +
            require "rainbow/refinement"
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            using Rainbow
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            # Utility module providing spinners and stdout mesage formatting.
         
     | 
| 
      
 9 
     | 
    
         
            +
            #
         
     | 
| 
      
 10 
     | 
    
         
            +
            # @example
         
     | 
| 
      
 11 
     | 
    
         
            +
            #   require 'rvvm/crayons'
         
     | 
| 
      
 12 
     | 
    
         
            +
            #
         
     | 
| 
      
 13 
     | 
    
         
            +
            #   Crayons.spinner_start("New task...")
         
     | 
| 
      
 14 
     | 
    
         
            +
            #
         
     | 
| 
      
 15 
     | 
    
         
            +
            #   # do stuff
         
     | 
| 
      
 16 
     | 
    
         
            +
            #
         
     | 
| 
      
 17 
     | 
    
         
            +
            #   Crayons.spinner_log("Halfway done! ^^")
         
     | 
| 
      
 18 
     | 
    
         
            +
            #
         
     | 
| 
      
 19 
     | 
    
         
            +
            #   # do some more stuff
         
     | 
| 
      
 20 
     | 
    
         
            +
            #
         
     | 
| 
      
 21 
     | 
    
         
            +
            #   Crayons.spinner_stop("Completed!", true)
         
     | 
| 
      
 22 
     | 
    
         
            +
            #   Crayons.log_pass("Oof, im done now...")
         
     | 
| 
      
 23 
     | 
    
         
            +
            #
         
     | 
| 
      
 24 
     | 
    
         
            +
            # @since 1.0.0
         
     | 
| 
      
 25 
     | 
    
         
            +
            module Crayons
         
     | 
| 
      
 26 
     | 
    
         
            +
              # module variables to hold instances of a
         
     | 
| 
      
 27 
     | 
    
         
            +
              # running spinner and its thread
         
     | 
| 
      
 28 
     | 
    
         
            +
              @spinner = nil
         
     | 
| 
      
 29 
     | 
    
         
            +
              @thread = nil
         
     | 
| 
      
 30 
     | 
    
         
            +
              @thread_paused = false
         
     | 
| 
      
 31 
     | 
    
         
            +
              @spinner_running = false
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
              # Returns spinner status.
         
     | 
| 
      
 34 
     | 
    
         
            +
              #
         
     | 
| 
      
 35 
     | 
    
         
            +
              # @returns @spinner_running [Boolean] spinner status
         
     | 
| 
      
 36 
     | 
    
         
            +
              def self.spinner_running?
         
     | 
| 
      
 37 
     | 
    
         
            +
                @spinner_running
         
     | 
| 
      
 38 
     | 
    
         
            +
              end
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
              # Starts a cli spinner appending the provided message.
         
     | 
| 
      
 41 
     | 
    
         
            +
              #
         
     | 
| 
      
 42 
     | 
    
         
            +
              # @param message [String] text to append to the spinner
         
     | 
| 
      
 43 
     | 
    
         
            +
              #
         
     | 
| 
      
 44 
     | 
    
         
            +
              # @return [void]
         
     | 
| 
      
 45 
     | 
    
         
            +
              #
         
     | 
| 
      
 46 
     | 
    
         
            +
              # @since 1.0.0
         
     | 
| 
      
 47 
     | 
    
         
            +
              def self.spinner_start(message)
         
     | 
| 
      
 48 
     | 
    
         
            +
                sleep(0.1)
         
     | 
| 
      
 49 
     | 
    
         
            +
                print "\r\e[K"
         
     | 
| 
      
 50 
     | 
    
         
            +
                @spinner = TTY::Spinner.new("[:spinner] #{message}")
         
     | 
| 
      
 51 
     | 
    
         
            +
                @spinner_running = true
         
     | 
| 
      
 52 
     | 
    
         
            +
                @thread = Thread.new do
         
     | 
| 
      
 53 
     | 
    
         
            +
                  @spinner.auto_spin
         
     | 
| 
      
 54 
     | 
    
         
            +
                  sleep(0.1) while @thread_paused
         
     | 
| 
      
 55 
     | 
    
         
            +
                end
         
     | 
| 
      
 56 
     | 
    
         
            +
              end
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
              # Pauses spinner thread execution to enable uninterrupted stdout outputs.
         
     | 
| 
      
 59 
     | 
    
         
            +
              #
         
     | 
| 
      
 60 
     | 
    
         
            +
              # @return [void]
         
     | 
| 
      
 61 
     | 
    
         
            +
              #
         
     | 
| 
      
 62 
     | 
    
         
            +
              # @since 1.0.0
         
     | 
| 
      
 63 
     | 
    
         
            +
              def self.spinner_pause
         
     | 
| 
      
 64 
     | 
    
         
            +
                return unless @spinner_running
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
                print "\r\e[K"
         
     | 
| 
      
 67 
     | 
    
         
            +
                @thread_paused = true
         
     | 
| 
      
 68 
     | 
    
         
            +
              end
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
              # Resumes spinner thread execution.
         
     | 
| 
      
 71 
     | 
    
         
            +
              #
         
     | 
| 
      
 72 
     | 
    
         
            +
              # @return [void]
         
     | 
| 
      
 73 
     | 
    
         
            +
              #
         
     | 
| 
      
 74 
     | 
    
         
            +
              # @since 1.0.0
         
     | 
| 
      
 75 
     | 
    
         
            +
              def self.spinner_resume
         
     | 
| 
      
 76 
     | 
    
         
            +
                @thread_paused = false if @spinner_running
         
     | 
| 
      
 77 
     | 
    
         
            +
              end
         
     | 
| 
      
 78 
     | 
    
         
            +
             
     | 
| 
      
 79 
     | 
    
         
            +
              # Stops spinner printing a formated status message.
         
     | 
| 
      
 80 
     | 
    
         
            +
              #
         
     | 
| 
      
 81 
     | 
    
         
            +
              # @param message [String] status message to print
         
     | 
| 
      
 82 
     | 
    
         
            +
              # @param exit [Boolean] return code (true - success, false - error)
         
     | 
| 
      
 83 
     | 
    
         
            +
              #
         
     | 
| 
      
 84 
     | 
    
         
            +
              # @return [void]
         
     | 
| 
      
 85 
     | 
    
         
            +
              #
         
     | 
| 
      
 86 
     | 
    
         
            +
              # @since 1.0.0
         
     | 
| 
      
 87 
     | 
    
         
            +
              def self.spinner_stop(message = nil, exit)
         
     | 
| 
      
 88 
     | 
    
         
            +
                return unless @spinner_running
         
     | 
| 
      
 89 
     | 
    
         
            +
             
     | 
| 
      
 90 
     | 
    
         
            +
                spinner_message = message || (exit ? "Done!" : "Failed!")
         
     | 
| 
      
 91 
     | 
    
         
            +
                exit ? @spinner.success(spinner_message.green) : @spinner.error(spinner_message.red)
         
     | 
| 
      
 92 
     | 
    
         
            +
                @thread.join
         
     | 
| 
      
 93 
     | 
    
         
            +
                sleep(0.1)
         
     | 
| 
      
 94 
     | 
    
         
            +
                @spinner_running = false
         
     | 
| 
      
 95 
     | 
    
         
            +
                print "\r\e[K"
         
     | 
| 
      
 96 
     | 
    
         
            +
              end
         
     | 
| 
      
 97 
     | 
    
         
            +
             
     | 
| 
      
 98 
     | 
    
         
            +
              # Logs a message during spinner execution removing the need
         
     | 
| 
      
 99 
     | 
    
         
            +
              # to manually pause and resume spinner.
         
     | 
| 
      
 100 
     | 
    
         
            +
              #
         
     | 
| 
      
 101 
     | 
    
         
            +
              # If a spinner is not running simply prints message.
         
     | 
| 
      
 102 
     | 
    
         
            +
              #
         
     | 
| 
      
 103 
     | 
    
         
            +
              # @param message [String] message to prin
         
     | 
| 
      
 104 
     | 
    
         
            +
              #
         
     | 
| 
      
 105 
     | 
    
         
            +
              # @return [void]
         
     | 
| 
      
 106 
     | 
    
         
            +
              #
         
     | 
| 
      
 107 
     | 
    
         
            +
              # @since 1.0.0
         
     | 
| 
      
 108 
     | 
    
         
            +
              def self.spinner_log(message)
         
     | 
| 
      
 109 
     | 
    
         
            +
                spinner_pause if @spinner_running
         
     | 
| 
      
 110 
     | 
    
         
            +
                puts message
         
     | 
| 
      
 111 
     | 
    
         
            +
                spinner_resume if @spinner_running
         
     | 
| 
      
 112 
     | 
    
         
            +
              end
         
     | 
| 
      
 113 
     | 
    
         
            +
             
     | 
| 
      
 114 
     | 
    
         
            +
              # Logs a green text message to stdout.
         
     | 
| 
      
 115 
     | 
    
         
            +
              #
         
     | 
| 
      
 116 
     | 
    
         
            +
              # @param message [String] message to print
         
     | 
| 
      
 117 
     | 
    
         
            +
              #
         
     | 
| 
      
 118 
     | 
    
         
            +
              # @return [void]
         
     | 
| 
      
 119 
     | 
    
         
            +
              #
         
     | 
| 
      
 120 
     | 
    
         
            +
              # @since 1.0.0
         
     | 
| 
      
 121 
     | 
    
         
            +
              def self.log_pass(message)
         
     | 
| 
      
 122 
     | 
    
         
            +
                puts message.green
         
     | 
| 
      
 123 
     | 
    
         
            +
              end
         
     | 
| 
      
 124 
     | 
    
         
            +
             
     | 
| 
      
 125 
     | 
    
         
            +
              # Logs a red text message to stdout.
         
     | 
| 
      
 126 
     | 
    
         
            +
              #
         
     | 
| 
      
 127 
     | 
    
         
            +
              # @param message [String] message to print
         
     | 
| 
      
 128 
     | 
    
         
            +
              #
         
     | 
| 
      
 129 
     | 
    
         
            +
              # @return [void]
         
     | 
| 
      
 130 
     | 
    
         
            +
              #
         
     | 
| 
      
 131 
     | 
    
         
            +
              # @since 1.0.0
         
     | 
| 
      
 132 
     | 
    
         
            +
              def self.log_error(message)
         
     | 
| 
      
 133 
     | 
    
         
            +
                puts message.red
         
     | 
| 
      
 134 
     | 
    
         
            +
              end
         
     | 
| 
      
 135 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/rvvm/templates.rb
    CHANGED
    
    | 
         @@ -136,7 +136,7 @@ endmodule: ${prjname}_tb_top 
     | 
|
| 
       136 
136 
     | 
    
         
             
                  type: "module",
         
     | 
| 
       137 
137 
     | 
    
         
             
                  module: "best_rtl_module_ever",
         
     | 
| 
       138 
138 
     | 
    
         
             
                  date: "01/01/2024 00:00",
         
     | 
| 
       139 
     | 
    
         
            -
                  prjname: " 
     | 
| 
      
 139 
     | 
    
         
            +
                  prjname: " ",
         
     | 
| 
       140 
140 
     | 
    
         
             
                  company: " ",
         
     | 
| 
       141 
141 
     | 
    
         
             
                  username: "me"
         
     | 
| 
       142 
142 
     | 
    
         
             
                },
         
     | 
| 
         @@ -175,7 +175,7 @@ end${type} 
     | 
|
| 
       175 
175 
     | 
    
         
             
                  package: "best_rtl_pkg",
         
     | 
| 
       176 
176 
     | 
    
         
             
                  PACKAGE: "BEST_RTL_PACKAGE",
         
     | 
| 
       177 
177 
     | 
    
         
             
                  date: "01/01/2024 00:00",
         
     | 
| 
       178 
     | 
    
         
            -
                  prjname: " 
     | 
| 
      
 178 
     | 
    
         
            +
                  prjname: " ",
         
     | 
| 
       179 
179 
     | 
    
         
             
                  company: " ",
         
     | 
| 
       180 
180 
     | 
    
         
             
                  username: "me"
         
     | 
| 
       181 
181 
     | 
    
         
             
                },
         
     | 
| 
         @@ -215,7 +215,7 @@ endpackage 
     | 
|
| 
       215 
215 
     | 
    
         
             
                conf: {
         
     | 
| 
       216 
216 
     | 
    
         
             
                  NAME: "BEST_RTL_FILE",
         
     | 
| 
       217 
217 
     | 
    
         
             
                  date: "01/01/2024 00:00",
         
     | 
| 
       218 
     | 
    
         
            -
                  prjname: " 
     | 
| 
      
 218 
     | 
    
         
            +
                  prjname: " ",
         
     | 
| 
       219 
219 
     | 
    
         
             
                  company: " ",
         
     | 
| 
       220 
220 
     | 
    
         
             
                  username: "me"
         
     | 
| 
       221 
221 
     | 
    
         
             
                },
         
     | 
    
        data/lib/rvvm/utils.rb
    CHANGED
    
    | 
         @@ -1,5 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # frozen_string_literal: true
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
      
 3 
     | 
    
         
            +
            require_relative "crayons"
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
       3 
5 
     | 
    
         
             
            # Utils module providing utilities and helper methods to rvvm.
         
     | 
| 
       4 
6 
     | 
    
         
             
            #
         
     | 
| 
       5 
7 
     | 
    
         
             
            # Mainly used to generate files and templates.
         
     | 
| 
         @@ -35,7 +37,8 @@ module Utils 
     | 
|
| 
       35 
37 
     | 
    
         
             
                  file.write(content)
         
     | 
| 
       36 
38 
     | 
    
         
             
                end
         
     | 
| 
       37 
39 
     | 
    
         
             
              rescue StandardError => e
         
     | 
| 
       38 
     | 
    
         
            -
                 
     | 
| 
      
 40 
     | 
    
         
            +
                Crayons.spinner_stop("Error!", false) if Crayons.spinner_running?
         
     | 
| 
      
 41 
     | 
    
         
            +
                Crayons.log_error("\nFailed to create a file!\n #{e.message}")
         
     | 
| 
       39 
42 
     | 
    
         
             
              end
         
     | 
| 
       40 
43 
     | 
    
         | 
| 
       41 
44 
     | 
    
         
             
              # Generates a file based on a template.
         
     | 
| 
         @@ -54,7 +57,7 @@ module Utils 
     | 
|
| 
       54 
57 
     | 
    
         
             
                filename = name || template[:file][:name]
         
     | 
| 
       55 
58 
     | 
    
         
             
                filepath = path || template[:file][:path]
         
     | 
| 
       56 
59 
     | 
    
         | 
| 
       57 
     | 
    
         
            -
                 
     | 
| 
      
 60 
     | 
    
         
            +
                Crayons.spinner_log("Generating: #{filepath}/#{filename}")
         
     | 
| 
       58 
61 
     | 
    
         
             
                gen_file("#{filepath}/#{filename}", content)
         
     | 
| 
       59 
62 
     | 
    
         
             
              end
         
     | 
| 
       60 
63 
     | 
    
         | 
| 
         @@ -96,7 +99,7 @@ module Utils 
     | 
|
| 
       96 
99 
     | 
    
         
             
                  username = handle.read
         
     | 
| 
       97 
100 
     | 
    
         
             
                end
         
     | 
| 
       98 
101 
     | 
    
         | 
| 
       99 
     | 
    
         
            -
                username 
     | 
| 
      
 102 
     | 
    
         
            +
                username&.strip!
         
     | 
| 
       100 
103 
     | 
    
         
             
                username
         
     | 
| 
       101 
104 
     | 
    
         
             
              end
         
     | 
| 
       102 
105 
     | 
    
         | 
| 
         @@ -113,7 +116,6 @@ module Utils 
     | 
|
| 
       113 
116 
     | 
    
         
             
                array.each do |key|
         
     | 
| 
       114 
117 
     | 
    
         
             
                  return false if hash[key]
         
     | 
| 
       115 
118 
     | 
    
         
             
                end
         
     | 
| 
       116 
     | 
    
         
            -
             
     | 
| 
       117 
119 
     | 
    
         
             
                true
         
     | 
| 
       118 
120 
     | 
    
         
             
              end
         
     | 
| 
       119 
121 
     | 
    
         
             
            end
         
     | 
    
        data/lib/rvvm/version.rb
    CHANGED
    
    
    
        data/lib/rvvm.rb
    CHANGED
    
    | 
         @@ -28,6 +28,7 @@ module Rvvm 
     | 
|
| 
       28 
28 
     | 
    
         
             
              @templates = Templates.load
         
     | 
| 
       29 
29 
     | 
    
         
             
              @config_path = nil
         
     | 
| 
       30 
30 
     | 
    
         
             
              @config = nil
         
     | 
| 
      
 31 
     | 
    
         
            +
              @formatted_time = nil
         
     | 
| 
       31 
32 
     | 
    
         | 
| 
       32 
33 
     | 
    
         
             
              # Instance variables to hold parsed args and required arg symbol list
         
     | 
| 
       33 
34 
     | 
    
         
             
              @args = {}
         
     | 
| 
         @@ -52,15 +53,15 @@ module Rvvm 
     | 
|
| 
       52 
53 
     | 
    
         
             
              # Script argument parsing block.
         
     | 
| 
       53 
54 
     | 
    
         
             
              # Runs on loading the module using require.
         
     | 
| 
       54 
55 
     | 
    
         
             
              OptionParser.new do |args|
         
     | 
| 
      
 56 
     | 
    
         
            +
                current_time = Time.now
         
     | 
| 
      
 57 
     | 
    
         
            +
                @formatted_time = current_time.strftime("%Y-%m-%d %H:%M:%S")
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
       55 
59 
     | 
    
         
             
                args.on("-h", "--help", "Shows this help") do
         
     | 
| 
       56 
60 
     | 
    
         
             
                  puts "\nRVvM - Ruby Vivado Manager\n\n"
         
     | 
| 
       57 
61 
     | 
    
         
             
                  puts "\tRVvM is a Ruby based tool to manage, compile, elaborate and simulate SystemVerilog and UVM based projects"
         
     | 
| 
       58 
62 
     | 
    
         
             
                  puts "\tusing Xilinx Vivado xvlog, xelab, xrun and xsc.\n\n"
         
     | 
| 
       59 
63 
     | 
    
         
             
                  puts args
         
     | 
| 
       60 
64 
     | 
    
         | 
| 
       61 
     | 
    
         
            -
                  @current_time = Time.now
         
     | 
| 
       62 
     | 
    
         
            -
                  @formatted_time = @current_time.strftime("%Y-%m-%d %H:%M:%S")
         
     | 
| 
       63 
     | 
    
         
            -
             
     | 
| 
       64 
65 
     | 
    
         
             
                  req_args = String.new
         
     | 
| 
       65 
66 
     | 
    
         
             
                  @required_args.each do |arg|
         
     | 
| 
       66 
67 
     | 
    
         
             
                    req_args << "--#{arg} "
         
     | 
| 
         @@ -74,11 +75,12 @@ module Rvvm 
     | 
|
| 
       74 
75 
     | 
    
         
             
                end
         
     | 
| 
       75 
76 
     | 
    
         | 
| 
       76 
77 
     | 
    
         
             
                args.on("-n", "--new NAME", "Creates a new project wit the prowided name under pwd")
         
     | 
| 
       77 
     | 
    
         
            -
                args.on("--module NAME", "Creates a SystemVerilog module template (default path: <prj dir>/design/src)")
         
     | 
| 
      
 78 
     | 
    
         
            +
                args.on("-m", "--module NAME", "Creates a SystemVerilog module template (default path: <prj dir>/design/src)")
         
     | 
| 
       78 
79 
     | 
    
         
             
                args.on("--pkg NAME", "Creates a SystemVerilog package template (default path: <prj dir>/design/pkg)")
         
     | 
| 
       79 
80 
     | 
    
         
             
                args.on("--itf NAME", "Creates a SystemVerilog interface template (default path: <prj dir>/design/itf)")
         
     | 
| 
       80 
81 
     | 
    
         
             
                args.on("--svfile NAME", "Creates a generic SystemVerilog file template (default path: <prj dir>/design/src)")
         
     | 
| 
       81 
82 
     | 
    
         
             
                args.on("--path PATH", "Specifies a path relative to <prj dir> when creating a file template")
         
     | 
| 
      
 83 
     | 
    
         
            +
                args.on("--here", "Specifies pwd as the path for template file creation.")
         
     | 
| 
       82 
84 
     | 
    
         
             
                args.on("-c", "--comp", "Compile SystemVerilog sources")
         
     | 
| 
       83 
85 
     | 
    
         
             
                args.on("-e", "--elab", "Elaborates project")
         
     | 
| 
       84 
86 
     | 
    
         
             
                args.on("-r", "--run", "Runs UVM simulation")
         
     | 
| 
         @@ -97,7 +99,7 @@ module Rvvm 
     | 
|
| 
       97 
99 
     | 
    
         
             
                args.on("--simlog LOGNAME", "Specifies simulation log name (overwrites config)")
         
     | 
| 
       98 
100 
     | 
    
         
             
                args.on("--test TESTNAME", "Specifies UVM test to be run by --run (overwrites config)")
         
     | 
| 
       99 
101 
     | 
    
         
             
                args.on("-b", "--batch", "Run a batch of UVM tests from a test list (overwrites config)")
         
     | 
| 
       100 
     | 
    
         
            -
                args.on("--testlist TESTLIST", "Specifies test list for a batch of test run (overwrites config)")
         
     | 
| 
      
 102 
     | 
    
         
            +
                args.on("--testlist TESTLIST", Array, "Specifies test list as a comma separated string for a batch of test run (overwrites config)")
         
     | 
| 
       101 
103 
     | 
    
         
             
                args.on("--verb VERBOSITY", "Specifies UVM verbosity <LOW, MEDIUM, HIGH, FULL, DEBUG> (overwrites config)")
         
     | 
| 
       102 
104 
     | 
    
         
             
                args.on("--simtb TBNAME", "Specifies testbench snapshot for simulation (overwrites config)")
         
     | 
| 
       103 
105 
     | 
    
         
             
                args.on("--dpilist LISTFILE", "Specifies source file list for DPI-C compilation (overwrites config)")
         
     | 
| 
         @@ -121,10 +123,12 @@ module Rvvm 
     | 
|
| 
       121 
123 
     | 
    
         
             
                end
         
     | 
| 
       122 
124 
     | 
    
         | 
| 
       123 
125 
     | 
    
         
             
                # Check if a required arg is provided
         
     | 
| 
       124 
     | 
    
         
            -
                 
     | 
| 
       125 
     | 
    
         
            -
             
     | 
| 
       126 
     | 
    
         
            -
             
     | 
| 
       127 
     | 
    
         
            -
                 
     | 
| 
      
 126 
     | 
    
         
            +
                return unless Utils.all_nil?(@args, @required_args)
         
     | 
| 
      
 127 
     | 
    
         
            +
             
     | 
| 
      
 128 
     | 
    
         
            +
                puts ""
         
     | 
| 
      
 129 
     | 
    
         
            +
                Crayons.log_error("No required options provided!")
         
     | 
| 
      
 130 
     | 
    
         
            +
                puts "For more info use -h or --help\n\n"
         
     | 
| 
      
 131 
     | 
    
         
            +
                exit(1)
         
     | 
| 
       128 
132 
     | 
    
         
             
              end
         
     | 
| 
       129 
133 
     | 
    
         | 
| 
       130 
134 
     | 
    
         
             
              # Argument collision handling and additional settings for
         
     | 
| 
         @@ -159,7 +163,8 @@ module Rvvm 
     | 
|
| 
       159 
163 
     | 
    
         
             
              # @since 0.8.0
         
     | 
| 
       160 
164 
     | 
    
         
             
              def self.execute(command)
         
     | 
| 
       161 
165 
     | 
    
         
             
                if @args[:debug]
         
     | 
| 
       162 
     | 
    
         
            -
                   
     | 
| 
      
 166 
     | 
    
         
            +
                  Crayons.spinner_log(command)
         
     | 
| 
      
 167 
     | 
    
         
            +
                  sleep(1)
         
     | 
| 
       163 
168 
     | 
    
         
             
                else
         
     | 
| 
       164 
169 
     | 
    
         
             
                  system(command)
         
     | 
| 
       165 
170 
     | 
    
         
             
                end
         
     | 
| 
         @@ -173,20 +178,19 @@ module Rvvm 
     | 
|
| 
       173 
178 
     | 
    
         
             
              #
         
     | 
| 
       174 
179 
     | 
    
         
             
              # @since 0.8.0
         
     | 
| 
       175 
180 
     | 
    
         
             
              def self.create_new_project(name)
         
     | 
| 
       176 
     | 
    
         
            -
                puts "\nRVvM: Generating new project: #{name} ...\n"
         
     | 
| 
       177 
     | 
    
         
            -
             
     | 
| 
       178 
181 
     | 
    
         
             
                if File.exist?(name)
         
     | 
| 
       179 
     | 
    
         
            -
                  print " 
     | 
| 
      
 182 
     | 
    
         
            +
                  print "\nDirectory #{name} already exists. Do you want to overwrite it? [y/n] "
         
     | 
| 
       180 
183 
     | 
    
         
             
                  input = gets.chomp
         
     | 
| 
       181 
     | 
    
         
            -
                  puts " 
     | 
| 
      
 184 
     | 
    
         
            +
                  puts ""
         
     | 
| 
       182 
185 
     | 
    
         | 
| 
       183 
     | 
    
         
            -
                   
     | 
| 
       184 
     | 
    
         
            -
             
     | 
| 
       185 
     | 
    
         
            -
             
     | 
| 
       186 
     | 
    
         
            -
             
     | 
| 
       187 
     | 
    
         
            -
                  end
         
     | 
| 
      
 186 
     | 
    
         
            +
                  exit(0) unless input == "y"
         
     | 
| 
      
 187 
     | 
    
         
            +
                  FileUtils.rm_rf(name)
         
     | 
| 
      
 188 
     | 
    
         
            +
                else
         
     | 
| 
      
 189 
     | 
    
         
            +
                  puts ""
         
     | 
| 
       188 
190 
     | 
    
         
             
                end
         
     | 
| 
       189 
191 
     | 
    
         | 
| 
      
 192 
     | 
    
         
            +
                Crayons.spinner_start("Generating new project: #{name}...")
         
     | 
| 
      
 193 
     | 
    
         
            +
             
     | 
| 
       190 
194 
     | 
    
         
             
                FileUtils.mkdir(name)
         
     | 
| 
       191 
195 
     | 
    
         
             
                Dir.chdir(name)
         
     | 
| 
       192 
196 
     | 
    
         | 
| 
         @@ -236,16 +240,20 @@ module Rvvm 
     | 
|
| 
       236 
240 
     | 
    
         
             
                temp_conf[:PRJNAME] = name.upcase
         
     | 
| 
       237 
241 
     | 
    
         
             
                Utils.gen_template(@templates[:tbtop], "#{name}_tb_top.sv", temp_conf)
         
     | 
| 
       238 
242 
     | 
    
         | 
| 
       239 
     | 
    
         
            -
                 
     | 
| 
      
 243 
     | 
    
         
            +
                Crayons.spinner_log(" ")
         
     | 
| 
      
 244 
     | 
    
         
            +
                Crayons.spinner_pause
         
     | 
| 
       240 
245 
     | 
    
         
             
                system("git init")
         
     | 
| 
       241 
246 
     | 
    
         
             
                system("git add .")
         
     | 
| 
       242 
247 
     | 
    
         
             
                system('git commit -am "Initial commit"')
         
     | 
| 
      
 248 
     | 
    
         
            +
                Crayons.spinner_resume
         
     | 
| 
       243 
249 
     | 
    
         | 
| 
       244 
     | 
    
         
            -
                 
     | 
| 
      
 250 
     | 
    
         
            +
                Crayons.spinner_stop("Done!", true)
         
     | 
| 
      
 251 
     | 
    
         
            +
                Crayons.log_pass("\nRVvM: New project generated. ^^\n\n")
         
     | 
| 
       245 
252 
     | 
    
         | 
| 
       246 
253 
     | 
    
         
             
                exit(0)
         
     | 
| 
       247 
254 
     | 
    
         
             
              rescue StandardError => e
         
     | 
| 
       248 
     | 
    
         
            -
                 
     | 
| 
      
 255 
     | 
    
         
            +
                Crayons.spinner_stop("Error!", false) if Crayons.spinner_running?
         
     | 
| 
      
 256 
     | 
    
         
            +
                Crayons.log_error("RVvM failed to create project...\n\n#{e.message}\n")
         
     | 
| 
       249 
257 
     | 
    
         
             
                exit(1)
         
     | 
| 
       250 
258 
     | 
    
         
             
              end
         
     | 
| 
       251 
259 
     | 
    
         | 
| 
         @@ -256,14 +264,15 @@ module Rvvm 
     | 
|
| 
       256 
264 
     | 
    
         
             
              #
         
     | 
| 
       257 
265 
     | 
    
         
             
              # @since 0.8.0
         
     | 
| 
       258 
266 
     | 
    
         
             
              def self.load_config
         
     | 
| 
       259 
     | 
    
         
            -
                puts " 
     | 
| 
      
 267 
     | 
    
         
            +
                puts ""
         
     | 
| 
      
 268 
     | 
    
         
            +
                Crayons.spinner_start("Loading RVvM project config...")
         
     | 
| 
       260 
269 
     | 
    
         | 
| 
       261 
270 
     | 
    
         
             
                @config_path = Utils.find_file_dir("rvvmconf.json", ".")
         
     | 
| 
       262 
271 
     | 
    
         
             
                json_file = File.read("#{@config_path}/rvvmconf.json") if @config_path
         
     | 
| 
       263 
272 
     | 
    
         | 
| 
       264 
273 
     | 
    
         
             
                unless json_file
         
     | 
| 
       265 
     | 
    
         
            -
                   
     | 
| 
       266 
     | 
    
         
            -
                   
     | 
| 
      
 274 
     | 
    
         
            +
                  Crayons.log_error("     Failed to load config file!\n")
         
     | 
| 
      
 275 
     | 
    
         
            +
                  Crayons.log_error("     Make sure you are inside an RVvM project.\n\n")
         
     | 
| 
       267 
276 
     | 
    
         
             
                  exit(1)
         
     | 
| 
       268 
277 
     | 
    
         
             
                end
         
     | 
| 
       269 
278 
     | 
    
         | 
| 
         @@ -274,8 +283,11 @@ module Rvvm 
     | 
|
| 
       274 
283 
     | 
    
         
             
                    v.transform_keys(&:to_sym) if v.instance_of?(Hash)
         
     | 
| 
       275 
284 
     | 
    
         
             
                  end.transform_keys(&:to_sym)
         
     | 
| 
       276 
285 
     | 
    
         
             
                end
         
     | 
| 
      
 286 
     | 
    
         
            +
             
     | 
| 
      
 287 
     | 
    
         
            +
                Crayons.spinner_stop(nil, true)
         
     | 
| 
      
 288 
     | 
    
         
            +
                puts ""
         
     | 
| 
       277 
289 
     | 
    
         
             
              rescue JSON::ParserError => e
         
     | 
| 
       278 
     | 
    
         
            -
                 
     | 
| 
      
 290 
     | 
    
         
            +
                Crayons.log_error("     Invalid config json!\n\n#{e.message}")
         
     | 
| 
       279 
291 
     | 
    
         
             
                exit(1)
         
     | 
| 
       280 
292 
     | 
    
         
             
              end
         
     | 
| 
       281 
293 
     | 
    
         | 
| 
         @@ -298,10 +310,14 @@ module Rvvm 
     | 
|
| 
       298 
310 
     | 
    
         
             
                logname = @args[:complog] || File.join([@config[:project][:logDir], @config[:compilation][:logDir], @config[:compilation][:log]])
         
     | 
| 
       299 
311 
     | 
    
         
             
                complist = @args[:compilelist] || @config[:compilation][:list]
         
     | 
| 
       300 
312 
     | 
    
         | 
| 
       301 
     | 
    
         
            -
                 
     | 
| 
      
 313 
     | 
    
         
            +
                Crayons.spinner_start("Compiling HDL sources...")
         
     | 
| 
       302 
314 
     | 
    
         | 
| 
       303 
315 
     | 
    
         
             
                cmd = "xvlog -sv -f #{complist} -log #{logname} #{cmd_args}"
         
     | 
| 
       304 
     | 
    
         
            -
                 
     | 
| 
      
 316 
     | 
    
         
            +
                Crayons.spinner_pause
         
     | 
| 
      
 317 
     | 
    
         
            +
                exit = execute(cmd)
         
     | 
| 
      
 318 
     | 
    
         
            +
                Crayons.spinner_resume
         
     | 
| 
      
 319 
     | 
    
         
            +
                Crayons.spinner_stop(nil, exit)
         
     | 
| 
      
 320 
     | 
    
         
            +
                puts ""
         
     | 
| 
       305 
321 
     | 
    
         
             
              end
         
     | 
| 
       306 
322 
     | 
    
         | 
| 
       307 
323 
     | 
    
         
             
              # Compiles C/C++ sources into a shared library to use during
         
     | 
| 
         @@ -314,10 +330,12 @@ module Rvvm 
     | 
|
| 
       314 
330 
     | 
    
         
             
                cmd_args = @config[:dpi][:args]
         
     | 
| 
       315 
331 
     | 
    
         
             
                dpilist = @args[:dpilist] || @config[:dpi][:list]
         
     | 
| 
       316 
332 
     | 
    
         | 
| 
       317 
     | 
    
         
            -
                 
     | 
| 
      
 333 
     | 
    
         
            +
                Crayons.spinner_start("Building DPI-C library...")
         
     | 
| 
       318 
334 
     | 
    
         | 
| 
       319 
335 
     | 
    
         
             
                cmd = "sxc -f #{dpilist} #{cmd_args}"
         
     | 
| 
       320 
     | 
    
         
            -
                execute(cmd)
         
     | 
| 
      
 336 
     | 
    
         
            +
                exit = execute(cmd)
         
     | 
| 
      
 337 
     | 
    
         
            +
                Crayons.spinner_stop(nil, exit)
         
     | 
| 
      
 338 
     | 
    
         
            +
                puts ""
         
     | 
| 
       321 
339 
     | 
    
         
             
              end
         
     | 
| 
       322 
340 
     | 
    
         | 
| 
       323 
341 
     | 
    
         
             
              # Elaborates project into a testbench snapshot using xelab.
         
     | 
| 
         @@ -334,12 +352,14 @@ module Rvvm 
     | 
|
| 
       334 
352 
     | 
    
         
             
                tb = @args[:tb] || @config[:elaboration][:tb]
         
     | 
| 
       335 
353 
     | 
    
         
             
                timescale = @args[:timescale] || @config[:elaboration][:timescale]
         
     | 
| 
       336 
354 
     | 
    
         | 
| 
       337 
     | 
    
         
            -
                 
     | 
| 
       338 
     | 
    
         
            -
                puts "     TB TOP: \t#{tb_top}"
         
     | 
| 
       339 
     | 
    
         
            -
                puts "     SNAPSHOT:\t#{tb}\n"
         
     | 
| 
      
 355 
     | 
    
         
            +
                Crayons.spinner_start("Elaborating testbench: #{tb}...")
         
     | 
| 
       340 
356 
     | 
    
         | 
| 
       341 
357 
     | 
    
         
             
                cmd = "xelab #{tb_top} -relax -s #{tb} -timescale #{timescale} -log #{logname} #{cmd_args}"
         
     | 
| 
       342 
     | 
    
         
            -
                 
     | 
| 
      
 358 
     | 
    
         
            +
                Crayons.spinner_pause
         
     | 
| 
      
 359 
     | 
    
         
            +
                exit = execute(cmd)
         
     | 
| 
      
 360 
     | 
    
         
            +
                Crayons.spinner_resume
         
     | 
| 
      
 361 
     | 
    
         
            +
                Crayons.spinner_stop(nil, exit)
         
     | 
| 
      
 362 
     | 
    
         
            +
                puts ""
         
     | 
| 
       343 
363 
     | 
    
         
             
              end
         
     | 
| 
       344 
364 
     | 
    
         | 
| 
       345 
365 
     | 
    
         
             
              # Runs UVM test simulation on an elaborated testbench snapshot using xrun.
         
     | 
| 
         @@ -354,7 +374,7 @@ module Rvvm 
     | 
|
| 
       354 
374 
     | 
    
         
             
                else
         
     | 
| 
       355 
375 
     | 
    
         
             
                  cmd_args << "-R"
         
     | 
| 
       356 
376 
     | 
    
         
             
                end
         
     | 
| 
       357 
     | 
    
         
            -
             
     | 
| 
      
 377 
     | 
    
         
            +
             
     | 
| 
       358 
378 
     | 
    
         
             
                # Run simulaton on an array of tests.
         
     | 
| 
       359 
379 
     | 
    
         
             
                # If in not running in batch mode testlist is an array with a single test
         
     | 
| 
       360 
380 
     | 
    
         
             
                test = @args[:test] || @config[:simulation][:defTest]
         
     | 
| 
         @@ -363,10 +383,10 @@ module Rvvm 
     | 
|
| 
       363 
383 
     | 
    
         | 
| 
       364 
384 
     | 
    
         
             
                tb = @args[:simtb] || @args[:tb] || @config[:elaboration][:tb]
         
     | 
| 
       365 
385 
     | 
    
         | 
| 
       366 
     | 
    
         
            -
                puts ""
         
     | 
| 
       367 
     | 
    
         
            -
             
     | 
| 
       368 
386 
     | 
    
         
             
                testlist.each_with_index do |simtest, i|
         
     | 
| 
       369 
     | 
    
         
            -
                   
     | 
| 
      
 387 
     | 
    
         
            +
                  simtest.strip!
         
     | 
| 
      
 388 
     | 
    
         
            +
                  puts "" if i.positive?
         
     | 
| 
      
 389 
     | 
    
         
            +
                  Crayons.spinner_start("Running test #{i + 1}/#{testlist.size}: #{simtest}...")
         
     | 
| 
       370 
390 
     | 
    
         | 
| 
       371 
391 
     | 
    
         
             
                  logname = File.join([@config[:project][:logDir], @config[:simulation][:logDir], @config[:simulation][:log]])
         
     | 
| 
       372 
392 
     | 
    
         
             
                  logname = Utils.interpolate(logname, { testname: simtest })
         
     | 
| 
         @@ -374,8 +394,13 @@ module Rvvm 
     | 
|
| 
       374 
394 
     | 
    
         
             
                  verb = "UVM_#{@args[:verb] || @config[:simulation][:verbosity]}"
         
     | 
| 
       375 
395 
     | 
    
         | 
| 
       376 
396 
     | 
    
         
             
                  cmd = "xsim #{tb} -log #{logname} -testplusarg \"UVM_VERBOSITY=#{verb}\" -testplusarg \"UVM_TESTNAME=#{simtest}\" #{cmd_args}"
         
     | 
| 
       377 
     | 
    
         
            -
                   
     | 
| 
      
 397 
     | 
    
         
            +
                  Crayons.spinner_pause
         
     | 
| 
      
 398 
     | 
    
         
            +
                  exit = execute(cmd)
         
     | 
| 
      
 399 
     | 
    
         
            +
                  Crayons.spinner_resume
         
     | 
| 
      
 400 
     | 
    
         
            +
                  Crayons.spinner_stop(nil, exit)
         
     | 
| 
       378 
401 
     | 
    
         
             
                end
         
     | 
| 
      
 402 
     | 
    
         
            +
             
     | 
| 
      
 403 
     | 
    
         
            +
                puts ""
         
     | 
| 
       379 
404 
     | 
    
         
             
              end
         
     | 
| 
       380 
405 
     | 
    
         | 
| 
       381 
406 
     | 
    
         
             
              # Runs a pure SystemVerilog/Verilog simulation using xrun.
         
     | 
| 
         @@ -387,13 +412,16 @@ module Rvvm 
     | 
|
| 
       387 
412 
     | 
    
         
             
                cmd_args = @config[:simulation][:args]
         
     | 
| 
       388 
413 
     | 
    
         
             
                tb = @args[:simtb] || @args[:tb] || @config[:elaboration][:tb]
         
     | 
| 
       389 
414 
     | 
    
         | 
| 
       390 
     | 
    
         
            -
                 
     | 
| 
      
 415 
     | 
    
         
            +
                Crayons.spinner_start("Running pure SV/V simulation...")
         
     | 
| 
       391 
416 
     | 
    
         
             
                logname = @args[:simlog] || File.join([@config[:project][:logDir], @config[:simulation][:logDir], "svsim.log"])
         
     | 
| 
       392 
417 
     | 
    
         | 
| 
       393 
418 
     | 
    
         
             
                cmd = "xsim #{tb} -log #{logname} #{cmd_args}"
         
     | 
| 
       394 
     | 
    
         
            -
                 
     | 
| 
      
 419 
     | 
    
         
            +
                Crayons.spinner_pause
         
     | 
| 
      
 420 
     | 
    
         
            +
                exit = execute(cmd)
         
     | 
| 
      
 421 
     | 
    
         
            +
                Crayons.spinner_resume
         
     | 
| 
      
 422 
     | 
    
         
            +
                Crayons.spinner_stop(nil, exit)
         
     | 
| 
       395 
423 
     | 
    
         
             
              end
         
     | 
| 
       396 
     | 
    
         
            -
             
     | 
| 
      
 424 
     | 
    
         
            +
             
     | 
| 
       397 
425 
     | 
    
         
             
              # Opens last generated waveform trace dump to inspect in Vivado GUI.
         
     | 
| 
       398 
426 
     | 
    
         
             
              #
         
     | 
| 
       399 
427 
     | 
    
         
             
              # @return [void]
         
     | 
| 
         @@ -404,6 +432,8 @@ module Rvvm 
     | 
|
| 
       404 
432 
     | 
    
         | 
| 
       405 
433 
     | 
    
         
             
                cmd = "xsim --gui #{dump}"
         
     | 
| 
       406 
434 
     | 
    
         
             
                execute(cmd)
         
     | 
| 
      
 435 
     | 
    
         
            +
             
     | 
| 
      
 436 
     | 
    
         
            +
                exit(0)
         
     | 
| 
       407 
437 
     | 
    
         
             
              end
         
     | 
| 
       408 
438 
     | 
    
         | 
| 
       409 
439 
     | 
    
         
             
              # Generates UVM test functional coverage report using xcrg.
         
     | 
| 
         @@ -412,8 +442,13 @@ module Rvvm 
     | 
|
| 
       412 
442 
     | 
    
         
             
              #
         
     | 
| 
       413 
443 
     | 
    
         
             
              # @since 0.9.0
         
     | 
| 
       414 
444 
     | 
    
         
             
              def self.coverage
         
     | 
| 
      
 445 
     | 
    
         
            +
                Crayons.spinner_start("Generating UVM functional coverage report...")
         
     | 
| 
      
 446 
     | 
    
         
            +
             
     | 
| 
       415 
447 
     | 
    
         
             
                cmd = "xcrg -report_format html -dir xsim.covdb"
         
     | 
| 
       416 
     | 
    
         
            -
                 
     | 
| 
      
 448 
     | 
    
         
            +
                Crayons.spinner_pause
         
     | 
| 
      
 449 
     | 
    
         
            +
                exit = execute(cmd)
         
     | 
| 
      
 450 
     | 
    
         
            +
                Crayons.spinner_resume
         
     | 
| 
      
 451 
     | 
    
         
            +
                Crayons.spinner_stop(nil, exit)
         
     | 
| 
       417 
452 
     | 
    
         
             
              end
         
     | 
| 
       418 
453 
     | 
    
         | 
| 
       419 
454 
     | 
    
         
             
              # Opens last generated functional coverage report in a HTML dashboard.
         
     | 
| 
         @@ -424,6 +459,8 @@ module Rvvm 
     | 
|
| 
       424 
459 
     | 
    
         
             
              def self.cov_report
         
     | 
| 
       425 
460 
     | 
    
         
             
                Dir.chdir("xcrg_func_cov_report")
         
     | 
| 
       426 
461 
     | 
    
         
             
                execute("./dashboard.html")
         
     | 
| 
      
 462 
     | 
    
         
            +
             
     | 
| 
      
 463 
     | 
    
         
            +
                exit(0)
         
     | 
| 
       427 
464 
     | 
    
         
             
              end
         
     | 
| 
       428 
465 
     | 
    
         | 
| 
       429 
466 
     | 
    
         
             
              # Generates a SystemVerilog module/interface template.
         
     | 
| 
         @@ -434,19 +471,30 @@ module Rvvm 
     | 
|
| 
       434 
471 
     | 
    
         
             
              # @return [void]
         
     | 
| 
       435 
472 
     | 
    
         
             
              #
         
     | 
| 
       436 
473 
     | 
    
         
             
              # @since 0.9.0
         
     | 
| 
       437 
     | 
    
         
            -
              def self.create_module( 
     | 
| 
      
 474 
     | 
    
         
            +
              def self.create_module(name, type)
         
     | 
| 
       438 
475 
     | 
    
         
             
                conf = @templates[:module][:conf]
         
     | 
| 
       439 
476 
     | 
    
         
             
                conf[:module] = name
         
     | 
| 
       440 
477 
     | 
    
         
             
                conf[:date] = @formatted_time
         
     | 
| 
       441 
     | 
    
         
            -
                 
     | 
| 
       442 
     | 
    
         
            -
             
     | 
| 
      
 478 
     | 
    
         
            +
                unless @args[:here]
         
     | 
| 
      
 479 
     | 
    
         
            +
                  conf[:prjname] = @config[:project][:name]
         
     | 
| 
      
 480 
     | 
    
         
            +
                  conf[:company] = @config[:project][:company]
         
     | 
| 
      
 481 
     | 
    
         
            +
                end
         
     | 
| 
       443 
482 
     | 
    
         | 
| 
       444 
483 
     | 
    
         
             
                conf[:type] = type
         
     | 
| 
       445 
484 
     | 
    
         
             
                @templates[:module][:file][:path] = "design/itf" if type == "itf"
         
     | 
| 
       446 
     | 
    
         
            -
             
     | 
| 
      
 485 
     | 
    
         
            +
             
     | 
| 
      
 486 
     | 
    
         
            +
                if @args[:here]
         
     | 
| 
      
 487 
     | 
    
         
            +
                  path = "."
         
     | 
| 
      
 488 
     | 
    
         
            +
                else
         
     | 
| 
      
 489 
     | 
    
         
            +
                  path = File.join([@config[:project][:path], @args[:path] || @templates[:module][:file][:path]])
         
     | 
| 
      
 490 
     | 
    
         
            +
                end
         
     | 
| 
       447 
491 
     | 
    
         
             
                conf[:username] = Utils.git_userame || " "
         
     | 
| 
       448 
492 
     | 
    
         | 
| 
      
 493 
     | 
    
         
            +
                puts ""
         
     | 
| 
      
 494 
     | 
    
         
            +
                Crayons.spinner_start("Generating SV #{type} template...")
         
     | 
| 
       449 
495 
     | 
    
         
             
                Utils.gen_template(@templates[:module], "#{name}.sv", conf, path)
         
     | 
| 
      
 496 
     | 
    
         
            +
                Crayons.spinner_stop(nil, true)
         
     | 
| 
      
 497 
     | 
    
         
            +
                puts ""
         
     | 
| 
       450 
498 
     | 
    
         | 
| 
       451 
499 
     | 
    
         
             
                exit(0)
         
     | 
| 
       452 
500 
     | 
    
         
             
              end
         
     | 
| 
         @@ -463,13 +511,23 @@ module Rvvm 
     | 
|
| 
       463 
511 
     | 
    
         
             
                conf[:package] = name
         
     | 
| 
       464 
512 
     | 
    
         
             
                conf[:PACKAGE] = name.upcase
         
     | 
| 
       465 
513 
     | 
    
         
             
                conf[:date] = @formatted_time
         
     | 
| 
       466 
     | 
    
         
            -
                 
     | 
| 
       467 
     | 
    
         
            -
             
     | 
| 
      
 514 
     | 
    
         
            +
                unless @args[:here]
         
     | 
| 
      
 515 
     | 
    
         
            +
                  conf[:prjname] = @config[:project][:name]
         
     | 
| 
      
 516 
     | 
    
         
            +
                  conf[:company] = @config[:project][:company]
         
     | 
| 
      
 517 
     | 
    
         
            +
                end
         
     | 
| 
       468 
518 
     | 
    
         
             
                conf[:username] = Utils.git_userame || " "
         
     | 
| 
       469 
519 
     | 
    
         | 
| 
       470 
     | 
    
         
            -
                 
     | 
| 
      
 520 
     | 
    
         
            +
                if @args[:here]
         
     | 
| 
      
 521 
     | 
    
         
            +
                  path = "."
         
     | 
| 
      
 522 
     | 
    
         
            +
                else
         
     | 
| 
      
 523 
     | 
    
         
            +
                  path = File.join([@config[:project][:path], @args[:path] || @templates[:module][:file][:path]])
         
     | 
| 
      
 524 
     | 
    
         
            +
                end
         
     | 
| 
       471 
525 
     | 
    
         | 
| 
      
 526 
     | 
    
         
            +
                puts ""
         
     | 
| 
      
 527 
     | 
    
         
            +
                Crayons.spinner_start("Generating SV pkg template...")
         
     | 
| 
       472 
528 
     | 
    
         
             
                Utils.gen_template(@templates[:package], "#{name}.sv", conf, path)
         
     | 
| 
      
 529 
     | 
    
         
            +
                Crayons.spinner_stop(nil, true)
         
     | 
| 
      
 530 
     | 
    
         
            +
                puts ""
         
     | 
| 
       473 
531 
     | 
    
         | 
| 
       474 
532 
     | 
    
         
             
                exit(0)
         
     | 
| 
       475 
533 
     | 
    
         
             
              end
         
     | 
| 
         @@ -485,13 +543,23 @@ module Rvvm 
     | 
|
| 
       485 
543 
     | 
    
         
             
                conf = @templates[:svfile][:conf]
         
     | 
| 
       486 
544 
     | 
    
         
             
                conf[:NAME] = name.upcase
         
     | 
| 
       487 
545 
     | 
    
         
             
                conf[:date] = @formatted_time
         
     | 
| 
       488 
     | 
    
         
            -
                 
     | 
| 
       489 
     | 
    
         
            -
             
     | 
| 
      
 546 
     | 
    
         
            +
                unless @args[:here]
         
     | 
| 
      
 547 
     | 
    
         
            +
                  conf[:prjname] = @config[:project][:name] || " "
         
     | 
| 
      
 548 
     | 
    
         
            +
                  conf[:company] = @config[:project][:company] || " "
         
     | 
| 
      
 549 
     | 
    
         
            +
                end
         
     | 
| 
       490 
550 
     | 
    
         
             
                conf[:username] = Utils.git_userame || ""
         
     | 
| 
       491 
551 
     | 
    
         | 
| 
       492 
     | 
    
         
            -
                 
     | 
| 
      
 552 
     | 
    
         
            +
                if @args[:here]
         
     | 
| 
      
 553 
     | 
    
         
            +
                  path = "."
         
     | 
| 
      
 554 
     | 
    
         
            +
                else
         
     | 
| 
      
 555 
     | 
    
         
            +
                  path = File.join([@config[:project][:path], @args[:path] || @templates[:module][:file][:path]])
         
     | 
| 
      
 556 
     | 
    
         
            +
                end
         
     | 
| 
       493 
557 
     | 
    
         | 
| 
      
 558 
     | 
    
         
            +
                puts ""
         
     | 
| 
      
 559 
     | 
    
         
            +
                Crayons.spinner_start("Generating generic SV file template...")
         
     | 
| 
       494 
560 
     | 
    
         
             
                Utils.gen_template(@templates[:svfile], "#{name}.sv", conf, path)
         
     | 
| 
      
 561 
     | 
    
         
            +
                Crayons.spinner_stop(nil, true)
         
     | 
| 
      
 562 
     | 
    
         
            +
                puts ""
         
     | 
| 
       495 
563 
     | 
    
         | 
| 
       496 
564 
     | 
    
         
             
                exit(0)
         
     | 
| 
       497 
565 
     | 
    
         
             
              end
         
     | 
| 
         @@ -505,13 +573,15 @@ module Rvvm 
     | 
|
| 
       505 
573 
     | 
    
         
             
                create_new_project(@args[:new]) if @args[:new]
         
     | 
| 
       506 
574 
     | 
    
         | 
| 
       507 
575 
     | 
    
         
             
                check_args
         
     | 
| 
       508 
     | 
    
         
            -
                 
     | 
| 
       509 
     | 
    
         
            -
             
     | 
| 
      
 576 
     | 
    
         
            +
                unless @args[:here]
         
     | 
| 
      
 577 
     | 
    
         
            +
                  load_config
         
     | 
| 
      
 578 
     | 
    
         
            +
                  handle_args
         
     | 
| 
      
 579 
     | 
    
         
            +
                end
         
     | 
| 
       510 
580 
     | 
    
         | 
| 
       511 
     | 
    
         
            -
                create_module(@args[:module],  
     | 
| 
       512 
     | 
    
         
            -
                create_module(@args[:itf, "itf" 
     | 
| 
       513 
     | 
    
         
            -
                create_pkg(@args[:pkg]) 
     | 
| 
       514 
     | 
    
         
            -
                create_svfile(@args[:svfile]) 
     | 
| 
      
 581 
     | 
    
         
            +
                create_module(@args[:module], "module") if @args[:module]
         
     | 
| 
      
 582 
     | 
    
         
            +
                create_module(@args[:itf], "itf")       if @args[:itf]
         
     | 
| 
      
 583 
     | 
    
         
            +
                create_pkg(@args[:pkg])                 if @args[:pkg]
         
     | 
| 
      
 584 
     | 
    
         
            +
                create_svfile(@args[:svfile])           if @args[:svfile]
         
     | 
| 
       515 
585 
     | 
    
         | 
| 
       516 
586 
     | 
    
         
             
                prj_top
         
     | 
| 
       517 
587 
     | 
    
         | 
    
        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. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.0.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - mrbya
         
     | 
| 
         @@ -29,6 +29,7 @@ files: 
     | 
|
| 
       29 
29 
     | 
    
         
             
            - bin/sandbox
         
     | 
| 
       30 
30 
     | 
    
         
             
            - exe/rvvm
         
     | 
| 
       31 
31 
     | 
    
         
             
            - lib/rvvm.rb
         
     | 
| 
      
 32 
     | 
    
         
            +
            - lib/rvvm/crayons.rb
         
     | 
| 
       32 
33 
     | 
    
         
             
            - lib/rvvm/templates.rb
         
     | 
| 
       33 
34 
     | 
    
         
             
            - lib/rvvm/utils.rb
         
     | 
| 
       34 
35 
     | 
    
         
             
            - lib/rvvm/version.rb
         
     |