rvvm 0.9.3 → 0.9.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 01a0976fb744924367077dfda5f613dbf6912032fbc61896c41aa647f606863e
4
- data.tar.gz: 188c360b6cf73c1c4478c1cbb8d1f665daf6523a97b5c286a63ea0b3ab056fc2
3
+ metadata.gz: 8fd6e9e8729d0de5aeabb5a88f183096de1acc98ae8d5e2d70c7be57edf883a0
4
+ data.tar.gz: aa70e5dd5f06d668c8e83a38043d02f0b86aa047bd7a85c5b4db5ce04567a894
5
5
  SHA512:
6
- metadata.gz: ea4aaab4ac74410dcded24b69db2953ee51e2811539fec0e08891097231f4551ace3cb25fd7a68fe6a8afceeeddce9bed4ba277edddf453036d88ddea2e986ee
7
- data.tar.gz: 67315687f47c4648af7db0b66530bfb3dae52affd5ee1ea97b7d1b16099ba1409e1fc4df805b4639dedebffd7afe43fdec91166c33f23c778928ca8585e49400
6
+ metadata.gz: accdd51566d38973f742e264d35bfecdc1b5ede51d3d0f9062114a4dd8c2d95bc64437026123de630ed2a1ce7b9702cb06d1e4570820cbadf89f946aa9641f22
7
+ data.tar.gz: a330ed820c00511ced53ffe42ec13d2eec98d9783c3aa581a144a029e46b4a92ed84fd86a27b5c25dc46b83c1f88d9cf8ab2ac0e37e688215713a16ce7bf9e17
data/CHANGELOG.md CHANGED
@@ -90,3 +90,42 @@
90
90
  2. Project config load failure handling/error message when parsing invalid json
91
91
  3. Template file generation in pwd
92
92
  4. Elaboration and simulation custom waveform trace dump file
93
+ 5. Project template files regeneration/restoration to default
94
+ 6. Rescue on script crash due to creating a project dir that already exists
95
+
96
+ ## [0.9.4] - 2024-09-17
97
+
98
+ ### Added:
99
+
100
+ 1. More tests
101
+ 2. Cleaned up code documentation
102
+ 3. JSON::ParserError handling when loading an invalid config json
103
+ 4. Promt to overwrite an existing directory while creating project
104
+ 5. Project creation error handling
105
+
106
+ ### Fixed:
107
+
108
+ 1. Script crash due to loading invalid json config
109
+ 2. Script crash due to creating a project dir that already exists
110
+
111
+ ### TBI:
112
+
113
+ 1. CLI log graphic
114
+ 2. Template file generation in pwd
115
+ 3. Elaboration and simulation custom waveform trace dump file
116
+ 4. Project template files regeneration/restoration to default
117
+
118
+ ## [0.9.5] - 2024-09-17
119
+
120
+ ### Fixed:
121
+
122
+ 1. Conversion of parsed json config hash keys to symbols
123
+ 2. Tests randomly failing due to the bug above
124
+
125
+ ### TBI:
126
+
127
+ 1. CLI log graphic
128
+ 2. Template file generation in pwd
129
+ 3. Elaboration and simulation custom waveform trace dump file
130
+ 4. Project template files regeneration/restoration to default
131
+
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # RVvM - Ruby Vivado Manager
1
+ # RVvM - Ruby Vivado Manager [![Gem Version](https://badge.fury.io/rb/rvvm.svg)](https://badge.fury.io/rb/rvvm)
2
2
 
3
3
  RVvM is a Ruby based meta tool to manage, compile, elaborate and simulate SystemVerilog and UVM based projects using Xilinx Vivado xvlog, xelab, xrun and xsc tools.
4
4
 
data/lib/rvvm/version.rb CHANGED
@@ -3,5 +3,5 @@
3
3
  # Module holding current rvvm version.
4
4
  module Rvvm
5
5
  # Current rvvm module version.
6
- VERSION = "0.9.3"
6
+ VERSION = "0.9.5"
7
7
  end
data/lib/rvvm.rb CHANGED
@@ -149,7 +149,7 @@ module Rvvm
149
149
 
150
150
  # Shell command with debug printout.
151
151
  #
152
- # If --debug arg provided instead of calling `system`
152
+ # If --debug arg provided instead of calling `system`
153
153
  # prints the input command.
154
154
  #
155
155
  # @param command [String] command to be called/printed
@@ -175,6 +175,18 @@ module Rvvm
175
175
  def self.create_new_project(name)
176
176
  puts "\nRVvM: Generating new project: #{name} ...\n"
177
177
 
178
+ if File.exist?(name)
179
+ print " Directory #{name} already exists. Do you want to overwrite it? [y/n] "
180
+ input = gets.chomp
181
+ puts " "
182
+
183
+ if input == "y"
184
+ FileUtils.rm_rf(name)
185
+ else
186
+ exit(0)
187
+ end
188
+ end
189
+
178
190
  FileUtils.mkdir(name)
179
191
  Dir.chdir(name)
180
192
 
@@ -232,6 +244,9 @@ module Rvvm
232
244
  puts "\nRVvM: New project generated. ^^\n\n"
233
245
 
234
246
  exit(0)
247
+ rescue StandardError => e
248
+ puts "RVvM: Failed to create project...\n #{e.message}\n"
249
+ exit(1)
235
250
  end
236
251
 
237
252
  # Loads and parses rvvmconf.json config file from
@@ -253,13 +268,17 @@ module Rvvm
253
268
  end
254
269
 
255
270
  @config = JSON.parse(json_file) if json_file
256
- @config = @config.transform_values do |v|
257
- v.is_a?(Hash) ? v.transform_keys(&:to_sym) : v
258
- end.transform_keys(&:to_sym)
259
271
 
260
- puts @config[:simulation][:testlist]
272
+ if @config.instance_of?(Hash)
273
+ @config = @config.transform_values do |v|
274
+ v.transform_keys(&:to_sym) if v.instance_of?(Hash)
275
+ end.transform_keys(&:to_sym)
276
+ end
277
+ rescue JSON::ParserError => e
278
+ puts " Invalid config json!\n\n#{e.message}"
279
+ exit(1)
261
280
  end
262
-
281
+
263
282
  # Navigates to project top (rvvm directory of the RVvM project).
264
283
  #
265
284
  # @return [void]
@@ -268,7 +287,7 @@ module Rvvm
268
287
  def self.prj_top
269
288
  Dir.chdir(@config_path)
270
289
  end
271
-
290
+
272
291
  # Compiles project SystemVerilog sources using xvlog.
273
292
  #
274
293
  # @return [void]
@@ -284,7 +303,7 @@ module Rvvm
284
303
  cmd = "xvlog -sv -f #{complist} -log #{logname} #{cmd_args}"
285
304
  execute(cmd)
286
305
  end
287
-
306
+
288
307
  # Compiles C/C++ sources into a shared library to use during
289
308
  # elaboration and simulation using DPI-C.
290
309
  #
@@ -300,7 +319,7 @@ module Rvvm
300
319
  cmd = "sxc -f #{dpilist} #{cmd_args}"
301
320
  execute(cmd)
302
321
  end
303
-
322
+
304
323
  # Elaborates project into a testbench snapshot using xelab.
305
324
  #
306
325
  # @return [void]
@@ -322,7 +341,7 @@ module Rvvm
322
341
  cmd = "xelab #{tb_top} -relax -s #{tb} -timescale #{timescale} -log #{logname} #{cmd_args}"
323
342
  execute(cmd)
324
343
  end
325
-
344
+
326
345
  # Runs UVM test simulation on an elaborated testbench snapshot using xrun.
327
346
  #
328
347
  # @return [void]
@@ -386,7 +405,7 @@ module Rvvm
386
405
  cmd = "xsim --gui #{dump}"
387
406
  execute(cmd)
388
407
  end
389
-
408
+
390
409
  # Generates UVM test functional coverage report using xcrg.
391
410
  #
392
411
  # @return [void]
@@ -396,7 +415,7 @@ module Rvvm
396
415
  cmd = "xcrg -report_format html -dir xsim.covdb"
397
416
  execute(cmd)
398
417
  end
399
-
418
+
400
419
  # Opens last generated functional coverage report in a HTML dashboard.
401
420
  #
402
421
  # @return [void]
@@ -406,7 +425,7 @@ module Rvvm
406
425
  Dir.chdir("xcrg_func_cov_report")
407
426
  execute("./dashboard.html")
408
427
  end
409
-
428
+
410
429
  # Generates a SystemVerilog module/interface template.
411
430
  #
412
431
  # @param type [String] specifies modudle/itf
@@ -431,7 +450,7 @@ module Rvvm
431
450
 
432
451
  exit(0)
433
452
  end
434
-
453
+
435
454
  # Generates a SystemVerilog package template.
436
455
  #
437
456
  # @param name [String] specifies package name
@@ -454,7 +473,7 @@ module Rvvm
454
473
 
455
474
  exit(0)
456
475
  end
457
-
476
+
458
477
  # Generates a generic SystemVerilog template file.
459
478
  #
460
479
  # @param name [String] specifies template name
@@ -476,7 +495,7 @@ module Rvvm
476
495
 
477
496
  exit(0)
478
497
  end
479
-
498
+
480
499
  # Runs rvvm calling its methods based on provided script args.
481
500
  #
482
501
  # @return [void]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rvvm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.3
4
+ version: 0.9.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - mrbya
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-09-16 00:00:00.000000000 Z
11
+ date: 2024-09-17 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: RVvM is a Ruby based meta tool to manage/compile/elaborate and run simulations
14
14
  on SystemVerilog and UVM based projects using Xilinx Vivado xvlog, xelab, xrun,