opencos-eda 0.3.10__py3-none-any.whl → 0.3.12__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 (59) hide show
  1. opencos/commands/deps_help.py +63 -113
  2. opencos/commands/export.py +7 -2
  3. opencos/commands/multi.py +4 -4
  4. opencos/commands/sim.py +14 -15
  5. opencos/commands/sweep.py +1 -1
  6. opencos/commands/synth.py +1 -2
  7. opencos/commands/upload.py +192 -4
  8. opencos/commands/waves.py +52 -8
  9. opencos/deps/deps_commands.py +6 -6
  10. opencos/deps/deps_processor.py +129 -50
  11. opencos/docs/Architecture.md +45 -0
  12. opencos/docs/ConnectingApps.md +29 -0
  13. opencos/docs/DEPS.md +199 -0
  14. opencos/docs/Debug.md +77 -0
  15. opencos/docs/DirectoryStructure.md +22 -0
  16. opencos/docs/Installation.md +117 -0
  17. opencos/docs/OcVivadoTcl.md +63 -0
  18. opencos/docs/OpenQuestions.md +7 -0
  19. opencos/docs/README.md +13 -0
  20. opencos/docs/RtlCodingStyle.md +54 -0
  21. opencos/docs/eda.md +147 -0
  22. opencos/docs/oc_cli.md +135 -0
  23. opencos/eda.py +358 -155
  24. opencos/eda_base.py +187 -60
  25. opencos/eda_config.py +70 -35
  26. opencos/eda_config_defaults.yml +310 -186
  27. opencos/eda_config_reduced.yml +19 -39
  28. opencos/eda_tool_helper.py +190 -21
  29. opencos/files.py +26 -1
  30. opencos/tools/cocotb.py +11 -23
  31. opencos/tools/invio.py +2 -2
  32. opencos/tools/invio_yosys.py +2 -1
  33. opencos/tools/iverilog.py +3 -3
  34. opencos/tools/modelsim_ase.py +1 -1
  35. opencos/tools/quartus.py +172 -137
  36. opencos/tools/questa_common.py +50 -9
  37. opencos/tools/riviera.py +5 -4
  38. opencos/tools/slang.py +14 -10
  39. opencos/tools/slang_yosys.py +1 -0
  40. opencos/tools/surelog.py +7 -6
  41. opencos/tools/verilator.py +9 -7
  42. opencos/tools/vivado.py +315 -180
  43. opencos/tools/yosys.py +5 -5
  44. opencos/util.py +6 -3
  45. opencos/utils/dict_helpers.py +31 -0
  46. opencos/utils/markup_helpers.py +2 -2
  47. opencos/utils/str_helpers.py +38 -0
  48. opencos/utils/subprocess_helpers.py +3 -3
  49. opencos/utils/vscode_helper.py +2 -2
  50. opencos/utils/vsim_helper.py +16 -5
  51. {opencos_eda-0.3.10.dist-info → opencos_eda-0.3.12.dist-info}/METADATA +1 -1
  52. opencos_eda-0.3.12.dist-info/RECORD +93 -0
  53. opencos/eda_config_max_verilator_waivers.yml +0 -39
  54. opencos_eda-0.3.10.dist-info/RECORD +0 -81
  55. {opencos_eda-0.3.10.dist-info → opencos_eda-0.3.12.dist-info}/WHEEL +0 -0
  56. {opencos_eda-0.3.10.dist-info → opencos_eda-0.3.12.dist-info}/entry_points.txt +0 -0
  57. {opencos_eda-0.3.10.dist-info → opencos_eda-0.3.12.dist-info}/licenses/LICENSE +0 -0
  58. {opencos_eda-0.3.10.dist-info → opencos_eda-0.3.12.dist-info}/licenses/LICENSE.spdx +0 -0
  59. {opencos_eda-0.3.10.dist-info → opencos_eda-0.3.12.dist-info}/top_level.txt +0 -0
@@ -12,7 +12,6 @@ DEFAULT_HANDLERS:
12
12
  synth : opencos.commands.CommandSynth
13
13
  proj : opencos.commands.CommandProj
14
14
  build : opencos.commands.CommandBuild
15
- upload : opencos.commands.CommandUpload
16
15
  open : opencos.commands.CommandOpen
17
16
  lec : opencos.commands.CommandLec
18
17
  # These commands don't necessarily require a tool
@@ -22,6 +21,7 @@ DEFAULT_HANDLERS:
22
21
  flist : opencos.commands.CommandFList
23
22
  # These commands (waves, export, targets) do not require a tool, or
24
23
  # will self determine the tool. See command_tool_is_optional in this config file.
24
+ upload : opencos.commands.CommandUpload
25
25
  waves : opencos.commands.CommandWaves
26
26
  export : opencos.commands.CommandExport
27
27
  shell : opencos.commands.CommandShell
@@ -73,6 +73,8 @@ dep_tags_enables:
73
73
  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
+ 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
76
78
 
77
79
  dep_sub: [ ] # Legacy, no longer supported.
78
80
  vars: { } # Legacy, no longer supported.
@@ -110,6 +112,7 @@ file_extensions:
110
112
  command_determines_tool:
111
113
  # eda commands that will self-determine the tool to use
112
114
  - waves
115
+ - upload
113
116
 
114
117
  command_tool_is_optional:
115
118
  # eda commands that may not need to use a tool at all, will skip auto_tools_order if --tool=None (default)
@@ -118,10 +121,94 @@ command_tool_is_optional:
118
121
  - targets
119
122
  - deps-help
120
123
 
124
+ command_has_subcommands:
125
+ - multi
126
+ - tools-multi
127
+ - sweep
128
+
129
+ #
130
+ # auto_tools_order
131
+ # -- Is only used when arg --tool is not set, on command line or via -f, --input-file, or DEPS
132
+ # -- This table should be modified when a new tool is added, if you'd like it to be chosen without
133
+ # --tool arg.
134
+ # -- Is in-order for the handlers, so Verilator is the default simulator if
135
+ # verilator is installed and the eda command is "sim".
136
+ # -- Each key: [list-of-strings] is a list so config changes use Strategy.REPLACE to replace it
137
+ # meaning if a user brings their own auto_tools_order for 'lint' they must define the complete
138
+ # auto order when --tool is not specified
139
+ #
140
+ auto_tools_order:
141
+ lint:
142
+ - slang
143
+ - surelog
144
+ - verilator
145
+ - vivado
146
+ - modelsim_ase
147
+ - questa_fse
148
+ - questa_fe
149
+ - questa
150
+ - riviera
151
+ - iverilog
152
+ - invio
153
+ elab:
154
+ - slang
155
+ - surelog
156
+ - verilator
157
+ - vivado
158
+ - modelsim_ase
159
+ - questa_fse
160
+ - questa_fe
161
+ - questa
162
+ - slang_yosys
163
+ - riviera
164
+ - iverilog
165
+ - invio
166
+ - invio_yosys
167
+ sim:
168
+ - verilator
169
+ - vivado
170
+ - modelsim_ase
171
+ - questa_fse
172
+ - questa_fe
173
+ - questa
174
+ - riviera
175
+ - iverilog
176
+ synth:
177
+ - slang_yosys
178
+ - vivado
179
+ - quartus
180
+ - tabbycad_yosys
181
+ - invio_yosys
182
+ - yosys
183
+ proj:
184
+ - vivado
185
+ - quartus
186
+ build:
187
+ - vivado
188
+ - quartus
189
+ open:
190
+ - vivado
191
+ - quartus
192
+ lec:
193
+ - slang_yosys
194
+ - yosys
195
+
121
196
 
122
197
  tools:
123
198
 
124
199
  # <tool-name>:
200
+ # exe: <Array of strings, or single string, required exe>
201
+ # requires_cmd: <Array of shell commands that must complete with rc=0 for tool to work>
202
+ # requires_py: <Array of strings, python packages requires for tool to work>
203
+ # requires_vscode_extension: <Array of strings, vscode extensions that must be present for
204
+ # tool to work>
205
+ # requires_vsim_helper: <Bool, if True we will determine which vsim exe(s) are present in PATH
206
+ # for tool to work, such that Modelsim, Questa, Riviera can all be
207
+ # present in PATH and each tool can still be chosen>
208
+ # handlers: <Table of {command, python package class name}, for how this tool
209
+ # will run an eda command>
210
+ # disable-auto: <Bool, if True do not allow this to run `eda [command]` with --tool
211
+ # not set>
125
212
  # defines: <Table, macroName: <value|null|> >
126
213
  # log-bad-strings: <Array of strings>
127
214
  # log-must-strings: <Array of strings>
@@ -137,7 +224,34 @@ tools:
137
224
  # simulate-waivers: <Array of strings, no spaces>
138
225
  # coverage-args: <string space separated>
139
226
 
227
+
228
+ vaporview:
229
+ exe: code
230
+ requires_vscode_extension:
231
+ - lramseyer.vaporview
232
+ handlers:
233
+ waves: opencos.commands.waves.CommandWaves
234
+
235
+ surfer:
236
+ exe: code
237
+ requires_vscode_extension:
238
+ - surfer-project.surfer
239
+ handlers:
240
+ waves: opencos.commands.waves.CommandWaves
241
+
242
+ gtkwave:
243
+ exe: gtkwave
244
+ handlers:
245
+ waves: opencos.commands.waves.CommandWaves
246
+
140
247
  slang:
248
+ exe: slang
249
+ requires_cmd:
250
+ - slang --version
251
+ handlers:
252
+ lint: opencos.tools.slang.CommandLintSlang
253
+ elab: opencos.tools.slang.CommandElabSlang
254
+
141
255
  defines:
142
256
  OC_TOOL_SLANG: null
143
257
  log-bad-strings:
@@ -153,6 +267,12 @@ tools:
153
267
  compile-waivers: []
154
268
 
155
269
  verilator:
270
+ exe: verilator
271
+ handlers:
272
+ lint: opencos.tools.verilator.VerilatorLint
273
+ elab: opencos.tools.verilator.VerilatorElab
274
+ sim: opencos.tools.verilator.VerilatorSim
275
+
156
276
  defines: { }
157
277
  log-warning-strings:
158
278
  - "%Warning"
@@ -224,6 +344,13 @@ tools:
224
344
 
225
345
 
226
346
  surelog:
347
+ exe: surelog
348
+ requires_cmd:
349
+ - surelog --version
350
+ handlers:
351
+ lint: opencos.tools.surelog.CommandLintSurelog
352
+ elab: opencos.tools.surelog.CommandElabSurelog
353
+
227
354
  defines:
228
355
  OC_TOOL_SURELOG: null
229
356
  compile-args: |
@@ -231,6 +358,15 @@ tools:
231
358
  -timescale=1ns/1ns
232
359
 
233
360
  invio:
361
+ exe: python3
362
+ requires_cmd:
363
+ - python -c "import invio"
364
+ requires_py:
365
+ - invio
366
+ handlers:
367
+ lint: opencos.tools.invio.CommandLintInvio
368
+ elab: opencos.tools.invio.CommandElabInvio
369
+
234
370
  defines:
235
371
  OC_TOOL_INVIO: null
236
372
  INVIO: null
@@ -238,6 +374,16 @@ tools:
238
374
 
239
375
 
240
376
  riviera:
377
+ exe: vsim
378
+ requires_cmd:
379
+ - which riviera # Do not run it, make sure it's in PATH
380
+ requires_vsim_helper: True
381
+ handlers:
382
+ lint: opencos.tools.riviera.CommandLintRiviera
383
+ elab: opencos.tools.riviera.CommandElabRiviera
384
+ sim: opencos.tools.riviera.CommandSimRiviera
385
+ waves: opencos.commands.waves.CommandWaves
386
+
241
387
  defines:
242
388
  OC_TOOL_RIVIERA: 1
243
389
  RIVIERA: 1
@@ -246,6 +392,7 @@ tools:
246
392
  log-bad-strings:
247
393
  - "Error: "
248
394
  - "Fatal: "
395
+ - "You do not have a valid license to run"
249
396
  log-must-strings:
250
397
  - "VSIM: Simulation has finished"
251
398
  compile-args: |
@@ -263,6 +410,14 @@ tools:
263
410
 
264
411
 
265
412
  modelsim_ase:
413
+ exe: vsim
414
+ requires_vsim_helper: True
415
+ handlers:
416
+ lint: opencos.tools.modelsim_ase.CommandLintModelsimAse
417
+ elab: opencos.tools.modelsim_ase.CommandElabModelsimAse
418
+ sim: opencos.tools.modelsim_ase.CommandSimModelsimAse
419
+ waves: opencos.commands.waves.CommandWaves
420
+
266
421
  defines:
267
422
  OC_ASSERT_PROPERTY_NOT_SUPPORTED: 1
268
423
  OC_TOOL_MODELSIM_ASE: 1
@@ -291,7 +446,90 @@ tools:
291
446
  +acc
292
447
 
293
448
 
294
- questa_fse:
449
+ questa_fe: # FPGA edition
450
+ exe: vsim
451
+ requires_vsim_helper: True
452
+ handlers:
453
+ lint: opencos.tools.questa_fe.CommandLintQuestaFe
454
+ elab: opencos.tools.questa_fe.CommandElabQuestaFe
455
+ sim: opencos.tools.questa_fe.CommandSimQuestaFe
456
+ flist: opencos.tools.questa_fe.CommandFListQuestaFe
457
+ waves: opencos.commands.waves.CommandWaves
458
+
459
+ defines:
460
+ OC_TOOL_QUESTA_FSE: 1
461
+ log-warning-strings:
462
+ - "Warning: "
463
+ log-bad-strings:
464
+ - "Error: "
465
+ - "Fatal: "
466
+ log-must-strings:
467
+ - " vsim "
468
+ - "Errors: 0"
469
+ compile-args: |
470
+ -sv -svinputport=net -lint
471
+ compile-waivers:
472
+ - 2275 # 2275 - Existing package 'myname_pkg' will be overwritten.
473
+ - 2555 # 2555 - assignment to input port myname
474
+ - 2583 # 2583 - [SVCHK] - Extra checking for conflicts with always_comb and
475
+ # always_latch variables is done at vopt time.
476
+ - 13159 # 13159, 2685, 2718 are all related to module instance port default values.
477
+ - 2685
478
+ - 2718
479
+ simulate-waivers:
480
+ - 3009 # 3009: [TSCALE] - Module 'myname' does not have a timeunit/timeprecision
481
+ # specification in effect, but other modules do.
482
+ simulate-waves-args: |
483
+ -voptargs=+acc=bcnprst
484
+
485
+
486
+ questa_fse: # FPGA starter edition
487
+ exe: vsim
488
+ requires_vsim_helper: True
489
+ handlers:
490
+ lint: opencos.tools.questa_fse.CommandLintQuestaFse
491
+ elab: opencos.tools.questa_fse.CommandElabQuestaFse
492
+ sim: opencos.tools.questa_fse.CommandSimQuestaFse
493
+ flist: opencos.tools.questa_fse.CommandFListQuestaFse
494
+ waves: opencos.commands.waves.CommandWaves
495
+
496
+ defines:
497
+ OC_TOOL_QUESTA_FSE: 1
498
+ log-warning-strings:
499
+ - "Warning: "
500
+ log-bad-strings:
501
+ - "Error: "
502
+ - "Fatal: "
503
+ log-must-strings:
504
+ - " vsim "
505
+ - "Errors: 0"
506
+ compile-args: |
507
+ -sv -svinputport=net -lint
508
+ compile-waivers:
509
+ - 2275 # 2275 - Existing package 'myname_pkg' will be overwritten.
510
+ - 2555 # 2555 - assignment to input port myname
511
+ - 2583 # 2583 - [SVCHK] - Extra checking for conflicts with always_comb and
512
+ # always_latch variables is done at vopt time.
513
+ - 13159 # 13159, 2685, 2718 are all related to module instance port default values.
514
+ - 2685
515
+ - 2718
516
+ simulate-waivers:
517
+ - 3009 # 3009: [TSCALE] - Module 'myname' does not have a timeunit/timeprecision
518
+ # specification in effect, but other modules do.
519
+ simulate-waves-args: |
520
+ -voptargs=+acc=bcnprst
521
+
522
+
523
+ questa: # Questa
524
+ exe: vsim
525
+ requires_vsim_helper: True
526
+ handlers:
527
+ lint: opencos.tools.questa.CommandLintQuesta
528
+ elab: opencos.tools.questa.CommandElabQuesta
529
+ sim: opencos.tools.questa.CommandSimQuesta
530
+ flist: opencos.tools.questa.CommandFListQuesta
531
+ waves: opencos.commands.waves.CommandWaves
532
+
295
533
  defines:
296
534
  OC_TOOL_QUESTA_FSE: 1
297
535
  log-warning-strings:
@@ -320,6 +558,12 @@ tools:
320
558
 
321
559
 
322
560
  iverilog:
561
+ exe: iverilog
562
+ handlers:
563
+ lint: opencos.tools.iverilog.CommandLintIverilog
564
+ elab: opencos.tools.iverilog.CommandElabIverilog
565
+ sim: opencos.tools.iverilog.CommandSimIverilog
566
+
323
567
  log-warning-strings:
324
568
  - "Warning:"
325
569
  - "WARNING:"
@@ -340,6 +584,15 @@ tools:
340
584
  +trace
341
585
 
342
586
  cocotb:
587
+ disable-auto: True # do not allow this to run `eda sim` with --tool not set
588
+ exe: python
589
+ requires_cmd:
590
+ - python -c "import cocotb; print(cocotb.__version__)"
591
+ requires_py:
592
+ - cocotb
593
+ handlers:
594
+ sim: opencos.tools.cocotb.CommandSimCocotb
595
+
343
596
  defines:
344
597
  OC_TOOL_COCOTB: null
345
598
  log-warning-strings:
@@ -357,10 +610,32 @@ tools:
357
610
 
358
611
 
359
612
  quartus:
613
+ exe: quartus_sh
614
+ handlers:
615
+ synth: opencos.tools.quartus.CommandSynthQuartus
616
+ build: opencos.tools.quartus.CommandBuildQuartus
617
+ flist: opencos.tools.quartus.CommandFListQuartus
618
+ proj: opencos.tools.quartus.CommandProjQuartus
619
+ upload: opencos.tools.quartus.CommandUploadQuartus
620
+ open: opencos.tools.quartus.CommandOpenQuartus
621
+
360
622
  defines:
361
623
  OC_TOOL_QUARTUS: null
362
624
 
363
625
  vivado:
626
+ exe: vivado
627
+ handlers:
628
+ lint: opencos.tools.vivado.CommandLintVivado
629
+ elab: opencos.tools.vivado.CommandElabVivado
630
+ sim: opencos.tools.vivado.CommandSimVivado
631
+ synth: opencos.tools.vivado.CommandSynthVivado
632
+ proj: opencos.tools.vivado.CommandProjVivado
633
+ upload: opencos.tools.vivado.CommandUploadVivado
634
+ open: opencos.tools.vivado.CommandOpenVivado
635
+ flist: opencos.tools.vivado.CommandFListVivado
636
+ build: opencos.tools.vivado.CommandBuildVivado
637
+ waves: opencos.commands.waves.CommandWaves
638
+
364
639
  log-warning-strings:
365
640
  - "WARNING: "
366
641
  - "Warning: "
@@ -386,187 +661,36 @@ tools:
386
661
  simulate-args: |
387
662
  snapshot --stats --onerror quit
388
663
 
389
-
390
- #
391
- # auto_tools_order
392
- # -- should be used when a new tool is added.
393
- # -- Is in-order for the handlers, so Verilator is the default simulator if
394
- # verilator is installed and the eda command is "sim".
395
- #
396
- auto_tools_order:
397
- - # This is a list so config changes use Strategy.REPLACE to replace it
398
-
399
- slang:
400
- exe: slang
401
- requires_cmd:
402
- - slang --version
403
- handlers:
404
- lint: opencos.tools.slang.CommandLintSlang
405
- elab: opencos.tools.slang.CommandElabSlang
406
-
407
- verilator:
408
- exe: verilator
409
- handlers:
410
- lint: opencos.tools.verilator.VerilatorLint
411
- elab: opencos.tools.verilator.VerilatorElab
412
- sim: opencos.tools.verilator.VerilatorSim
413
-
414
- # TODO(drew): surelog is disabled from `eda tools-multi`. It is still
415
- # enabled for `eda [multi] elab --tool surelog`. It does not support
416
- # type comparisons:
417
- # if type(myname) == type(othername)
418
- # [ERR:UH0700] ... Unsupported expression
419
- # modelsim_ase also doesn't, but it won't fail elab, whereas surelog does.
420
- surelog:
421
- disable-tools-multi: true # surelog doesn't support enough of IEEE-1800
422
- exe: surelog
423
- requires_cmd:
424
- - surelog --version
425
- handlers:
426
- lint: opencos.tools.surelog.CommandLintSurelog
427
- elab: opencos.tools.surelog.CommandElabSurelog
428
-
429
- invio:
430
- exe: python3
431
- requires_cmd:
432
- - python -c "import invio"
433
- requires_py:
434
- - invio
435
- handlers:
436
- lint: opencos.tools.invio.CommandLintInvio
437
- elab: opencos.tools.invio.CommandElabInvio
438
-
439
- vaporview:
440
- exe: code
441
- requires_vscode_extension:
442
- - lramseyer.vaporview
443
- handlers: { }
444
-
445
- surfer:
446
- exe: code
447
- requires_vscode_extension:
448
- - surfer-project.surfer
449
- handlers: { }
450
-
451
- gtkwave:
452
- exe: gtkwave
453
- handlers: { }
454
-
455
- quartus:
456
- exe: quartus_sh
457
- handlers:
458
- synth: opencos.tools.quartus.CommandSynthQuartus
459
- build: opencos.tools.quartus.CommandBuildQuartus
460
- flist: opencos.tools.quartus.CommandFListQuartus
461
- proj: opencos.tools.quartus.CommandProjQuartus
462
- upload: opencos.tools.quartus.CommandUploadQuartus
463
- open: opencos.tools.quartus.CommandOpenQuartus
464
-
465
- vivado:
466
- exe: vivado
467
- handlers:
468
- lint: opencos.tools.vivado.CommandLintVivado
469
- elab: opencos.tools.vivado.CommandElabVivado
470
- sim: opencos.tools.vivado.CommandSimVivado
471
- synth: opencos.tools.vivado.CommandSynthVivado
472
- proj: opencos.tools.vivado.CommandProjVivado
473
- upload: opencos.tools.vivado.CommandUploadVivado
474
- open: opencos.tools.vivado.CommandOpenVivado
475
- flist: opencos.tools.vivado.CommandFListVivado
476
- build: opencos.tools.vivado.CommandBuildVivado
477
-
478
- slang_yosys:
479
- exe: yosys
480
- requires_cmd:
481
- - yosys -m slang
482
- handlers:
483
- elab: opencos.tools.slang_yosys.CommandElabSlangYosys
484
- synth: opencos.tools.slang_yosys.CommandSynthSlangYosys
485
- lec: opencos.tools.slang_yosys.CommandLecSlangYosys
486
-
487
- tabbycad_yosys:
488
- exe: yosys
489
- requires_env:
490
- - YOSYSHQ_LICENSE
491
- handlers:
492
- synth: opencos.tools.tabbycad_yosys.CommandSynthTabbyCadYosys
493
-
494
- invio_yosys:
495
- exe: yosys
496
- requires_cmd:
497
- - python -c "import invio"
498
- requires_py:
499
- - invio
500
- handlers:
501
- elab: opencos.tools.invio_yosys.CommandElabInvioYosys
502
- synth: opencos.tools.invio_yosys.CommandSynthInvioYosys
503
-
504
- yosys:
505
- exe: yosys
506
- requires_cmd:
507
- - yosys
508
- handlers:
509
- synth: opencos.tools.slang_yosys.CommonSynthYosys
510
- lec: opencos.tools.slang_yosys.CommandLecYosys
511
-
512
- questa:
513
- exe: vsim
514
- requires_vsim_helper: True
515
- handlers:
516
- lint: opencos.tools.questa.CommandLintQuesta
517
- elab: opencos.tools.questa.CommandElabQuesta
518
- sim: opencos.tools.questa.CommandSimQuesta
519
- flist: opencos.tools.questa.CommandFListQuesta
520
-
521
- riviera:
522
- exe: vsim
523
- requires_cmd:
524
- - which riviera # Do not run it, make sure it's in PATH
525
- requires_vsim_helper: True
526
- handlers:
527
- lint: opencos.tools.riviera.CommandLintRiviera
528
- elab: opencos.tools.riviera.CommandElabRiviera
529
- sim: opencos.tools.riviera.CommandSimRiviera
530
-
531
- questa_fe:
532
- exe: vsim
533
- requires_vsim_helper: True
534
- handlers:
535
- lint: opencos.tools.questa_fe.CommandLintQuestaFe
536
- elab: opencos.tools.questa_fe.CommandElabQuestaFe
537
- sim: opencos.tools.questa_fe.CommandSimQuestaFe
538
- flist: opencos.tools.questa_fe.CommandFListQuestaFe
539
-
540
- questa_fse: # free student edition, works similar to modelsim_ase
541
- exe: vsim
542
- requires_vsim_helper: True
543
- handlers:
544
- lint: opencos.tools.questa_fse.CommandLintQuestaFse
545
- elab: opencos.tools.questa_fse.CommandElabQuestaFse
546
- sim: opencos.tools.questa_fse.CommandSimQuestaFse
547
- flist: opencos.tools.questa_fse.CommandFListQuestaFse
548
-
549
- modelsim_ase:
550
- exe: vsim
551
- requires_vsim_helper: True
552
- handlers:
553
- lint: opencos.tools.modelsim_ase.CommandLintModelsimAse
554
- elab: opencos.tools.modelsim_ase.CommandElabModelsimAse
555
- sim: opencos.tools.modelsim_ase.CommandSimModelsimAse
556
-
557
- iverilog:
558
- exe: iverilog
559
- handlers:
560
- lint: opencos.tools.iverilog.CommandLintIverilog
561
- elab: opencos.tools.iverilog.CommandElabIverilog
562
- sim: opencos.tools.iverilog.CommandSimIverilog
563
-
564
- cocotb:
565
- disable-auto: True # do not allow this to run `eda sim` with --tool not set
566
- exe: python
567
- requires_cmd:
568
- - python -c "import cocotb; print(cocotb.__version__)"
569
- requires_py:
570
- - cocotb
571
- handlers:
572
- sim: opencos.tools.cocotb.CommandSimCocotb
664
+ slang_yosys:
665
+ exe: yosys
666
+ requires_cmd:
667
+ - yosys -m slang
668
+ handlers:
669
+ elab: opencos.tools.slang_yosys.CommandElabSlangYosys
670
+ synth: opencos.tools.slang_yosys.CommandSynthSlangYosys
671
+ lec: opencos.tools.slang_yosys.CommandLecSlangYosys
672
+
673
+ tabbycad_yosys:
674
+ exe: yosys
675
+ requires_env:
676
+ - YOSYSHQ_LICENSE
677
+ handlers:
678
+ synth: opencos.tools.tabbycad_yosys.CommandSynthTabbyCadYosys
679
+
680
+ invio_yosys:
681
+ exe: yosys
682
+ requires_cmd:
683
+ - python -c "import invio"
684
+ requires_py:
685
+ - invio
686
+ handlers:
687
+ elab: opencos.tools.invio_yosys.CommandElabInvioYosys
688
+ synth: opencos.tools.invio_yosys.CommandSynthInvioYosys
689
+
690
+ yosys:
691
+ exe: yosys
692
+ requires_cmd:
693
+ - yosys
694
+ handlers:
695
+ synth: opencos.tools.slang_yosys.CommonSynthYosys
696
+ 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