opencos-eda 0.3.11__py3-none-any.whl → 0.3.13__py3-none-any.whl

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.
Files changed (41) hide show
  1. opencos/commands/flist.py +222 -39
  2. opencos/commands/multi.py +5 -3
  3. opencos/commands/sim.py +121 -7
  4. opencos/commands/sweep.py +1 -1
  5. opencos/commands/upload.py +4 -4
  6. opencos/commands/waves.py +44 -0
  7. opencos/deps/deps_file.py +4 -1
  8. opencos/deps_schema.py +2 -2
  9. opencos/eda.py +284 -175
  10. opencos/eda_base.py +54 -22
  11. opencos/eda_config.py +51 -24
  12. opencos/eda_config_defaults.yml +326 -195
  13. opencos/eda_config_reduced.yml +19 -39
  14. opencos/eda_tool_helper.py +193 -24
  15. opencos/tools/cocotb.py +6 -29
  16. opencos/tools/invio.py +0 -6
  17. opencos/tools/iverilog.py +16 -16
  18. opencos/tools/modelsim_ase.py +1 -13
  19. opencos/tools/quartus.py +81 -24
  20. opencos/tools/questa.py +0 -14
  21. opencos/tools/questa_common.py +95 -30
  22. opencos/tools/questa_fe.py +0 -14
  23. opencos/tools/questa_fse.py +0 -14
  24. opencos/tools/riviera.py +56 -25
  25. opencos/tools/slang.py +15 -12
  26. opencos/tools/slang_yosys.py +0 -6
  27. opencos/tools/surelog.py +14 -11
  28. opencos/tools/tabbycad_yosys.py +1 -7
  29. opencos/tools/verilator.py +18 -14
  30. opencos/tools/vivado.py +57 -22
  31. opencos/tools/yosys.py +2 -4
  32. opencos/util.py +14 -5
  33. opencos/utils/str_helpers.py +42 -1
  34. {opencos_eda-0.3.11.dist-info → opencos_eda-0.3.13.dist-info}/METADATA +1 -2
  35. {opencos_eda-0.3.11.dist-info → opencos_eda-0.3.13.dist-info}/RECORD +40 -41
  36. opencos/eda_config_max_verilator_waivers.yml +0 -39
  37. {opencos_eda-0.3.11.dist-info → opencos_eda-0.3.13.dist-info}/WHEEL +0 -0
  38. {opencos_eda-0.3.11.dist-info → opencos_eda-0.3.13.dist-info}/entry_points.txt +0 -0
  39. {opencos_eda-0.3.11.dist-info → opencos_eda-0.3.13.dist-info}/licenses/LICENSE +0 -0
  40. {opencos_eda-0.3.11.dist-info → opencos_eda-0.3.13.dist-info}/licenses/LICENSE.spdx +0 -0
  41. {opencos_eda-0.3.11.dist-info → opencos_eda-0.3.13.dist-info}/top_level.txt +0 -0
@@ -74,6 +74,7 @@ deps_markup_supported: true # Support DEPS.yml files (also .yaml, .toml, .json)
74
74
  deps_subprocess_shell: true # Support subprocess commands using shell=True
75
75
  bare_plusarg_supported: true # Support for CLI, DEPS args or deps: +<string> that isn't +define or +incdirs
76
76
  deps_expandvars_enable : true # Support env $VAR replacement on targets or files in DEPS.yml
77
+ show_tool_versions: true # Set to false for tiny performance tweak if --tool arg not supplied
77
78
 
78
79
  dep_sub: [ ] # Legacy, no longer supported.
79
80
  vars: { } # Legacy, no longer supported.
@@ -115,6 +116,7 @@ command_determines_tool:
115
116
 
116
117
  command_tool_is_optional:
117
118
  # eda commands that may not need to use a tool at all, will skip auto_tools_order if --tool=None (default)
119
+ - shell
118
120
  - flist
119
121
  - export
120
122
  - targets
@@ -125,11 +127,89 @@ command_has_subcommands:
125
127
  - tools-multi
126
128
  - sweep
127
129
 
130
+ #
131
+ # auto_tools_order
132
+ # -- Is only used when arg --tool is not set, on command line or via -f, --input-file, or DEPS
133
+ # -- This table should be modified when a new tool is added, if you'd like it to be chosen without
134
+ # --tool arg.
135
+ # -- Is in-order for the handlers, so Verilator is the default simulator if
136
+ # verilator is installed and the eda command is "sim".
137
+ # -- Each key: [list-of-strings] is a list so config changes use Strategy.REPLACE to replace it
138
+ # meaning if a user brings their own auto_tools_order for 'lint' they must define the complete
139
+ # auto order when --tool is not specified
140
+ #
141
+ auto_tools_order:
142
+ lint:
143
+ - slang
144
+ - surelog
145
+ - verilator
146
+ - vivado
147
+ - modelsim_ase
148
+ - questa_fse
149
+ - questa_fe
150
+ - questa
151
+ - riviera
152
+ - iverilog
153
+ - invio
154
+ elab:
155
+ - slang
156
+ - surelog
157
+ - verilator
158
+ - vivado
159
+ - modelsim_ase
160
+ - questa_fse
161
+ - questa_fe
162
+ - questa
163
+ - slang_yosys
164
+ - riviera
165
+ - iverilog
166
+ - invio
167
+ - invio_yosys
168
+ sim:
169
+ - verilator
170
+ - vivado
171
+ - modelsim_ase
172
+ - questa_fse
173
+ - questa_fe
174
+ - questa
175
+ - riviera
176
+ - iverilog
177
+ synth:
178
+ - slang_yosys
179
+ - vivado
180
+ - quartus
181
+ - tabbycad_yosys
182
+ - invio_yosys
183
+ - yosys
184
+ proj:
185
+ - vivado
186
+ - quartus
187
+ build:
188
+ - vivado
189
+ - quartus
190
+ open:
191
+ - vivado
192
+ - quartus
193
+ lec:
194
+ - slang_yosys
195
+ - yosys
128
196
 
129
197
 
130
198
  tools:
131
199
 
132
200
  # <tool-name>:
201
+ # exe: <Array of strings, or single string, required exe>
202
+ # requires_cmd: <Array of shell commands that must complete with rc=0 for tool to work>
203
+ # requires_py: <Array of strings, python packages requires for tool to work>
204
+ # requires_vscode_extension: <Array of strings, vscode extensions that must be present for
205
+ # tool to work>
206
+ # requires_vsim_helper: <Bool, if True we will determine which vsim exe(s) are present in PATH
207
+ # for tool to work, such that Modelsim, Questa, Riviera can all be
208
+ # present in PATH and each tool can still be chosen>
209
+ # handlers: <Table of {command, python package class name}, for how this tool
210
+ # will run an eda command>
211
+ # disable-auto: <Bool, if True do not allow this to run `eda [command]` with --tool
212
+ # not set>
133
213
  # defines: <Table, macroName: <value|null|> >
134
214
  # log-bad-strings: <Array of strings>
135
215
  # log-must-strings: <Array of strings>
@@ -145,9 +225,37 @@ tools:
145
225
  # simulate-waivers: <Array of strings, no spaces>
146
226
  # coverage-args: <string space separated>
147
227
 
228
+
229
+ vaporview:
230
+ exe: code
231
+ requires_vscode_extension:
232
+ - lramseyer.vaporview
233
+ handlers:
234
+ waves: opencos.commands.waves.CommandWaves
235
+
236
+ surfer:
237
+ exe: code
238
+ requires_vscode_extension:
239
+ - surfer-project.surfer
240
+ handlers:
241
+ waves: opencos.commands.waves.CommandWaves
242
+
243
+ gtkwave:
244
+ exe: gtkwave
245
+ handlers:
246
+ waves: opencos.commands.waves.CommandWaves
247
+
148
248
  slang:
249
+ exe: slang
250
+ requires_cmd:
251
+ - slang --version
252
+ handlers:
253
+ lint: opencos.tools.slang.CommandLintSlang
254
+ elab: opencos.tools.slang.CommandElabSlang
255
+
149
256
  defines:
150
257
  OC_TOOL_SLANG: null
258
+ SLANG: 1
151
259
  log-bad-strings:
152
260
  - 'Build failed: '
153
261
  log-must-strings:
@@ -161,7 +269,14 @@ tools:
161
269
  compile-waivers: []
162
270
 
163
271
  verilator:
164
- defines: { }
272
+ exe: verilator
273
+ handlers:
274
+ lint: opencos.tools.verilator.VerilatorLint
275
+ elab: opencos.tools.verilator.VerilatorElab
276
+ sim: opencos.tools.verilator.VerilatorSim
277
+
278
+ defines:
279
+ SIMULATION: 1
165
280
  log-warning-strings:
166
281
  - "%Warning"
167
282
  log-bad-strings:
@@ -232,6 +347,13 @@ tools:
232
347
 
233
348
 
234
349
  surelog:
350
+ exe: surelog
351
+ requires_cmd:
352
+ - surelog --version
353
+ handlers:
354
+ lint: opencos.tools.surelog.CommandLintSurelog
355
+ elab: opencos.tools.surelog.CommandElabSurelog
356
+
235
357
  defines:
236
358
  OC_TOOL_SURELOG: null
237
359
  compile-args: |
@@ -239,6 +361,15 @@ tools:
239
361
  -timescale=1ns/1ns
240
362
 
241
363
  invio:
364
+ exe: python3
365
+ requires_cmd:
366
+ - python -c "import invio"
367
+ requires_py:
368
+ - invio
369
+ handlers:
370
+ lint: opencos.tools.invio.CommandLintInvio
371
+ elab: opencos.tools.invio.CommandElabInvio
372
+
242
373
  defines:
243
374
  OC_TOOL_INVIO: null
244
375
  INVIO: null
@@ -246,18 +377,32 @@ tools:
246
377
 
247
378
 
248
379
  riviera:
380
+ exe: vsim
381
+ requires_cmd:
382
+ - which riviera # Do not run it, make sure it's in PATH
383
+ requires_vsim_helper: True
384
+ handlers:
385
+ lint: opencos.tools.riviera.CommandLintRiviera
386
+ elab: opencos.tools.riviera.CommandElabRiviera
387
+ sim: opencos.tools.riviera.CommandSimRiviera
388
+ flist: opencos.tools.riviera.CommandFListRiviera
389
+ waves: opencos.commands.waves.CommandWaves
390
+
249
391
  defines:
250
392
  OC_TOOL_RIVIERA: 1
251
393
  RIVIERA: 1
394
+ # see oclib_defines.vh, this is to prevent type comparisons
395
+ OC_TOOL_BROKEN_TYPE_COMPARISON: 1
252
396
  log-warning-strings:
253
397
  - "Warning: "
254
398
  log-bad-strings:
255
399
  - "Error: "
256
400
  - "Fatal: "
401
+ - "You do not have a valid license to run"
257
402
  log-must-strings:
258
403
  - "VSIM: Simulation has finished"
259
404
  compile-args: |
260
- -echo -sv -input_ports net -lcu -dbg +accb +accr +accs +dacc
405
+ -echo -sv -input_ports net -dbg +accb +accr +accs +dacc
261
406
  compile-coverage-args: |
262
407
  -coverage sbecam -coverage_options count
263
408
  # -uvm -ovm
@@ -271,9 +416,20 @@ tools:
271
416
 
272
417
 
273
418
  modelsim_ase:
419
+ exe: vsim
420
+ requires_vsim_helper: True
421
+ handlers:
422
+ lint: opencos.tools.modelsim_ase.CommandLintModelsimAse
423
+ elab: opencos.tools.modelsim_ase.CommandElabModelsimAse
424
+ sim: opencos.tools.modelsim_ase.CommandSimModelsimAse
425
+ flist: opencos.tools.modelsim_ase.CommandFListModelsimAse
426
+ waves: opencos.commands.waves.CommandWaves
427
+
274
428
  defines:
275
429
  OC_ASSERT_PROPERTY_NOT_SUPPORTED: 1
276
430
  OC_TOOL_MODELSIM_ASE: 1
431
+ # see oclib_defines.vh, this is to prevent type comparisons
432
+ OC_TOOL_BROKEN_TYPE_COMPARISON: 1
277
433
  log-warning-strings:
278
434
  - "Warning: "
279
435
  log-bad-strings:
@@ -299,7 +455,53 @@ tools:
299
455
  +acc
300
456
 
301
457
 
302
- questa_fse:
458
+ questa_fe: # FPGA edition
459
+ exe: vsim
460
+ requires_vsim_helper: True
461
+ handlers:
462
+ lint: opencos.tools.questa_fe.CommandLintQuestaFe
463
+ elab: opencos.tools.questa_fe.CommandElabQuestaFe
464
+ sim: opencos.tools.questa_fe.CommandSimQuestaFe
465
+ flist: opencos.tools.questa_fe.CommandFListQuestaFe
466
+ waves: opencos.commands.waves.CommandWaves
467
+
468
+ defines:
469
+ OC_TOOL_QUESTA_FE: 1
470
+ log-warning-strings:
471
+ - "Warning: "
472
+ log-bad-strings:
473
+ - "Error: "
474
+ - "Fatal: "
475
+ log-must-strings:
476
+ - " vsim "
477
+ - "Errors: 0"
478
+ compile-args: |
479
+ -sv -svinputport=net -lint
480
+ compile-waivers:
481
+ - 2275 # 2275 - Existing package 'myname_pkg' will be overwritten.
482
+ - 2555 # 2555 - assignment to input port myname
483
+ - 2583 # 2583 - [SVCHK] - Extra checking for conflicts with always_comb and
484
+ # always_latch variables is done at vopt time.
485
+ - 13159 # 13159, 2685, 2718 are all related to module instance port default values.
486
+ - 2685
487
+ - 2718
488
+ simulate-waivers:
489
+ - 3009 # 3009: [TSCALE] - Module 'myname' does not have a timeunit/timeprecision
490
+ # specification in effect, but other modules do.
491
+ simulate-waves-args: |
492
+ -voptargs=+acc=bcnprst
493
+
494
+
495
+ questa_fse: # FPGA starter edition
496
+ exe: vsim
497
+ requires_vsim_helper: True
498
+ handlers:
499
+ lint: opencos.tools.questa_fse.CommandLintQuestaFse
500
+ elab: opencos.tools.questa_fse.CommandElabQuestaFse
501
+ sim: opencos.tools.questa_fse.CommandSimQuestaFse
502
+ flist: opencos.tools.questa_fse.CommandFListQuestaFse
503
+ waves: opencos.commands.waves.CommandWaves
504
+
303
505
  defines:
304
506
  OC_TOOL_QUESTA_FSE: 1
305
507
  log-warning-strings:
@@ -327,7 +529,54 @@ tools:
327
529
  -voptargs=+acc=bcnprst
328
530
 
329
531
 
532
+ questa: # Questa
533
+ exe: vsim
534
+ requires_vsim_helper: True
535
+ handlers:
536
+ lint: opencos.tools.questa.CommandLintQuesta
537
+ elab: opencos.tools.questa.CommandElabQuesta
538
+ sim: opencos.tools.questa.CommandSimQuesta
539
+ flist: opencos.tools.questa.CommandFListQuesta
540
+ waves: opencos.commands.waves.CommandWaves
541
+
542
+ defines:
543
+ OC_TOOL_QUESTA: 1
544
+ log-warning-strings:
545
+ - "Warning: "
546
+ log-bad-strings:
547
+ - "Error: "
548
+ - "Fatal: "
549
+ log-must-strings:
550
+ - " vsim "
551
+ - "Errors: 0"
552
+ compile-args: |
553
+ -sv -svinputport=net -lint
554
+ compile-waivers:
555
+ - 2275 # 2275 - Existing package 'myname_pkg' will be overwritten.
556
+ - 2555 # 2555 - assignment to input port myname
557
+ - 2583 # 2583 - [SVCHK] - Extra checking for conflicts with always_comb and
558
+ # always_latch variables is done at vopt time.
559
+ - 13159 # 13159, 2685, 2718 are all related to module instance port default values.
560
+ - 2685
561
+ - 2718
562
+ simulate-waivers:
563
+ - 3009 # 3009: [TSCALE] - Module 'myname' does not have a timeunit/timeprecision
564
+ # specification in effect, but other modules do.
565
+ simulate-waves-args: |
566
+ -voptargs=+acc=bcnprst
567
+
568
+
330
569
  iverilog:
570
+ exe: iverilog
571
+ handlers:
572
+ lint: opencos.tools.iverilog.CommandLintIverilog
573
+ elab: opencos.tools.iverilog.CommandElabIverilog
574
+ sim: opencos.tools.iverilog.CommandSimIverilog
575
+ defines:
576
+ SIMULATION: 1
577
+ IVERILOG: 1
578
+ OC_ASSERT_PROPERTY_NOT_SUPPORTED: 1
579
+
331
580
  log-warning-strings:
332
581
  - "Warning:"
333
582
  - "WARNING:"
@@ -348,8 +597,19 @@ tools:
348
597
  +trace
349
598
 
350
599
  cocotb:
600
+ disable-auto: True # do not allow this to run `eda sim` with --tool not set
601
+ exe: python
602
+ requires_cmd:
603
+ - python -c "import cocotb; print(cocotb.__version__)"
604
+ requires_py:
605
+ - cocotb
606
+ handlers:
607
+ sim: opencos.tools.cocotb.CommandSimCocotb
608
+
351
609
  defines:
352
610
  OC_TOOL_COCOTB: null
611
+ COCOTB: 1
612
+ SIMULATION: 1
353
613
  log-warning-strings:
354
614
  - "Warning:"
355
615
  - "WARNING:"
@@ -365,10 +625,32 @@ tools:
365
625
 
366
626
 
367
627
  quartus:
628
+ exe: quartus_sh
629
+ handlers:
630
+ synth: opencos.tools.quartus.CommandSynthQuartus
631
+ build: opencos.tools.quartus.CommandBuildQuartus
632
+ flist: opencos.tools.quartus.CommandFListQuartus
633
+ proj: opencos.tools.quartus.CommandProjQuartus
634
+ upload: opencos.tools.quartus.CommandUploadQuartus
635
+ open: opencos.tools.quartus.CommandOpenQuartus
636
+
368
637
  defines:
369
638
  OC_TOOL_QUARTUS: null
370
639
 
371
640
  vivado:
641
+ exe: vivado
642
+ handlers:
643
+ lint: opencos.tools.vivado.CommandLintVivado
644
+ elab: opencos.tools.vivado.CommandElabVivado
645
+ sim: opencos.tools.vivado.CommandSimVivado
646
+ synth: opencos.tools.vivado.CommandSynthVivado
647
+ proj: opencos.tools.vivado.CommandProjVivado
648
+ upload: opencos.tools.vivado.CommandUploadVivado
649
+ open: opencos.tools.vivado.CommandOpenVivado
650
+ flist: opencos.tools.vivado.CommandFListVivado
651
+ build: opencos.tools.vivado.CommandBuildVivado
652
+ waves: opencos.commands.waves.CommandWaves
653
+
372
654
  log-warning-strings:
373
655
  - "WARNING: "
374
656
  - "Warning: "
@@ -394,196 +676,45 @@ tools:
394
676
  simulate-args: |
395
677
  snapshot --stats --onerror quit
396
678
 
679
+ slang_yosys:
680
+ exe: yosys
681
+ requires_cmd:
682
+ - yosys -m slang
683
+ handlers:
684
+ elab: opencos.tools.slang_yosys.CommandElabSlangYosys
685
+ synth: opencos.tools.slang_yosys.CommandSynthSlangYosys
686
+ lec: opencos.tools.slang_yosys.CommandLecSlangYosys
687
+ defines:
688
+ OC_TOOL_YOSYS: null
689
+ OC_TOOL_SLANG: null
690
+ SLANG: 1
691
+
692
+ tabbycad_yosys:
693
+ exe: yosys
694
+ requires_env:
695
+ - YOSYSHQ_LICENSE
696
+ handlers:
697
+ synth: opencos.tools.tabbycad_yosys.CommandSynthTabbyCadYosys
698
+ defines:
699
+ OC_TOOL_YOSYS: null
700
+ OC_TOOL_TABBYCAD: null
701
+
702
+ invio_yosys:
703
+ exe: yosys
704
+ requires_cmd:
705
+ - python -c "import invio"
706
+ requires_py:
707
+ - invio
708
+ handlers:
709
+ elab: opencos.tools.invio_yosys.CommandElabInvioYosys
710
+ synth: opencos.tools.invio_yosys.CommandSynthInvioYosys
711
+ OC_TOOL_YOSYS: null
712
+ OC_TOOL_INVIO: null
397
713
 
398
- #
399
- # auto_tools_order
400
- # -- should be used when a new tool is added.
401
- # -- Is in-order for the handlers, so Verilator is the default simulator if
402
- # verilator is installed and the eda command is "sim".
403
- #
404
- auto_tools_order:
405
- - # This is a list so config changes use Strategy.REPLACE to replace it
406
-
407
- slang:
408
- exe: slang
409
- requires_cmd:
410
- - slang --version
411
- handlers:
412
- lint: opencos.tools.slang.CommandLintSlang
413
- elab: opencos.tools.slang.CommandElabSlang
414
-
415
- verilator:
416
- exe: verilator
417
- handlers:
418
- lint: opencos.tools.verilator.VerilatorLint
419
- elab: opencos.tools.verilator.VerilatorElab
420
- sim: opencos.tools.verilator.VerilatorSim
421
-
422
- # TODO(drew): surelog is disabled from `eda tools-multi`. It is still
423
- # enabled for `eda [multi] elab --tool surelog`. It does not support
424
- # type comparisons:
425
- # if type(myname) == type(othername)
426
- # [ERR:UH0700] ... Unsupported expression
427
- # modelsim_ase also doesn't, but it won't fail elab, whereas surelog does.
428
- surelog:
429
- disable-tools-multi: true # surelog doesn't support enough of IEEE-1800
430
- exe: surelog
431
- requires_cmd:
432
- - surelog --version
433
- handlers:
434
- lint: opencos.tools.surelog.CommandLintSurelog
435
- elab: opencos.tools.surelog.CommandElabSurelog
436
-
437
- invio:
438
- exe: python3
439
- requires_cmd:
440
- - python -c "import invio"
441
- requires_py:
442
- - invio
443
- handlers:
444
- lint: opencos.tools.invio.CommandLintInvio
445
- elab: opencos.tools.invio.CommandElabInvio
446
-
447
- vaporview:
448
- exe: code
449
- requires_vscode_extension:
450
- - lramseyer.vaporview
451
- handlers:
452
- waves: opencos.commands.waves.CommandWaves
453
-
454
- surfer:
455
- exe: code
456
- requires_vscode_extension:
457
- - surfer-project.surfer
458
- handlers:
459
- waves: opencos.commands.waves.CommandWaves
460
-
461
- gtkwave:
462
- exe: gtkwave
463
- handlers:
464
- waves: opencos.commands.waves.CommandWaves
465
-
466
- quartus:
467
- exe: quartus_sh
468
- handlers:
469
- synth: opencos.tools.quartus.CommandSynthQuartus
470
- build: opencos.tools.quartus.CommandBuildQuartus
471
- flist: opencos.tools.quartus.CommandFListQuartus
472
- proj: opencos.tools.quartus.CommandProjQuartus
473
- upload: opencos.tools.quartus.CommandUploadQuartus
474
- open: opencos.tools.quartus.CommandOpenQuartus
475
-
476
- vivado:
477
- exe: vivado
478
- handlers:
479
- lint: opencos.tools.vivado.CommandLintVivado
480
- elab: opencos.tools.vivado.CommandElabVivado
481
- sim: opencos.tools.vivado.CommandSimVivado
482
- synth: opencos.tools.vivado.CommandSynthVivado
483
- proj: opencos.tools.vivado.CommandProjVivado
484
- upload: opencos.tools.vivado.CommandUploadVivado
485
- open: opencos.tools.vivado.CommandOpenVivado
486
- flist: opencos.tools.vivado.CommandFListVivado
487
- build: opencos.tools.vivado.CommandBuildVivado
488
- waves: opencos.commands.waves.CommandWaves
489
-
490
- slang_yosys:
491
- exe: yosys
492
- requires_cmd:
493
- - yosys -m slang
494
- handlers:
495
- elab: opencos.tools.slang_yosys.CommandElabSlangYosys
496
- synth: opencos.tools.slang_yosys.CommandSynthSlangYosys
497
- lec: opencos.tools.slang_yosys.CommandLecSlangYosys
498
-
499
- tabbycad_yosys:
500
- exe: yosys
501
- requires_env:
502
- - YOSYSHQ_LICENSE
503
- handlers:
504
- synth: opencos.tools.tabbycad_yosys.CommandSynthTabbyCadYosys
505
-
506
- invio_yosys:
507
- exe: yosys
508
- requires_cmd:
509
- - python -c "import invio"
510
- requires_py:
511
- - invio
512
- handlers:
513
- elab: opencos.tools.invio_yosys.CommandElabInvioYosys
514
- synth: opencos.tools.invio_yosys.CommandSynthInvioYosys
515
-
516
- yosys:
517
- exe: yosys
518
- requires_cmd:
519
- - yosys
520
- handlers:
521
- synth: opencos.tools.slang_yosys.CommonSynthYosys
522
- lec: opencos.tools.slang_yosys.CommandLecYosys
523
-
524
- questa:
525
- exe: vsim
526
- requires_vsim_helper: True
527
- handlers:
528
- lint: opencos.tools.questa.CommandLintQuesta
529
- elab: opencos.tools.questa.CommandElabQuesta
530
- sim: opencos.tools.questa.CommandSimQuesta
531
- flist: opencos.tools.questa.CommandFListQuesta
532
- waves: opencos.commands.waves.CommandWaves
533
-
534
- riviera:
535
- exe: vsim
536
- requires_cmd:
537
- - which riviera # Do not run it, make sure it's in PATH
538
- requires_vsim_helper: True
539
- handlers:
540
- lint: opencos.tools.riviera.CommandLintRiviera
541
- elab: opencos.tools.riviera.CommandElabRiviera
542
- sim: opencos.tools.riviera.CommandSimRiviera
543
- waves: opencos.commands.waves.CommandWaves
544
-
545
- questa_fe:
546
- exe: vsim
547
- requires_vsim_helper: True
548
- handlers:
549
- lint: opencos.tools.questa_fe.CommandLintQuestaFe
550
- elab: opencos.tools.questa_fe.CommandElabQuestaFe
551
- sim: opencos.tools.questa_fe.CommandSimQuestaFe
552
- flist: opencos.tools.questa_fe.CommandFListQuestaFe
553
- waves: opencos.commands.waves.CommandWaves
554
-
555
- questa_fse: # free student edition, works similar to modelsim_ase
556
- exe: vsim
557
- requires_vsim_helper: True
558
- handlers:
559
- lint: opencos.tools.questa_fse.CommandLintQuestaFse
560
- elab: opencos.tools.questa_fse.CommandElabQuestaFse
561
- sim: opencos.tools.questa_fse.CommandSimQuestaFse
562
- flist: opencos.tools.questa_fse.CommandFListQuestaFse
563
- waves: opencos.commands.waves.CommandWaves
564
-
565
- modelsim_ase:
566
- exe: vsim
567
- requires_vsim_helper: True
568
- handlers:
569
- lint: opencos.tools.modelsim_ase.CommandLintModelsimAse
570
- elab: opencos.tools.modelsim_ase.CommandElabModelsimAse
571
- sim: opencos.tools.modelsim_ase.CommandSimModelsimAse
572
- waves: opencos.commands.waves.CommandWaves
573
-
574
- iverilog:
575
- exe: iverilog
576
- handlers:
577
- lint: opencos.tools.iverilog.CommandLintIverilog
578
- elab: opencos.tools.iverilog.CommandElabIverilog
579
- sim: opencos.tools.iverilog.CommandSimIverilog
580
-
581
- cocotb:
582
- disable-auto: True # do not allow this to run `eda sim` with --tool not set
583
- exe: python
584
- requires_cmd:
585
- - python -c "import cocotb; print(cocotb.__version__)"
586
- requires_py:
587
- - cocotb
588
- handlers:
589
- sim: opencos.tools.cocotb.CommandSimCocotb
714
+ yosys:
715
+ exe: yosys
716
+ requires_cmd:
717
+ - yosys
718
+ handlers:
719
+ synth: opencos.tools.slang_yosys.CommonSynthYosys
720
+ lec: opencos.tools.slang_yosys.CommandLecYosys
@@ -14,6 +14,11 @@ deps_subprocess_shell: false
14
14
 
15
15
  tools:
16
16
  verilator:
17
+ exe: verilator
18
+ handlers:
19
+ lint: opencos.tools.verilator.VerilatorLint
20
+ elab: opencos.tools.verilator.VerilatorElab
21
+ sim: opencos.tools.verilator.VerilatorSim
17
22
  compile-waivers:
18
23
  - CASEINCOMPLETE
19
24
  - REALCVT # Implicit conversion of real to integer
@@ -23,43 +28,18 @@ tools:
23
28
  - WIDTH
24
29
  - fatal
25
30
 
26
- auto_tools_order:
27
- -
28
- slang:
29
- exe: slang
30
- requires_cmd:
31
- - slang --version
32
- handlers:
33
- elab: opencos.tools.slang.CommandElabSlang
34
-
35
- verilator:
36
- exe: verilator
37
- handlers:
38
- elab: opencos.tools.verilator.VerilatorElab
39
- sim: opencos.tools.verilator.VerilatorSim
40
-
41
- gtkwave:
42
- exe: gtkwave
43
- handlers: { }
31
+ # leave slang, modelsim_ase, iverilog, slang_yosys at defaults
44
32
 
45
- slang_yosys:
46
- exe: yosys
47
- requires_cmd:
48
- - yosys -m slang
49
- handlers:
50
- elab: opencos.tools.slang_yosys.CommandElabSlangYosys
51
- synth: opencos.tools.slang_yosys.CommandSynthSlangYosys
52
-
53
- modelsim_ase:
54
- exe: vsim
55
- requires_cmd:
56
- - vsim -version
57
- handlers:
58
- elab: opencos.tools.modelsim_ase.CommandElabModelsimAse
59
- sim: opencos.tools.modelsim_ase.CommandSimModelsimAse
60
-
61
- iverilog:
62
- exe: iverilog
63
- handlers:
64
- elab: opencos.tools.iverilog.CommandElabIverilog
65
- sim: opencos.tools.iverilog.CommandSimIverilog
33
+ auto_tools_order:
34
+ lint:
35
+ - slang
36
+ - verilator
37
+ elab:
38
+ - slang
39
+ - verilator
40
+ sim:
41
+ - verilator
42
+ - modelsim_ase
43
+ - iverilog
44
+ synth:
45
+ - slang_yosys