diff --git a/.gitignore b/.gitignore
index ce04596b..cb6d6a2e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -26,4 +26,5 @@ resources/project_manager/help
*quartus.rec
*.cf
*.o
-Project**
\ No newline at end of file
+./venv
+./work
\ No newline at end of file
diff --git a/.vscode/launch.json b/.vscode/launch.json
index 762f81de..826719ae 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -39,8 +39,14 @@
"name": "Run TerosHDL",
"sourceMaps": true,
"outFiles": [
- "${workspaceFolder}/out/**/*.js",
+ "${workspaceFolder}/out/**/*.js"
],
+ "sourceMapPathOverrides": {
+ "../../../../../src/*": "${workspaceFolder}/src/*",
+ "src/*": "${workspaceFolder}/src/*",
+ "out/*": "${workspaceFolder}/out/*",
+ "webpack:///./out/*": "${workspaceFolder}/out/*"
+ },
"preLaunchTask": "teros watch",
"request": "launch",
"type": "extensionHost"
diff --git a/package.json b/package.json
index 1bc3c141..0c7e0889 100644
--- a/package.json
+++ b/package.json
@@ -34,9 +34,8 @@
},
"main": "./out/teroshdl/extension.js",
"_moduleAliases": {
- "colibri": "./out/colibri"
+ "colibri": "./out/colibri"
},
-
"contributes": {
"viewsContainers": {
"activitybar": [
@@ -130,8 +129,7 @@
"view": "teroshdl-view-actions",
"contents": "[Verify Setup](command:teroshdl.verifySetup)\n[Open Global Settings Menu](command:teroshdl.configuration.global)\n[Export Settings](command:teroshdl.view.project.export_configuration)\n[Load Settings](command:teroshdl.view.project.load_configuration)\n[Documentation](command:teroshdl.documentation)"
}
- ],
-
+ ],
"grammars": [
{
"language": "logTerosHDL",
@@ -180,268 +178,212 @@
}
],
"menus": {
- "editor/context": [
-
- ],
+ "editor/context": [],
"explorer/context": [
-
{
"when": "resourceLangId == gtkw_wavebin || resourceLangId == gtkw_waveconfig || resourceLangId == vcd",
-
"command": "teroshdl.waveform",
"group": "navigation"
}
-
],
"view/title": [
-
{
"when": "view == teroshdl-project",
-
"command": "teroshdl.view.project.add",
"group": "navigation"
- }
-
- ,{
+ },
+ {
"when": "view == teroshdl-view-source",
-
"command": "teroshdl.view.source.save_project",
"group": "navigation"
- }
-
- ,{
+ },
+ {
"when": "view == teroshdl-view-source",
-
"command": "teroshdl.view.source.search",
"group": "navigation"
- }
-
- ,{
+ },
+ {
"when": "view == teroshdl-view-source",
-
"command": "teroshdl.view.source.add",
"group": "navigation"
- }
-
- ,{
+ },
+ {
"when": "view == teroshdl-view-dependency",
-
"command": "teroshdl.view.dependency.refresh",
"group": "navigation"
- }
-
- ,{
+ },
+ {
"when": "view == teroshdl-view-dependency",
-
"command": "teroshdl.view.dependency.schematic",
"group": "navigation"
- }
-
- ,{
+ },
+ {
"when": "view == teroshdl-view-dependency",
-
"command": "teroshdl.view.dependency.viewer",
"group": "navigation"
- }
-
- ,{
+ },
+ {
"when": "view == teroshdl-view-runs",
-
"command": "teroshdl.view.runs.run_all",
"group": "navigation"
- }
-
- ,{
+ },
+ {
"when": "view == teroshdl-view-runs",
-
"command": "teroshdl.view.runs.stop",
"group": "navigation"
- }
-
- ,{
+ },
+ {
"when": "view == teroshdl-view-runs",
-
"command": "teroshdl.view.runs.refresh",
"group": "navigation"
- }
-
- ,{
+ },
+ {
"when": "view == teroshdl-view-tasks && view == teroshdl-view-tasks",
-
"command": "teroshdl.view.tasks.stop",
"group": "navigation"
- }
-
- ,{
+ },
+ {
"when": "view == teroshdl-view-tasks && view == teroshdl-view-tasks",
-
"command": "teroshdl.view.tasks.clean",
"group": "navigation"
- }
-
- ,{
+ },
+ {
"when": "view == teroshdl-view-watcher && view == teroshdl-view-watcher",
-
"command": "teroshdl.view.watcher.add",
"group": "navigation"
- }
-
- ,{
+ },
+ {
"when": "view == teroshdl-view-output && view == teroshdl-view-output",
-
"command": "teroshdl.view.outputs.clean",
"group": "navigation"
}
-
],
"view/item/context": [
-
- {
- "when": "viewItem == project && view == teroshdl-project",
- "command": "teroshdl.configuration.project",
- "group": "inline"
- }
-
- ,{
- "when": "viewItem == project && view == teroshdl-project",
- "command": "teroshdl.view.project.delete",
- "group": "inline"
- }
-
- ,{
- "when": "viewItem == project && view == teroshdl-project",
- "command": "teroshdl.view.project.rename",
- "group": "inline"
- }
-
- ,{
- "when": "viewItem == library && view == teroshdl-view-source",
- "command": "teroshdl.view.source.add_source_to_library",
- "group": "inline"
- }
-
- ,{
- "when": "viewItem == library && view == teroshdl-view-source",
- "command": "teroshdl.view.source.delete_library",
- "group": "inline"
- }
-
- ,{
- "when": "viewItem == source && view == teroshdl-view-source",
- "command": "teroshdl.view.source.properties",
- "group": "inline"
- }
-
- ,{
- "when": "viewItem == source && view == teroshdl-view-source",
- "command": "teroshdl.view.source.delete_source",
- "group": "inline"
- }
-
- ,{
- "when": "viewItem == source && view == teroshdl-view-source",
- "command": "teroshdl.view.source.select_toplevel",
- "group": "inline"
- }
-
- ,{
- "when": "viewItem == run && view == teroshdl-view-runs",
- "command": "teroshdl.view.runs.run",
- "group": "inline"
- }
-
- ,{
- "when": "viewItem =~ /logs/ && view == teroshdl-view-tasks",
- "command": "teroshdl.view.tasks.logs",
- "group": "inline"
- }
-
- ,{
- "when": "viewItem =~ /report/ && view == teroshdl-view-tasks",
- "command": "teroshdl.view.tasks.report",
- "group": "inline"
- }
-
- ,{
- "when": "viewItem =~ /timinganalyzer/ && view == teroshdl-view-tasks",
- "command": "teroshdl.view.tasks.timing_analyzer",
- "group": "inline"
- }
-
- ,{
- "when": "viewItem =~ /technologymapviewer/ && view == teroshdl-view-tasks",
- "command": "teroshdl.view.tasks.technology_map_viewer",
- "group": "inline"
- }
-
- ,{
- "when": "viewItem =~ /snapshotviewer/ && view == teroshdl-view-tasks",
- "command": "teroshdl.view.tasks.snapshotviewer",
- "group": "inline"
- }
-
- ,{
- "when": "viewItem == watcher && view == teroshdl-view-watcher",
- "command": "teroshdl.view.watcher.delete",
- "group": "inline"
- }
-
+ {
+ "when": "viewItem == project && view == teroshdl-project",
+ "command": "teroshdl.configuration.project",
+ "group": "inline"
+ },
+ {
+ "when": "viewItem == project && view == teroshdl-project",
+ "command": "teroshdl.view.project.delete",
+ "group": "inline"
+ },
+ {
+ "when": "viewItem == project && view == teroshdl-project",
+ "command": "teroshdl.view.project.rename",
+ "group": "inline"
+ },
+ {
+ "when": "viewItem == library && view == teroshdl-view-source",
+ "command": "teroshdl.view.source.add_source_to_library",
+ "group": "inline"
+ },
+ {
+ "when": "viewItem == library && view == teroshdl-view-source",
+ "command": "teroshdl.view.source.delete_library",
+ "group": "inline"
+ },
+ {
+ "when": "viewItem == source && view == teroshdl-view-source",
+ "command": "teroshdl.view.source.properties",
+ "group": "inline"
+ },
+ {
+ "when": "viewItem == source && view == teroshdl-view-source",
+ "command": "teroshdl.view.source.delete_source",
+ "group": "inline"
+ },
+ {
+ "when": "viewItem == source && view == teroshdl-view-source",
+ "command": "teroshdl.view.source.select_toplevel",
+ "group": "inline"
+ },
+ {
+ "when": "viewItem == run && view == teroshdl-view-runs",
+ "command": "teroshdl.view.runs.run",
+ "group": "inline"
+ },
+ {
+ "when": "viewItem =~ /logs/ && view == teroshdl-view-tasks",
+ "command": "teroshdl.view.tasks.logs",
+ "group": "inline"
+ },
+ {
+ "when": "viewItem =~ /report/ && view == teroshdl-view-tasks",
+ "command": "teroshdl.view.tasks.report",
+ "group": "inline"
+ },
+ {
+ "when": "viewItem =~ /timinganalyzer/ && view == teroshdl-view-tasks",
+ "command": "teroshdl.view.tasks.timing_analyzer",
+ "group": "inline"
+ },
+ {
+ "when": "viewItem =~ /technologymapviewer/ && view == teroshdl-view-tasks",
+ "command": "teroshdl.view.tasks.technology_map_viewer",
+ "group": "inline"
+ },
+ {
+ "when": "viewItem =~ /snapshotviewer/ && view == teroshdl-view-tasks",
+ "command": "teroshdl.view.tasks.snapshotviewer",
+ "group": "inline"
+ },
+ {
+ "when": "viewItem == watcher && view == teroshdl-view-watcher",
+ "command": "teroshdl.view.watcher.delete",
+ "group": "inline"
+ }
],
"editor/title": [
-
{
"when": "resourceLangId == verilog || resourceLangId == systemverilog || resourceLangId == vhdl",
"command": "teroshdl.generate_template",
"group": "navigation"
- }
-
- ,{
+ },
+ {
"when": "resourceLangId == verilog || resourceLangId == systemverilog || resourceLangId == vhdl",
"command": "teroshdl.state_machine.viewer",
"group": "navigation"
- }
-
- ,{
+ },
+ {
"when": "resourceLangId == verilog || resourceLangId == systemverilog || resourceLangId == vhdl",
"command": "teroshdl.netlist.viewer",
"group": "navigation"
- }
-
- ,{
+ },
+ {
"when": "resourceLangId == verilog || resourceLangId == systemverilog || resourceLangId == vhdl",
"command": "teroshdl.format",
"group": "navigation"
- }
-
- ,{
+ },
+ {
"when": "resourceLangId == verilog || resourceLangId == systemverilog || resourceLangId == vhdl",
"command": "teroshdl.documentation.module",
"group": "navigation"
}
-
]
},
"commands": [
{
"command": "teroshdl.go_to_parent",
"title": "Go to parent file"
- },
+ },
{
"command": "teroshdl.open",
"title": "Open file with TerosHDL"
- },
+ },
{
"command": "teroshdl.configuration.global",
"title": "TerosHDL: Open Global Settings Menu"
- },
+ },
{
"command": "teroshdl.verifySetup",
"title": "TerosHDL: Verify Setup"
- },
+ },
{
"command": "teroshdl.waveform",
"title": "Open waveform viewer"
- },
+ },
{
"command": "teroshdl.view.project.add",
"icon": {
@@ -449,7 +391,7 @@
"dark": "resources/icon/dark/add.svg"
},
"title": "Add project"
- },
+ },
{
"command": "teroshdl.configuration.project",
"icon": {
@@ -457,7 +399,7 @@
"dark": "resources/icon/dark/gear.svg"
},
"title": "Open Project Settings"
- },
+ },
{
"command": "teroshdl.view.project.delete",
"icon": {
@@ -465,7 +407,7 @@
"dark": "resources/icon/dark/chrome-close.svg"
},
"title": "Delete project"
- },
+ },
{
"command": "teroshdl.view.project.rename",
"icon": {
@@ -473,7 +415,7 @@
"dark": "resources/icon/dark/edit.svg"
},
"title": "Rename project"
- },
+ },
{
"command": "teroshdl.view.source.save_project",
"icon": {
@@ -481,7 +423,7 @@
"dark": "resources/icon/dark/save.svg"
},
"title": "Save Project"
- },
+ },
{
"command": "teroshdl.view.source.search",
"icon": {
@@ -489,7 +431,7 @@
"dark": "resources/icon/dark/search.svg"
},
"title": "Search"
- },
+ },
{
"command": "teroshdl.view.source.add",
"icon": {
@@ -497,7 +439,7 @@
"dark": "resources/icon/dark/add.svg"
},
"title": "Add"
- },
+ },
{
"command": "teroshdl.view.source.add_source_to_library",
"icon": {
@@ -505,7 +447,7 @@
"dark": "resources/icon/dark/add.svg"
},
"title": "Add to library"
- },
+ },
{
"command": "teroshdl.view.source.delete_library",
"icon": {
@@ -513,7 +455,7 @@
"dark": "resources/icon/dark/dash.svg"
},
"title": "Delete library"
- },
+ },
{
"command": "teroshdl.view.source.properties",
"icon": {
@@ -521,7 +463,7 @@
"dark": "resources/icon/dark/gear.svg"
},
"title": "File Properties"
- },
+ },
{
"command": "teroshdl.view.source.delete_source",
"icon": {
@@ -529,7 +471,7 @@
"dark": "resources/icon/dark/dash.svg"
},
"title": "Delete source"
- },
+ },
{
"command": "teroshdl.view.source.select_toplevel",
"icon": {
@@ -537,7 +479,7 @@
"dark": "resources/icon/dark/check.svg"
},
"title": "Select source as toplevel"
- },
+ },
{
"command": "teroshdl.view.dependency.refresh",
"icon": {
@@ -545,7 +487,7 @@
"dark": "resources/icon/dark/refresh.svg"
},
"title": "Refresh"
- },
+ },
{
"command": "teroshdl.view.dependency.schematic",
"icon": {
@@ -553,7 +495,7 @@
"dark": "resources/icon/dark/list-tree.svg"
},
"title": "Schematic viewer"
- },
+ },
{
"command": "teroshdl.view.dependency.viewer",
"icon": {
@@ -561,7 +503,7 @@
"dark": "resources/icon/dark/dep.svg"
},
"title": "Dependencies viewer"
- },
+ },
{
"command": "teroshdl.view.runs.run_all",
"icon": {
@@ -569,7 +511,7 @@
"dark": "resources/icon/dark/run-all.svg"
},
"title": "Run all"
- },
+ },
{
"command": "teroshdl.view.runs.stop",
"icon": {
@@ -577,7 +519,7 @@
"dark": "resources/icon/dark/stop.svg"
},
"title": "Stop"
- },
+ },
{
"command": "teroshdl.view.runs.refresh",
"icon": {
@@ -585,7 +527,7 @@
"dark": "resources/icon/dark/refresh.svg"
},
"title": "Refresh"
- },
+ },
{
"command": "teroshdl.view.runs.run",
"icon": {
@@ -593,7 +535,7 @@
"dark": "resources/icon/dark/run.svg"
},
"title": "TerosHDL: Run Tool"
- },
+ },
{
"command": "teroshdl.view.tasks.stop",
"icon": {
@@ -601,7 +543,7 @@
"dark": "resources/icon/dark/stop.svg"
},
"title": "Stop"
- },
+ },
{
"command": "teroshdl.view.tasks.clean",
"icon": {
@@ -609,7 +551,7 @@
"dark": "resources/icon/dark/trash.svg"
},
"title": "Clean project"
- },
+ },
{
"command": "teroshdl.view.tasks.logs",
"icon": {
@@ -617,7 +559,7 @@
"dark": "resources/icon/dark/database.svg"
},
"title": "Open Log"
- },
+ },
{
"command": "teroshdl.view.tasks.report",
"icon": {
@@ -625,7 +567,7 @@
"dark": "resources/icon/dark/output.svg"
},
"title": "Open Report"
- },
+ },
{
"command": "teroshdl.view.tasks.timing_analyzer",
"icon": {
@@ -633,7 +575,7 @@
"dark": "resources/icon/dark/watch.svg"
},
"title": "Open Timing Analyzer"
- },
+ },
{
"command": "teroshdl.view.tasks.technology_map_viewer",
"icon": {
@@ -641,7 +583,7 @@
"dark": "resources/icon/dark/search.svg"
},
"title": "Open Technology Map Viewer"
- },
+ },
{
"command": "teroshdl.view.tasks.snapshotviewer",
"icon": {
@@ -649,63 +591,63 @@
"dark": "resources/icon/dark/eye.svg"
},
"title": "Open Snapshop Viewer"
- },
+ },
{
"command": "teroshdl.project.quartus.rtlAnalyzer",
"title": "TerosHDL [Quartus]: Open RTL Analyzer"
- },
+ },
{
"command": "teroshdl.project.quartus.compileDesigh",
"title": "TerosHDL [Quartus]: Run Compile Design"
- },
+ },
{
"command": "teroshdl.project.quartus.analysisAndSynthesis",
"title": "TerosHDL [Quartus]: run Analysis and Synthesis"
- },
+ },
{
"command": "teroshdl.project.quartus.analysisAndElaboration",
"title": "TerosHDL [Quartus]: run Analysis and Elaboration"
- },
+ },
{
"command": "teroshdl.project.quartus.synthesis",
"title": "TerosHDL [Quartus]: run Synthesis"
- },
+ },
{
"command": "teroshdl.project.quartus.earlyTimingAnalysis",
"title": "TerosHDL [Quartus]: run Early Timing Analysis"
- },
+ },
{
"command": "teroshdl.project.quartus.fitter",
"title": "TerosHDL [Quartus]: run Fitter"
- },
+ },
{
"command": "teroshdl.project.quartus.fitterImplement",
"title": "TerosHDL [Quartus]: run Fitter Implement"
- },
+ },
{
"command": "teroshdl.project.quartus.plan",
"title": "TerosHDL [Quartus]: run Plan"
- },
+ },
{
"command": "teroshdl.project.quartus.place",
"title": "TerosHDL [Quartus]: run Place"
- },
+ },
{
"command": "teroshdl.project.quartus.route",
"title": "TerosHDL [Quartus]: run Route"
- },
+ },
{
"command": "teroshdl.project.quartus.fitterFinalize",
"title": "TerosHDL [Quartus]: run Fitter Finalize"
- },
+ },
{
"command": "teroshdl.project.quartus.timingAnalysisSignoff",
"title": "TerosHDL [Quartus]: run Timing Analysis Signoff"
- },
+ },
{
"command": "teroshdl.project.quartus.assembler",
"title": "TerosHDL [Quartus]: run Assembler"
- },
+ },
{
"command": "teroshdl.view.watcher.add",
"icon": {
@@ -713,7 +655,7 @@
"dark": "resources/icon/dark/add.svg"
},
"title": "Add"
- },
+ },
{
"command": "teroshdl.view.watcher.delete",
"icon": {
@@ -721,7 +663,7 @@
"dark": "resources/icon/dark/dash.svg"
},
"title": "Delete watcher"
- },
+ },
{
"command": "teroshdl.view.outputs.clean",
"icon": {
@@ -729,7 +671,7 @@
"dark": "resources/icon/dark/trash.svg"
},
"title": "Clean project"
- },
+ },
{
"command": "teroshdl.generate_template",
"icon": {
@@ -737,7 +679,7 @@
"dark": "resources/icon/dark/file-code.svg"
},
"title": "TerosHDL: Generate template"
- },
+ },
{
"command": "teroshdl.state_machine.viewer",
"icon": {
@@ -745,7 +687,7 @@
"dark": "resources/icon/dark/state-machine.svg"
},
"title": "State machine viewer"
- },
+ },
{
"command": "teroshdl.netlist.viewer",
"icon": {
@@ -753,7 +695,7 @@
"dark": "resources/icon/dark/list-tree.svg"
},
"title": "Schematic viewer"
- },
+ },
{
"command": "teroshdl.format",
"icon": {
@@ -761,7 +703,7 @@
"dark": "resources/icon/dark/check.svg"
},
"title": "Format"
- },
+ },
{
"command": "teroshdl.documentation.module",
"icon": {
@@ -772,115 +714,161 @@
}
],
"languages": [
-
- {
- "id": "vhdl",
- "aliases": ["VHDL", "vhdl"],
- "configuration": "./configs/vhdl.configuration.json",
- "extensions": [".vhd", ".vho", ".vhdl", ".vhd"],
- "icon": {
- "light": "./resources/icon/light/vhdl.svg",
- "dark": "./resources/icon/dark/vhdl.svg"
- }
- }
-
- ,{
- "id": "verilog",
- "aliases": ["Verilog", "verilog"],
- "configuration": "./configs/verilog.configuration.json",
- "extensions": [".v", ".vh", ".vl"],
- "icon": {
- "light": "./resources/icon/light/verilog.svg",
- "dark": "./resources/icon/dark/verilog.svg"
- }
- }
-
- ,{
- "id": "systemverilog",
- "aliases": ["System Verilog", "systemverilog"],
- "configuration": "./configs/systemverilog.configuration.json",
- "extensions": [".sv", ".svh", ".SV"],
- "icon": {
- "light": "./resources/icon/light/systemverilog.svg",
- "dark": "./resources/icon/dark/systemverilog.svg"
- }
- }
-
- ,{
- "id": "vcd",
- "extensions": [".vcd"]
- }
-
- ,{
- "id": "logTerosHDL",
- "extensions": [".logTerosHDL"]
- }
-
- ,{
- "id": "gtkw_waveconfig",
- "extensions": [".gtkw"]
- }
-
- ,{
- "id": "gtkw_wavebin",
- "extensions": [".fst", ".ghw"]
- }
-
- ,{
- "id": "tcl",
- "aliases": ["TCL", "tcl"],
- "configuration": "./configs/tcl.configuration.json",
- "extensions": [".tcl", ".pro"],
- "icon": {
- "light": "./resources/icon/light/tcl.svg",
- "dark": "./resources/icon/dark/tcl.svg"
- }
- }
-
- ,{
- "id": "ucf",
- "aliases": ["vivado ucf", "ucf constraints"],
- "configuration": "./configs/ucfconstraints.configuration.json",
- "extensions": [".ucf"],
- "icon": {
- "light": "./resources/icon/light/ucf.svg",
- "dark": "./resources/icon/dark/ucf.svg"
- }
- }
-
- ,{
- "id": "xdc",
- "aliases": ["vivado xdc", "xdc constraints"],
- "configuration": "./configs/xdcconstraints.configuration.json",
- "extensions": [".xdc", ".sdc"],
- "icon": {
- "light": "./resources/icon/light/xdc.svg",
- "dark": "./resources/icon/dark/xdc.svg"
- }
- }
-
- ,{
- "id": "ldc",
- "aliases": ["lattice constraints"],
- "configuration": "./configs/xdcconstraints.configuration.json",
- "extensions": [".ldc", ".pdc"],
- "icon": {
- "light": "./resources/icon/light/xdc.svg",
- "dark": "./resources/icon/dark/xdc.svg"
- }
- }
-
- ,{
- "id": "TL-Verilog",
- "aliases": ["TL-Verilog", "tlv", "Transactional-Level Verilog"],
- "configuration": "./configs/tlverilog.configuration.json",
- "extensions": [".tlv"],
- "icon": {
- "light": "./resources/icon/light/verilog.svg",
- "dark": "./resources/icon/dark/verilog.svg"
+ {
+ "id": "vhdl",
+ "aliases": [
+ "VHDL",
+ "vhdl"
+ ],
+ "configuration": "./configs/vhdl.configuration.json",
+ "extensions": [
+ ".vhd",
+ ".vho",
+ ".vhdl",
+ ".vhd"
+ ],
+ "icon": {
+ "light": "./resources/icon/light/vhdl.svg",
+ "dark": "./resources/icon/dark/vhdl.svg"
+ }
+ },
+ {
+ "id": "verilog",
+ "aliases": [
+ "Verilog",
+ "verilog"
+ ],
+ "configuration": "./configs/verilog.configuration.json",
+ "extensions": [
+ ".v",
+ ".vh",
+ ".vl"
+ ],
+ "icon": {
+ "light": "./resources/icon/light/verilog.svg",
+ "dark": "./resources/icon/dark/verilog.svg"
+ }
+ },
+ {
+ "id": "systemverilog",
+ "aliases": [
+ "System Verilog",
+ "systemverilog"
+ ],
+ "configuration": "./configs/systemverilog.configuration.json",
+ "extensions": [
+ ".sv",
+ ".svh",
+ ".SV"
+ ],
+ "icon": {
+ "light": "./resources/icon/light/systemverilog.svg",
+ "dark": "./resources/icon/dark/systemverilog.svg"
+ }
+ },
+ {
+ "id": "vcd",
+ "extensions": [
+ ".vcd"
+ ]
+ },
+ {
+ "id": "logTerosHDL",
+ "extensions": [
+ ".logTerosHDL"
+ ]
+ },
+ {
+ "id": "gtkw_waveconfig",
+ "extensions": [
+ ".gtkw"
+ ]
+ },
+ {
+ "id": "gtkw_wavebin",
+ "extensions": [
+ ".fst",
+ ".ghw"
+ ]
+ },
+ {
+ "id": "tcl",
+ "aliases": [
+ "TCL",
+ "tcl"
+ ],
+ "configuration": "./configs/tcl.configuration.json",
+ "extensions": [
+ ".tcl",
+ ".pro"
+ ],
+ "icon": {
+ "light": "./resources/icon/light/tcl.svg",
+ "dark": "./resources/icon/dark/tcl.svg"
+ }
+ },
+ {
+ "id": "ucf",
+ "aliases": [
+ "vivado ucf",
+ "ucf constraints"
+ ],
+ "configuration": "./configs/ucfconstraints.configuration.json",
+ "extensions": [
+ ".ucf"
+ ],
+ "icon": {
+ "light": "./resources/icon/light/ucf.svg",
+ "dark": "./resources/icon/dark/ucf.svg"
+ }
+ },
+ {
+ "id": "xdc",
+ "aliases": [
+ "vivado xdc",
+ "xdc constraints"
+ ],
+ "configuration": "./configs/xdcconstraints.configuration.json",
+ "extensions": [
+ ".xdc",
+ ".sdc"
+ ],
+ "icon": {
+ "light": "./resources/icon/light/xdc.svg",
+ "dark": "./resources/icon/dark/xdc.svg"
+ }
+ },
+ {
+ "id": "ldc",
+ "aliases": [
+ "lattice constraints"
+ ],
+ "configuration": "./configs/xdcconstraints.configuration.json",
+ "extensions": [
+ ".ldc",
+ ".pdc"
+ ],
+ "icon": {
+ "light": "./resources/icon/light/xdc.svg",
+ "dark": "./resources/icon/dark/xdc.svg"
+ }
+ },
+ {
+ "id": "TL-Verilog",
+ "aliases": [
+ "TL-Verilog",
+ "tlv",
+ "Transactional-Level Verilog"
+ ],
+ "configuration": "./configs/tlverilog.configuration.json",
+ "extensions": [
+ ".tlv"
+ ],
+ "icon": {
+ "light": "./resources/icon/light/verilog.svg",
+ "dark": "./resources/icon/dark/verilog.svg"
+ }
}
- }
-
],
"snippets": [
{
@@ -916,7 +904,6 @@
"path": "./snippets/verilog/verilog.json"
}
],
-
"keybindings": [
{
"command": "teroshdl.go_to_parent",
@@ -926,99 +913,98 @@
}
]
},
-
"scripts": {
- "build-package": "cd auto_package && ./gen.sh",
- "clean": "shx rm -rf out",
- "vscode:prepublish": "npm run generate-examples & npm run compile",
- "compile": "npm run-script copy-files & npm run-script build-webviews & npm run-script build-webviews-configuration & tsc -p ./",
- "lint": "eslint src",
- "watch": "npm run-script copy-files & tsc --watch --p ./tsconfig.json & nodemon --ignore 'resources/webviews/reporters/**/wb/' --watch resources/webviews/reporters -e js,ts,tsx,html --exec \"npm run-script build-webviews\"",
- "generate-examples": "cd ./resources/project_manager; ./copy_examples.sh",
- "pre-package": "mkdir ./node_modules/teroshdl2/node_modules/onml/lib; cp ./node_modules/teroshdl2/node_modules/onml/*.js ./node_modules/teroshdl2/node_modules/onml/lib",
- "package": "npm run pre-package & vsce package --allow-star-activation",
- "package-prerelease": "npm run pre-package & vsce package --pre-release -o ./pre-release.vsix --allow-star-activation",
- "auto-package": "cd auto_package & ./gen.sh",
- "build-webviews": "NODE_ENV=production node resources/webviews/reporters/esbuild.js",
- "build-webviews-configuration": "NODE_ENV=production node resources/webviews/fileConfiguration/esbuild.js",
- "compile-esbuild": "NODE_ENV=production node ./esbuild.js",
- "copy-files": "python3 copy_files.py ",
+ "build-package": "cd auto_package && ./gen.sh",
+ "clean": "shx rm -rf out",
+ "vscode:prepublish": "npm run generate-examples & npm run compile",
+ "compile": "npm run-script copy-files && npm run-script build-webviews & npm run-script build-webviews-configuration & tsc -p ./",
+ "lint": "eslint src",
+ "watch": "npm run-script copy-files & tsc --watch --p ./tsconfig.json & nodemon --ignore 'resources/webviews/reporters/**/wb/' --watch resources/webviews/reporters -e js,ts,tsx,html --exec \"npm run-script build-webviews\"",
+ "generate-examples": "cd ./resources/project_manager; ./copy_examples.sh",
+ "pre-package": "mkdir ./node_modules/teroshdl2/node_modules/onml/lib; cp ./node_modules/teroshdl2/node_modules/onml/*.js ./node_modules/teroshdl2/node_modules/onml/lib",
+ "package": "npm run pre-package & vsce package --allow-star-activation",
+ "package-prerelease": "npm run pre-package & vsce package --pre-release -o ./pre-release.vsix --allow-star-activation",
+ "auto-package": "cd auto_package & ./gen.sh",
+ "build-webviews": "cross-env NODE_ENV=production node resources/webviews/reporters/esbuild.js",
+ "build-webviews-configuration": "cross-env NODE_ENV=production node resources/webviews/fileConfiguration/esbuild.js",
+ "compile-esbuild": "cross-env NODE_ENV=production node ./esbuild.js",
+ "copy-files": "python3 copy_files.py ",
"test": "node --trace-warnings --experimental-vm-modules ./node_modules/.bin/jest --forceExit --runInBand --config ./jest.config.json"
},
"dependencies": {
+ "@oclif/core": "^1",
+ "@oclif/plugin-help": "^5",
+ "@oclif/plugin-plugins": "^2.0.1",
"@octokit/rest": "16.36.0",
"@types/node-fetch": "2.5.7",
- "@types/semver": "6.2.0",
- "abort-controller": "3.0.0",
- "fs-extra": "8.1.0",
- "netlistsvg": "https://github.com/TerosTechnology/netlistsvg.git#hierarchy",
- "open": "8.3.0",
- "proper-lockfile": "4.1.1",
- "semver": "^7.6.3",
- "shelljs": "^0.8.3",
- "tmp": "0.2.1",
- "vscode-languageclient": "^9.0.1",
- "xml2js": "^0.6.2",
- "nunjucks": "^3.2.0",
"@types/nunjucks": "^3.1.4",
- "tree-kill": "1.2.2",
+ "@types/semver": "6.2.0",
"@vscode/webview-ui-toolkit": "^1.4.0",
- "esbuild-plugin-alias": "^0.2.1",
- "@oclif/core": "^1",
- "@oclif/plugin-help": "^5",
- "@oclif/plugin-plugins": "^2.0.1",
"@yowasp/yosys": "0.41.721",
+ "abort-controller": "3.0.0",
"axios": "^1.7.2",
"chokidar": "3.5.3",
"cli-color": "^2.0.3",
"clone": "^2.1.2",
"console-table-printer": "^2.11.0",
+ "esbuild-plugin-alias": "^0.2.1",
+ "fast-json-stable-stringify": "^2.1.0",
"fast-xml-parser": "4.3.2",
+ "fs-extra": "8.1.0",
"jest-html-reporter": "^3.7.0",
"js-yaml": "^4.1.0",
"json5": "^2.2.3",
"lodash": "^4.17.21",
+ "module-alias": "^2.2.3",
+ "netlistsvg": "https://github.com/TerosTechnology/netlistsvg.git#hierarchy",
+ "nunjucks": "^3.2.0",
"onml": "2.1.0",
+ "open": "8.3.0",
+ "proper-lockfile": "4.1.1",
"pyodide": "0.24.1",
+ "semver": "^7.6.3",
+ "shelljs": "^0.8.3",
"showdown": "1.9.1",
"showdown-highlight": "2.1.8",
"sql.js": "^1.9.0",
"state-machine-cat": "10.1.11",
- "fast-json-stable-stringify": "^2.1.0",
"svg.js": "2.7.1",
"svgdom": "^0.0.21",
"temp": "0.9.4",
"tiny-glob": "^0.2.9",
+ "tmp": "0.2.1",
+ "tree-kill": "1.2.2",
+ "vscode-languageclient": "^9.0.1",
"wavedrom": "3.3.0",
"web-tree-sitter": "^0.20.7",
- "module-alias": "^2.2.3"
+ "xml2js": "^0.6.2"
},
"devDependencies": {
- "@types/node": "^17.0.31",
- "@types/vscode": "^1.45.0",
- "js-yaml": "^3.13.1",
- "shx": "^0.3.3",
- "esbuild": "^0.16.17",
- "nodemon": "^3.0.2",
- "assert": "^2.0.0",
- "jest": "^29.7.0",
- "jest-html-reporters": "^3.1.4",
- "ts-jest": "^29.1.2",
- "typedoc": "^0.23.9",
- "typedoc-theme-hierarchy": "^3.0.0",
"@types/assert": "^1.5.6",
- "chai": "^4",
"@types/chai": "^4",
"@types/cli-color": "^2.0.2",
"@types/jest": "^29.4.3",
"@types/js-yaml": "^4.0.5",
+ "@types/node": "^17.0.31",
"@types/temp": "^0.9.4",
- "typescript": "^4.8.2",
+ "@types/vscode": "^1.45.0",
"@typescript-eslint/eslint-plugin": "^8.7.0",
"@typescript-eslint/parser": "^8.7.0",
+ "assert": "^2.0.0",
+ "chai": "^4",
+ "cross-env": "^10.1.0",
+ "esbuild": "^0.16.17",
"eslint": "^9.11.1",
"eslint-config-prettier": "^9.0.0",
- "eslint-plugin-prettier": "^4.0.0"
+ "eslint-plugin-prettier": "^4.0.0",
+ "jest": "^29.7.0",
+ "jest-html-reporters": "^3.1.4",
+ "js-yaml": "^3.13.1",
+ "nodemon": "^3.0.2",
+ "shx": "^0.3.3",
+ "ts-jest": "^29.1.2",
+ "typedoc": "^0.23.9",
+ "typedoc-theme-hierarchy": "^3.0.0",
+ "typescript": "^4.8.2"
}
-
-}
\ No newline at end of file
+}
diff --git a/src/colibri/config/config_declaration.ts b/src/colibri/config/config_declaration.ts
index 2e9158af..9faff12e 100644
--- a/src/colibri/config/config_declaration.ts
+++ b/src/colibri/config/config_declaration.ts
@@ -17,6 +17,8 @@
// You should have received a copy of the GNU General Public License
// along with colibri2. If not, see .
+import { string } from "@oclif/core/lib/parser";
+
export type e_config = {
"general" : {
"general" : e_general_general,
@@ -39,6 +41,7 @@ export type e_config = {
"general" : e_linter_general,
"vhdlls" : e_linter_vhdlls,
"ghdl" : e_linter_ghdl,
+ "nvc" : e_linter_nvc,
"icarus" : e_linter_icarus,
"modelsim" : e_linter_modelsim,
"verible" : e_linter_verible,
@@ -86,6 +89,7 @@ export type e_config = {
"activehdl" : e_tools_activehdl,
"questa" : e_tools_questa,
"raptor" : e_tools_raptor,
+ "nvc" : e_tools_nvc,
}
[key: string]: {
[key: string]: any;
@@ -182,6 +186,10 @@ export type e_linter_vhdlls = {
export type e_linter_ghdl = {
arguments : string,
};
+
+export type e_linter_nvc = {
+ arguments : string,
+};
export type e_linter_icarus = {
arguments : string,
@@ -322,7 +330,59 @@ export type e_tools_ghdl = {
disp_tree : e_tools_ghdl_disp_tree,
no_run : boolean,
};
-
+
+export type e_tools_nvc = {
+ installation_path : string,
+ vhdl_standard : e_tools_nvc_vhdl_standard,
+ ieee_library : e_tools_nvc_ieee_library,
+ relaxed_parsing : boolean,
+ unicode_support : boolean,
+ psl_enabled : boolean,
+ work_library : string,
+ library_paths : any[],
+ check_syntax_options : any[],
+ analyze_options : any[],
+ elaborate_options : any[],
+ run_options : any[],
+ synthesis_options : any[],
+ extra_flags : any[],
+ relaxed_rules : boolean,
+ bind_checks : boolean,
+ vital_checks : boolean,
+ simulation_time : string,
+ resolution_limit : string,
+ stack_size : string,
+ stop_delta_cycles : number,
+ waveform_enabled : boolean,
+ waveform_format : e_tools_nvc_waveform_format,
+ waveform_options : any[],
+ wave_start_time : string,
+ vcd_4states : boolean,
+ vcd_nodate : boolean,
+ read_wave_opt : string,
+ write_wave_opt : string,
+ debug_level : e_tools_nvc_debug_level,
+ verbose : boolean,
+ warnings_as_errors : boolean,
+ suppress_warnings : any[],
+ assert_level : e_tools_nvc_assert_level,
+ display_time : boolean,
+ unbuffered_output : boolean,
+ max_stack_alloc : number,
+ backtrace_severity : e_tools_nvc_backtrace_severity,
+ ieee_asserts : e_tools_nvc_ieee_asserts,
+ asserts_policy : e_tools_nvc_asserts_policy,
+ sdf_file : string,
+ vpi_modules : any[],
+ vhpi_modules : any[],
+ vpi_trace_file : string,
+ vhpi_trace_file : string,
+ psl_report_file : string,
+ psl_report_uncovered : boolean,
+ disp_tree : e_tools_nvc_disp_tree,
+ no_run : boolean,
+};
+
export type e_tools_icarus = {
installation_path : string,
timescale : string,
@@ -694,6 +754,7 @@ export enum e_linter_general_linter_vhdl {
modelsim = "modelsim",
vivado = "vivado",
none = "none",
+ nvc = "nvc",
}
export enum e_linter_general_linter_verilog {
disabled = "disabled",
@@ -753,7 +814,9 @@ export enum e_tools_general_select_tool {
radiant = "radiant",
sandpiper = "sandpiper",
yosys = "yosys",
+ nvc = "nvc",
}
+
export enum e_tools_general_execution_mode {
gui = "gui",
cmd = "cmd",
@@ -854,6 +917,58 @@ export enum e_tools_ghdl_disp_tree {
proc = "proc",
port = "port",
}
+export enum e_tools_nvc_vhdl_standard {
+ auto = "auto",
+ vhdl87 = "vhdl87",
+ vhdl93 = "vhdl93",
+ vhdl02 = "vhdl02",
+ vhdl08 = "vhdl08",
+ vhdl19 = "vhdl19",
+}
+export enum e_tools_nvc_ieee_library {
+ standard = "standard",
+ synopsys = "synopsys",
+}
+export enum e_tools_nvc_waveform_format {
+ vcd = "vcd",
+ ghw = "ghw",
+ fst = "fst",
+}
+export enum e_tools_nvc_debug_level {
+ none = "none",
+ minimal = "minimal",
+ full = "full",
+}
+export enum e_tools_nvc_assert_level {
+ note = "note",
+ warning = "warning",
+ error = "error",
+ failure = "failure",
+ none = "none",
+}
+export enum e_tools_nvc_backtrace_severity {
+ note = "note",
+ warning = "warning",
+ error = "error",
+ failure = "failure",
+ none = "none",
+}
+export enum e_tools_nvc_ieee_asserts {
+ enable = "enable",
+ disable = "disable",
+ disable_at_0 = "disable-at-0",
+}
+export enum e_tools_nvc_asserts_policy {
+ enable = "enable",
+ disable = "disable",
+ disable_at_0 = "disable-at-0",
+}
+export enum e_tools_nvc_disp_tree {
+ none = "none",
+ inst = "inst",
+ proc = "proc",
+ port = "port",
+}
export enum e_tools_icestorm_pnr {
arachne = "arachne",
next = "next",
@@ -1071,6 +1186,9 @@ export function get_default_config(): e_config {
ghdl: {
arguments : "",
},
+ nvc: {
+ arguments : "",
+ },
icarus: {
arguments : "",
},
@@ -1444,6 +1562,57 @@ export function get_default_config(): e_config {
simulator_pnr : e_tools_raptor_simulator_pnr.ghdl,
simulation_options_pnr : "--stop-time=1000ns",
},
+ nvc: {
+ installation_path: "",
+ vhdl_standard : e_tools_nvc_vhdl_standard.vhdl08,
+ ieee_library : e_tools_nvc_ieee_library.standard,
+ relaxed_parsing : false,
+ unicode_support : false,
+ psl_enabled : false,
+ work_library : "work",
+ library_paths : [],
+ check_syntax_options : [],
+ analyze_options : [],
+ elaborate_options : [],
+ run_options : [],
+ synthesis_options : [],
+ extra_flags : [],
+ relaxed_rules : false,
+ bind_checks : true,
+ vital_checks : false,
+ simulation_time : "",
+ resolution_limit : "",
+ stack_size : "",
+ stop_delta_cycles : 0,
+ waveform_enabled : true,
+ waveform_format : e_tools_nvc_waveform_format.vcd,
+ waveform_options : [],
+ wave_start_time : "",
+ vcd_4states : false,
+ vcd_nodate : false,
+ read_wave_opt : "",
+ write_wave_opt : "",
+ debug_level : e_tools_nvc_debug_level.none,
+ verbose : false,
+ warnings_as_errors : false,
+ suppress_warnings : [],
+ assert_level : e_tools_nvc_assert_level.error,
+ display_time : false,
+ unbuffered_output : false,
+ max_stack_alloc : 0,
+ backtrace_severity : e_tools_nvc_backtrace_severity.error,
+ ieee_asserts : e_tools_nvc_ieee_asserts.enable,
+ asserts_policy : e_tools_nvc_asserts_policy.enable,
+ sdf_file : "",
+ vpi_modules : [],
+ vhpi_modules : [],
+ vpi_trace_file : "",
+ vhpi_trace_file : "",
+ psl_report_file : "",
+ psl_report_uncovered : false,
+ disp_tree : e_tools_nvc_disp_tree.none,
+ no_run : false,
+ },
},
};
}
@@ -2064,6 +2233,9 @@ export function get_config_from_json(json_config: any): e_config {
if ( current_value_48 === "none"){
default_config['linter']['general']['linter_vhdl'] = e_linter_general_linter_vhdl.none;
}
+ if ( current_value_48 === "nvc"){
+ default_config['linter']['general']['linter_vhdl'] = e_linter_general_linter_vhdl.nvc;
+ }
// linter -> general -> linter_verilog
let current_value_49 = undefined;
@@ -2158,6 +2330,16 @@ export function get_config_from_json(json_config: any): e_config {
if (typeof current_value_55 === 'string'){
default_config['linter']['ghdl']['arguments'] = current_value_55;
}
+
+ // linter -> nvc -> arguments
+ let current_value_55_nvc = undefined;
+ try {
+ current_value_55_nvc = json_config['linter']['nvc']['arguments'];
+ }
+ catch(e){}
+ if (typeof current_value_55_nvc === 'string'){
+ default_config['linter']['nvc']['arguments'] = current_value_55_nvc;
+ }
// linter -> icarus -> arguments
let current_value_56 = undefined;
diff --git a/src/colibri/config/config_web.ts b/src/colibri/config/config_web.ts
index ba3af11f..5300f331 100755
--- a/src/colibri/config/config_web.ts
+++ b/src/colibri/config/config_web.ts
@@ -760,6 +760,9 @@ body.vscode-high-contrast {
GHDL linter
+
+ NVC linter
+
Icarus linter
@@ -1579,6 +1582,7 @@ body.vscode-high-contrast {