diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 05e79efc..6fc6971c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -176,7 +176,7 @@ jobs: steps: - run: apt update - run: apt install -y nsis p7zip-full p7zip-rar git curl tar xz-utils apt-utils - - run: git config --global --add safe.directory /__w/colibri2/colibri2 + - run: git config --global --add safe.directory /__w/colibri/colibri - uses: actions/setup-node@v2 with: node-version: "16" @@ -228,9 +228,9 @@ jobs: - name: Tar for release run: | cd .. - tar -cvzf teroshdl2-${{ steps.publish.outputs.version }}.tar.gz colibri2 - mv teroshdl2-${{ steps.publish.outputs.version }}.tar.gz colibri2 - cd colibri2 + tar -cvzf teroshdl2-${{ steps.publish.outputs.version }}.tar.gz colibri + mv teroshdl2-${{ steps.publish.outputs.version }}.tar.gz colibri + cd colibri - name: Download artifacts pack uses: actions/download-artifact@v3 diff --git a/copy.sh b/copy.sh index cc79f1aa..2c64d568 100755 --- a/copy.sh +++ b/copy.sh @@ -6,5 +6,5 @@ python3 generate_web.py cd ../../../ npm install -rm -rf ../vscode-terosHDL2/node_modules/teroshdl2/out/ -cp -R out ../vscode-terosHDL2/node_modules/teroshdl2/ +rm -rf ../vscode-terosHDL/node_modules/teroshdl2/out/ +cp -R out ../vscode-terosHDL/node_modules/teroshdl2/ diff --git a/package.json b/package.json index 57e668e4..f84f3d30 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "colibri2", "author": "Carlos Alberto Ruiz Naranjo , Ismael Perez Rojo ", "homepage": "https://terostechnology.github.io", - "version": "1.6.0", + "version": "1.8.3", "description": "TerosHDL backend", "main": "out/index.js", "oclif": { @@ -40,9 +40,12 @@ "copy-dependency": "shx cp -R ./src/project_manager/dependency/*.py ./out/project_manager/dependency", "copy-templates": "shx cp -R ./src/template/helpers ./out/template", "copy-reporter": "shx cp -R ./src/reporter/html_detailed_formatter/helpers ./out/reporter/html_detailed_formatter", - "copy-files": "npm run copy-parser && npm run copy-dependency && npm run copy-templates && npm run copy-reporter && npm run copy-documenter", + "copy-project-manager-edalize": "shx cp -R ./src/project_manager/tool/edalize ./out/project_manager/tool", + "copy-project-manager-vunit": "shx cp -R ./src/project_manager/tool/vunit ./out/project_manager/tool", + "copy-project-manager-loaders": "shx cp -R ./src/project_manager/prj_loaders/ ./out/project_manager/", + "copy-files": "npm run copy-parser && npm run copy-dependency && npm run copy-templates && npm run copy-reporter && npm run copy-documenter && npm run copy-project-manager-edalize && npm run copy-project-manager-vunit && npm run copy-project-manager-loaders", "lint": "env TS_NODE_COMPILER_OPTIONS='{\"module\": \"commonjs\" }' eslint . --quiet --ext .ts", - "test": "env TS_NODE_COMPILER_OPTIONS='{\"module\": \"commonjs\" }' mocha --colors --exlude tests/linter/linter.spec.ts --reporter mocha-multi-reporters --reporter-options configFile=config.json -r ts-node/register 'tests/**/*.ts'" + "test": "env TS_NODE_COMPILER_OPTIONS='{\"module\": \"commonjs\" }' mocha --colors --exlude tests/linter/linter.spec.ts --reporter mocha-multi-reporters --reporter-options configFile=config.json -r ts-node/register 'tests/**/*.ts' --exit" }, "directories": { "lib": "./lib", @@ -60,6 +63,7 @@ "clone": "^2.1.2", "console-table-printer": "^2.11.0", "fast-xml-parser": "4.0.10", + "js-yaml": "^4.1.0", "json5": "2.1.3", "lodash": "^4.17.21", "nunjucks": "^3.2.0", @@ -72,7 +76,8 @@ "temp": "0.9.4", "tiny-glob": "^0.2.9", "wavedrom": "2.6.8", - "web-tree-sitter": "^0.16.2" + "web-tree-sitter": "^0.16.2", + "chokidar": "3.5.3" }, "devDependencies": { "@oclif/test": "^2", @@ -80,6 +85,7 @@ "@types/chai": "^4", "@types/cli-color": "^2.0.2", "@types/expect": "^24.3.0", + "@types/js-yaml": "^4.0.5", "@types/mocha": "^9.1.1", "@typescript-eslint/eslint-plugin": "^5.27.0", "@typescript-eslint/parser": "^5.27.0", diff --git a/src/config/config_declaration.ts b/src/config/config_declaration.ts index 141fdf67..cba5f2e9 100644 --- a/src/config/config_declaration.ts +++ b/src/config/config_declaration.ts @@ -53,6 +53,7 @@ export type e_config = { } "tools" : { "general" : e_tools_general, + "osvvm" : e_tools_osvvm, "ascenlint" : e_tools_ascenlint, "cocotb" : e_tools_cocotb, "diamond" : e_tools_diamond, @@ -79,6 +80,7 @@ export type e_config = { "xcelium" : e_tools_xcelium, "xsim" : e_tools_xsim, "yosys" : e_tools_yosys, + "openfpga" : e_tools_openfpga, } }; export type e_general_general = { @@ -207,6 +209,12 @@ export type e_tools_general = { waveform_viewer : e_tools_general_waveform_viewer, }; +export type e_tools_osvvm = { + installation_path : string, + tclsh_binary : string, + simulator_name : e_tools_osvvm_simulator_name, +}; + export type e_tools_ascenlint = { installation_path : string, ascentlint_options : any[], @@ -410,6 +418,16 @@ export type e_tools_yosys = { yosys_synth_options : any[], }; +export type e_tools_openfpga = { + installation_path : string, + arch : e_tools_openfpga_arch, + output_format : e_tools_openfpga_output_format, + yosys_as_subtool : boolean, + makefile_name : string, + script_name : string, + yosys_synth_options : any[], +}; + export enum e_documentation_general_language { english = "english", russian = "russian", @@ -539,9 +557,25 @@ export enum e_templates_general_instance_style { separate = "separate", } export enum e_tools_general_select_tool { + osvvm = "osvvm", vunit = "vunit", ghdl = "ghdl", cocotb = "cocotb", + icarus = "icarus", + icestorm = "icestorm", + ise = "ise", + isim = "isim", + modelsim = "modelsim", + openfpga = "openfpga", + quartus = "quartus", + rivierapro = "rivierapro", + spyglass = "spyglass", + trellis = "trellis", + vcs = "vcs", + verilator = "verilator", + vivado = "vivado", + xcelium = "xcelium", + xsim = "xsim", } export enum e_tools_general_execution_mode { gui = "gui", @@ -552,6 +586,17 @@ export enum e_tools_general_waveform_viewer { vcdrom = "vcdrom", gtkwave = "gtkwave", } +export enum e_tools_osvvm_simulator_name { + activehdl = "activehdl", + ghdl = "ghdl", + nvc = "nvc", + riviera = "riviera", + questa = "questa", + modelsim = "modelsim", + vcs = "vcs", + xsim = "xsim", + xcelium = "xcelium", +} export enum e_tools_cocotb_simulator_name { icarus = "icarus", verilator = "verilator", @@ -637,6 +682,16 @@ export enum e_tools_yosys_output_format { edif = "edif", blif = "blif", } +export enum e_tools_openfpga_arch { + xilinx = "xilinx", + ice40 = "ice40", + ecp5 = "ecp5", +} +export enum e_tools_openfpga_output_format { + json = "json", + edif = "edif", + blif = "blif", +} export function get_default_config(): e_config { return { @@ -761,6 +816,11 @@ export function get_default_config(): e_config { execution_mode : e_tools_general_execution_mode.cmd, waveform_viewer : e_tools_general_waveform_viewer.tool, }, + osvvm: { + installation_path : "", + tclsh_binary : "", + simulator_name : e_tools_osvvm_simulator_name.ghdl, + }, ascenlint: { installation_path : "", ascentlint_options : [], @@ -938,6 +998,15 @@ export function get_default_config(): e_config { script_name : "", yosys_synth_options : [], }, + openfpga: { + installation_path : "", + arch : e_tools_openfpga_arch.xilinx, + output_format : e_tools_openfpga_output_format.json, + yosys_as_subtool : false, + makefile_name : "", + script_name : "", + yosys_synth_options : [], + }, }, }; } @@ -1476,6 +1545,9 @@ export function get_config_from_json(json_config: any): e_config { // tools -> general -> select_tool const current_value_63 = json_config['tools']['general']['select_tool']; + if ( current_value_63 === "osvvm"){ + default_config['tools']['general']['select_tool'] = e_tools_general_select_tool.osvvm; + } if ( current_value_63 === "vunit"){ default_config['tools']['general']['select_tool'] = e_tools_general_select_tool.vunit; } @@ -1485,6 +1557,51 @@ export function get_config_from_json(json_config: any): e_config { if ( current_value_63 === "cocotb"){ default_config['tools']['general']['select_tool'] = e_tools_general_select_tool.cocotb; } + if ( current_value_63 === "icarus"){ + default_config['tools']['general']['select_tool'] = e_tools_general_select_tool.icarus; + } + if ( current_value_63 === "icestorm"){ + default_config['tools']['general']['select_tool'] = e_tools_general_select_tool.icestorm; + } + if ( current_value_63 === "ise"){ + default_config['tools']['general']['select_tool'] = e_tools_general_select_tool.ise; + } + if ( current_value_63 === "isim"){ + default_config['tools']['general']['select_tool'] = e_tools_general_select_tool.isim; + } + if ( current_value_63 === "modelsim"){ + default_config['tools']['general']['select_tool'] = e_tools_general_select_tool.modelsim; + } + if ( current_value_63 === "openfpga"){ + default_config['tools']['general']['select_tool'] = e_tools_general_select_tool.openfpga; + } + if ( current_value_63 === "quartus"){ + default_config['tools']['general']['select_tool'] = e_tools_general_select_tool.quartus; + } + if ( current_value_63 === "rivierapro"){ + default_config['tools']['general']['select_tool'] = e_tools_general_select_tool.rivierapro; + } + if ( current_value_63 === "spyglass"){ + default_config['tools']['general']['select_tool'] = e_tools_general_select_tool.spyglass; + } + if ( current_value_63 === "trellis"){ + default_config['tools']['general']['select_tool'] = e_tools_general_select_tool.trellis; + } + if ( current_value_63 === "vcs"){ + default_config['tools']['general']['select_tool'] = e_tools_general_select_tool.vcs; + } + if ( current_value_63 === "verilator"){ + default_config['tools']['general']['select_tool'] = e_tools_general_select_tool.verilator; + } + if ( current_value_63 === "vivado"){ + default_config['tools']['general']['select_tool'] = e_tools_general_select_tool.vivado; + } + if ( current_value_63 === "xcelium"){ + default_config['tools']['general']['select_tool'] = e_tools_general_select_tool.xcelium; + } + if ( current_value_63 === "xsim"){ + default_config['tools']['general']['select_tool'] = e_tools_general_select_tool.xsim; + } // tools -> general -> execution_mode const current_value_64 = json_config['tools']['general']['execution_mode']; @@ -1507,865 +1624,961 @@ export function get_config_from_json(json_config: any): e_config { default_config['tools']['general']['waveform_viewer'] = e_tools_general_waveform_viewer.gtkwave; } - // tools -> ascenlint -> installation_path - const current_value_66 = json_config['tools']['ascenlint']['installation_path']; + // tools -> osvvm -> installation_path + const current_value_66 = json_config['tools']['osvvm']['installation_path']; if (typeof current_value_66 === 'string'){ - default_config['tools']['ascenlint']['installation_path'] = current_value_66; + default_config['tools']['osvvm']['installation_path'] = current_value_66; + } + + // tools -> osvvm -> tclsh_binary + const current_value_67 = json_config['tools']['osvvm']['tclsh_binary']; + if (typeof current_value_67 === 'string'){ + default_config['tools']['osvvm']['tclsh_binary'] = current_value_67; + } + + // tools -> osvvm -> simulator_name + const current_value_68 = json_config['tools']['osvvm']['simulator_name']; + if ( current_value_68 === "activehdl"){ + default_config['tools']['osvvm']['simulator_name'] = e_tools_osvvm_simulator_name.activehdl; + } + if ( current_value_68 === "ghdl"){ + default_config['tools']['osvvm']['simulator_name'] = e_tools_osvvm_simulator_name.ghdl; + } + if ( current_value_68 === "nvc"){ + default_config['tools']['osvvm']['simulator_name'] = e_tools_osvvm_simulator_name.nvc; + } + if ( current_value_68 === "riviera"){ + default_config['tools']['osvvm']['simulator_name'] = e_tools_osvvm_simulator_name.riviera; + } + if ( current_value_68 === "questa"){ + default_config['tools']['osvvm']['simulator_name'] = e_tools_osvvm_simulator_name.questa; + } + if ( current_value_68 === "modelsim"){ + default_config['tools']['osvvm']['simulator_name'] = e_tools_osvvm_simulator_name.modelsim; + } + if ( current_value_68 === "vcs"){ + default_config['tools']['osvvm']['simulator_name'] = e_tools_osvvm_simulator_name.vcs; + } + if ( current_value_68 === "xsim"){ + default_config['tools']['osvvm']['simulator_name'] = e_tools_osvvm_simulator_name.xsim; + } + if ( current_value_68 === "xcelium"){ + default_config['tools']['osvvm']['simulator_name'] = e_tools_osvvm_simulator_name.xcelium; + } + + // tools -> ascenlint -> installation_path + const current_value_69 = json_config['tools']['ascenlint']['installation_path']; + if (typeof current_value_69 === 'string'){ + default_config['tools']['ascenlint']['installation_path'] = current_value_69; } // tools -> ascenlint -> ascentlint_options - const current_value_67 = json_config['tools']['ascenlint']['ascentlint_options']; - if (Array.isArray(current_value_67)){ - default_config['tools']['ascenlint']['ascentlint_options'] = current_value_67; + const current_value_70 = json_config['tools']['ascenlint']['ascentlint_options']; + if (Array.isArray(current_value_70)){ + default_config['tools']['ascenlint']['ascentlint_options'] = current_value_70; } // tools -> cocotb -> installation_path - const current_value_68 = json_config['tools']['cocotb']['installation_path']; - if (typeof current_value_68 === 'string'){ - default_config['tools']['cocotb']['installation_path'] = current_value_68; + const current_value_71 = json_config['tools']['cocotb']['installation_path']; + if (typeof current_value_71 === 'string'){ + default_config['tools']['cocotb']['installation_path'] = current_value_71; } // tools -> cocotb -> simulator_name - const current_value_69 = json_config['tools']['cocotb']['simulator_name']; - if ( current_value_69 === "icarus"){ + const current_value_72 = json_config['tools']['cocotb']['simulator_name']; + if ( current_value_72 === "icarus"){ default_config['tools']['cocotb']['simulator_name'] = e_tools_cocotb_simulator_name.icarus; } - if ( current_value_69 === "verilator"){ + if ( current_value_72 === "verilator"){ default_config['tools']['cocotb']['simulator_name'] = e_tools_cocotb_simulator_name.verilator; } - if ( current_value_69 === "vcs"){ + if ( current_value_72 === "vcs"){ default_config['tools']['cocotb']['simulator_name'] = e_tools_cocotb_simulator_name.vcs; } - if ( current_value_69 === "riviera"){ + if ( current_value_72 === "riviera"){ default_config['tools']['cocotb']['simulator_name'] = e_tools_cocotb_simulator_name.riviera; } - if ( current_value_69 === "activehdl"){ + if ( current_value_72 === "activehdl"){ default_config['tools']['cocotb']['simulator_name'] = e_tools_cocotb_simulator_name.activehdl; } - if ( current_value_69 === "questa"){ + if ( current_value_72 === "questa"){ default_config['tools']['cocotb']['simulator_name'] = e_tools_cocotb_simulator_name.questa; } - if ( current_value_69 === "modelsim"){ + if ( current_value_72 === "modelsim"){ default_config['tools']['cocotb']['simulator_name'] = e_tools_cocotb_simulator_name.modelsim; } - if ( current_value_69 === "ius"){ + if ( current_value_72 === "ius"){ default_config['tools']['cocotb']['simulator_name'] = e_tools_cocotb_simulator_name.ius; } - if ( current_value_69 === "xcelium"){ + if ( current_value_72 === "xcelium"){ default_config['tools']['cocotb']['simulator_name'] = e_tools_cocotb_simulator_name.xcelium; } - if ( current_value_69 === "ghdl"){ + if ( current_value_72 === "ghdl"){ default_config['tools']['cocotb']['simulator_name'] = e_tools_cocotb_simulator_name.ghdl; } - if ( current_value_69 === "cvc"){ + if ( current_value_72 === "cvc"){ default_config['tools']['cocotb']['simulator_name'] = e_tools_cocotb_simulator_name.cvc; } // tools -> cocotb -> compile_args - const current_value_70 = json_config['tools']['cocotb']['compile_args']; - if (typeof current_value_70 === 'string'){ - default_config['tools']['cocotb']['compile_args'] = current_value_70; + const current_value_73 = json_config['tools']['cocotb']['compile_args']; + if (typeof current_value_73 === 'string'){ + default_config['tools']['cocotb']['compile_args'] = current_value_73; } // tools -> cocotb -> run_args - const current_value_71 = json_config['tools']['cocotb']['run_args']; - if (typeof current_value_71 === 'string'){ - default_config['tools']['cocotb']['run_args'] = current_value_71; + const current_value_74 = json_config['tools']['cocotb']['run_args']; + if (typeof current_value_74 === 'string'){ + default_config['tools']['cocotb']['run_args'] = current_value_74; } // tools -> cocotb -> plusargs - const current_value_72 = json_config['tools']['cocotb']['plusargs']; - if (typeof current_value_72 === 'string'){ - default_config['tools']['cocotb']['plusargs'] = current_value_72; + const current_value_75 = json_config['tools']['cocotb']['plusargs']; + if (typeof current_value_75 === 'string'){ + default_config['tools']['cocotb']['plusargs'] = current_value_75; } // tools -> diamond -> installation_path - const current_value_73 = json_config['tools']['diamond']['installation_path']; - if (typeof current_value_73 === 'string'){ - default_config['tools']['diamond']['installation_path'] = current_value_73; + const current_value_76 = json_config['tools']['diamond']['installation_path']; + if (typeof current_value_76 === 'string'){ + default_config['tools']['diamond']['installation_path'] = current_value_76; } // tools -> diamond -> part - const current_value_74 = json_config['tools']['diamond']['part']; - if (typeof current_value_74 === 'string'){ - default_config['tools']['diamond']['part'] = current_value_74; + const current_value_77 = json_config['tools']['diamond']['part']; + if (typeof current_value_77 === 'string'){ + default_config['tools']['diamond']['part'] = current_value_77; } // tools -> ghdl -> installation_path - const current_value_75 = json_config['tools']['ghdl']['installation_path']; - if (typeof current_value_75 === 'string'){ - default_config['tools']['ghdl']['installation_path'] = current_value_75; + const current_value_78 = json_config['tools']['ghdl']['installation_path']; + if (typeof current_value_78 === 'string'){ + default_config['tools']['ghdl']['installation_path'] = current_value_78; } // tools -> ghdl -> waveform - const current_value_76 = json_config['tools']['ghdl']['waveform']; - if ( current_value_76 === "vcd"){ + const current_value_79 = json_config['tools']['ghdl']['waveform']; + if ( current_value_79 === "vcd"){ default_config['tools']['ghdl']['waveform'] = e_tools_ghdl_waveform.vcd; } - if ( current_value_76 === "ghw"){ + if ( current_value_79 === "ghw"){ default_config['tools']['ghdl']['waveform'] = e_tools_ghdl_waveform.ghw; } // tools -> ghdl -> analyze_options - const current_value_77 = json_config['tools']['ghdl']['analyze_options']; - if (Array.isArray(current_value_77)){ - default_config['tools']['ghdl']['analyze_options'] = current_value_77; + const current_value_80 = json_config['tools']['ghdl']['analyze_options']; + if (Array.isArray(current_value_80)){ + default_config['tools']['ghdl']['analyze_options'] = current_value_80; } // tools -> ghdl -> run_options - const current_value_78 = json_config['tools']['ghdl']['run_options']; - if (Array.isArray(current_value_78)){ - default_config['tools']['ghdl']['run_options'] = current_value_78; + const current_value_81 = json_config['tools']['ghdl']['run_options']; + if (Array.isArray(current_value_81)){ + default_config['tools']['ghdl']['run_options'] = current_value_81; } // tools -> icarus -> installation_path - const current_value_79 = json_config['tools']['icarus']['installation_path']; - if (typeof current_value_79 === 'string'){ - default_config['tools']['icarus']['installation_path'] = current_value_79; + const current_value_82 = json_config['tools']['icarus']['installation_path']; + if (typeof current_value_82 === 'string'){ + default_config['tools']['icarus']['installation_path'] = current_value_82; } // tools -> icarus -> timescale - const current_value_80 = json_config['tools']['icarus']['timescale']; - if (typeof current_value_80 === 'string'){ - default_config['tools']['icarus']['timescale'] = current_value_80; + const current_value_83 = json_config['tools']['icarus']['timescale']; + if (typeof current_value_83 === 'string'){ + default_config['tools']['icarus']['timescale'] = current_value_83; } // tools -> icarus -> iverilog_options - const current_value_81 = json_config['tools']['icarus']['iverilog_options']; - if (Array.isArray(current_value_81)){ - default_config['tools']['icarus']['iverilog_options'] = current_value_81; + const current_value_84 = json_config['tools']['icarus']['iverilog_options']; + if (Array.isArray(current_value_84)){ + default_config['tools']['icarus']['iverilog_options'] = current_value_84; } // tools -> icestorm -> installation_path - const current_value_82 = json_config['tools']['icestorm']['installation_path']; - if (typeof current_value_82 === 'string'){ - default_config['tools']['icestorm']['installation_path'] = current_value_82; + const current_value_85 = json_config['tools']['icestorm']['installation_path']; + if (typeof current_value_85 === 'string'){ + default_config['tools']['icestorm']['installation_path'] = current_value_85; } // tools -> icestorm -> pnr - const current_value_83 = json_config['tools']['icestorm']['pnr']; - if ( current_value_83 === "arachne"){ + const current_value_86 = json_config['tools']['icestorm']['pnr']; + if ( current_value_86 === "arachne"){ default_config['tools']['icestorm']['pnr'] = e_tools_icestorm_pnr.arachne; } - if ( current_value_83 === "next"){ + if ( current_value_86 === "next"){ default_config['tools']['icestorm']['pnr'] = e_tools_icestorm_pnr.next; } - if ( current_value_83 === "none"){ + if ( current_value_86 === "none"){ default_config['tools']['icestorm']['pnr'] = e_tools_icestorm_pnr.none; } // tools -> icestorm -> arch - const current_value_84 = json_config['tools']['icestorm']['arch']; - if ( current_value_84 === "xilinx"){ + const current_value_87 = json_config['tools']['icestorm']['arch']; + if ( current_value_87 === "xilinx"){ default_config['tools']['icestorm']['arch'] = e_tools_icestorm_arch.xilinx; } - if ( current_value_84 === "ice40"){ + if ( current_value_87 === "ice40"){ default_config['tools']['icestorm']['arch'] = e_tools_icestorm_arch.ice40; } - if ( current_value_84 === "ecp5"){ + if ( current_value_87 === "ecp5"){ default_config['tools']['icestorm']['arch'] = e_tools_icestorm_arch.ecp5; } // tools -> icestorm -> output_format - const current_value_85 = json_config['tools']['icestorm']['output_format']; - if ( current_value_85 === "json"){ + const current_value_88 = json_config['tools']['icestorm']['output_format']; + if ( current_value_88 === "json"){ default_config['tools']['icestorm']['output_format'] = e_tools_icestorm_output_format.json; } - if ( current_value_85 === "edif"){ + if ( current_value_88 === "edif"){ default_config['tools']['icestorm']['output_format'] = e_tools_icestorm_output_format.edif; } - if ( current_value_85 === "blif"){ + if ( current_value_88 === "blif"){ default_config['tools']['icestorm']['output_format'] = e_tools_icestorm_output_format.blif; } // tools -> icestorm -> yosys_as_subtool - const current_value_86 = json_config['tools']['icestorm']['yosys_as_subtool']; - if (current_value_86 === true || current_value_86 === false){ - default_config['tools']['icestorm']['yosys_as_subtool'] = current_value_86; + const current_value_89 = json_config['tools']['icestorm']['yosys_as_subtool']; + if (current_value_89 === true || current_value_89 === false){ + default_config['tools']['icestorm']['yosys_as_subtool'] = current_value_89; } // tools -> icestorm -> makefile_name - const current_value_87 = json_config['tools']['icestorm']['makefile_name']; - if (typeof current_value_87 === 'string'){ - default_config['tools']['icestorm']['makefile_name'] = current_value_87; + const current_value_90 = json_config['tools']['icestorm']['makefile_name']; + if (typeof current_value_90 === 'string'){ + default_config['tools']['icestorm']['makefile_name'] = current_value_90; } // tools -> icestorm -> arachne_pnr_options - const current_value_88 = json_config['tools']['icestorm']['arachne_pnr_options']; - if (Array.isArray(current_value_88)){ - default_config['tools']['icestorm']['arachne_pnr_options'] = current_value_88; + const current_value_91 = json_config['tools']['icestorm']['arachne_pnr_options']; + if (Array.isArray(current_value_91)){ + default_config['tools']['icestorm']['arachne_pnr_options'] = current_value_91; } // tools -> icestorm -> nextpnr_options - const current_value_89 = json_config['tools']['icestorm']['nextpnr_options']; - if (Array.isArray(current_value_89)){ - default_config['tools']['icestorm']['nextpnr_options'] = current_value_89; + const current_value_92 = json_config['tools']['icestorm']['nextpnr_options']; + if (Array.isArray(current_value_92)){ + default_config['tools']['icestorm']['nextpnr_options'] = current_value_92; } // tools -> icestorm -> yosys_synth_options - const current_value_90 = json_config['tools']['icestorm']['yosys_synth_options']; - if (Array.isArray(current_value_90)){ - default_config['tools']['icestorm']['yosys_synth_options'] = current_value_90; + const current_value_93 = json_config['tools']['icestorm']['yosys_synth_options']; + if (Array.isArray(current_value_93)){ + default_config['tools']['icestorm']['yosys_synth_options'] = current_value_93; } // tools -> ise -> installation_path - const current_value_91 = json_config['tools']['ise']['installation_path']; - if (typeof current_value_91 === 'string'){ - default_config['tools']['ise']['installation_path'] = current_value_91; + const current_value_94 = json_config['tools']['ise']['installation_path']; + if (typeof current_value_94 === 'string'){ + default_config['tools']['ise']['installation_path'] = current_value_94; } // tools -> ise -> family - const current_value_92 = json_config['tools']['ise']['family']; - if (typeof current_value_92 === 'string'){ - default_config['tools']['ise']['family'] = current_value_92; + const current_value_95 = json_config['tools']['ise']['family']; + if (typeof current_value_95 === 'string'){ + default_config['tools']['ise']['family'] = current_value_95; } // tools -> ise -> device - const current_value_93 = json_config['tools']['ise']['device']; - if (typeof current_value_93 === 'string'){ - default_config['tools']['ise']['device'] = current_value_93; + const current_value_96 = json_config['tools']['ise']['device']; + if (typeof current_value_96 === 'string'){ + default_config['tools']['ise']['device'] = current_value_96; } // tools -> ise -> package - const current_value_94 = json_config['tools']['ise']['package']; - if (typeof current_value_94 === 'string'){ - default_config['tools']['ise']['package'] = current_value_94; + const current_value_97 = json_config['tools']['ise']['package']; + if (typeof current_value_97 === 'string'){ + default_config['tools']['ise']['package'] = current_value_97; } // tools -> ise -> speed - const current_value_95 = json_config['tools']['ise']['speed']; - if (typeof current_value_95 === 'string'){ - default_config['tools']['ise']['speed'] = current_value_95; + const current_value_98 = json_config['tools']['ise']['speed']; + if (typeof current_value_98 === 'string'){ + default_config['tools']['ise']['speed'] = current_value_98; } // tools -> isem -> installation_path - const current_value_96 = json_config['tools']['isem']['installation_path']; - if (typeof current_value_96 === 'string'){ - default_config['tools']['isem']['installation_path'] = current_value_96; + const current_value_99 = json_config['tools']['isem']['installation_path']; + if (typeof current_value_99 === 'string'){ + default_config['tools']['isem']['installation_path'] = current_value_99; } // tools -> isem -> fuse_options - const current_value_97 = json_config['tools']['isem']['fuse_options']; - if (Array.isArray(current_value_97)){ - default_config['tools']['isem']['fuse_options'] = current_value_97; + const current_value_100 = json_config['tools']['isem']['fuse_options']; + if (Array.isArray(current_value_100)){ + default_config['tools']['isem']['fuse_options'] = current_value_100; } // tools -> isem -> isim_options - const current_value_98 = json_config['tools']['isem']['isim_options']; - if (Array.isArray(current_value_98)){ - default_config['tools']['isem']['isim_options'] = current_value_98; + const current_value_101 = json_config['tools']['isem']['isim_options']; + if (Array.isArray(current_value_101)){ + default_config['tools']['isem']['isim_options'] = current_value_101; } // tools -> modelsim -> installation_path - const current_value_99 = json_config['tools']['modelsim']['installation_path']; - if (typeof current_value_99 === 'string'){ - default_config['tools']['modelsim']['installation_path'] = current_value_99; + const current_value_102 = json_config['tools']['modelsim']['installation_path']; + if (typeof current_value_102 === 'string'){ + default_config['tools']['modelsim']['installation_path'] = current_value_102; } // tools -> modelsim -> vcom_options - const current_value_100 = json_config['tools']['modelsim']['vcom_options']; - if (Array.isArray(current_value_100)){ - default_config['tools']['modelsim']['vcom_options'] = current_value_100; + const current_value_103 = json_config['tools']['modelsim']['vcom_options']; + if (Array.isArray(current_value_103)){ + default_config['tools']['modelsim']['vcom_options'] = current_value_103; } // tools -> modelsim -> vlog_options - const current_value_101 = json_config['tools']['modelsim']['vlog_options']; - if (Array.isArray(current_value_101)){ - default_config['tools']['modelsim']['vlog_options'] = current_value_101; + const current_value_104 = json_config['tools']['modelsim']['vlog_options']; + if (Array.isArray(current_value_104)){ + default_config['tools']['modelsim']['vlog_options'] = current_value_104; } // tools -> modelsim -> vsim_options - const current_value_102 = json_config['tools']['modelsim']['vsim_options']; - if (Array.isArray(current_value_102)){ - default_config['tools']['modelsim']['vsim_options'] = current_value_102; + const current_value_105 = json_config['tools']['modelsim']['vsim_options']; + if (Array.isArray(current_value_105)){ + default_config['tools']['modelsim']['vsim_options'] = current_value_105; } // tools -> morty -> installation_path - const current_value_103 = json_config['tools']['morty']['installation_path']; - if (typeof current_value_103 === 'string'){ - default_config['tools']['morty']['installation_path'] = current_value_103; + const current_value_106 = json_config['tools']['morty']['installation_path']; + if (typeof current_value_106 === 'string'){ + default_config['tools']['morty']['installation_path'] = current_value_106; } // tools -> morty -> morty_options - const current_value_104 = json_config['tools']['morty']['morty_options']; - if (Array.isArray(current_value_104)){ - default_config['tools']['morty']['morty_options'] = current_value_104; + const current_value_107 = json_config['tools']['morty']['morty_options']; + if (Array.isArray(current_value_107)){ + default_config['tools']['morty']['morty_options'] = current_value_107; } // tools -> quartus -> installation_path - const current_value_105 = json_config['tools']['quartus']['installation_path']; - if (typeof current_value_105 === 'string'){ - default_config['tools']['quartus']['installation_path'] = current_value_105; + const current_value_108 = json_config['tools']['quartus']['installation_path']; + if (typeof current_value_108 === 'string'){ + default_config['tools']['quartus']['installation_path'] = current_value_108; } // tools -> quartus -> family - const current_value_106 = json_config['tools']['quartus']['family']; - if (typeof current_value_106 === 'string'){ - default_config['tools']['quartus']['family'] = current_value_106; + const current_value_109 = json_config['tools']['quartus']['family']; + if (typeof current_value_109 === 'string'){ + default_config['tools']['quartus']['family'] = current_value_109; } // tools -> quartus -> device - const current_value_107 = json_config['tools']['quartus']['device']; - if (typeof current_value_107 === 'string'){ - default_config['tools']['quartus']['device'] = current_value_107; + const current_value_110 = json_config['tools']['quartus']['device']; + if (typeof current_value_110 === 'string'){ + default_config['tools']['quartus']['device'] = current_value_110; } // tools -> quartus -> cable - const current_value_108 = json_config['tools']['quartus']['cable']; - if (typeof current_value_108 === 'string'){ - default_config['tools']['quartus']['cable'] = current_value_108; + const current_value_111 = json_config['tools']['quartus']['cable']; + if (typeof current_value_111 === 'string'){ + default_config['tools']['quartus']['cable'] = current_value_111; } // tools -> quartus -> board_device_index - const current_value_109 = json_config['tools']['quartus']['board_device_index']; - if (typeof current_value_109 === 'string'){ - default_config['tools']['quartus']['board_device_index'] = current_value_109; + const current_value_112 = json_config['tools']['quartus']['board_device_index']; + if (typeof current_value_112 === 'string'){ + default_config['tools']['quartus']['board_device_index'] = current_value_112; } // tools -> quartus -> pnr - const current_value_110 = json_config['tools']['quartus']['pnr']; - if ( current_value_110 === "default"){ + const current_value_113 = json_config['tools']['quartus']['pnr']; + if ( current_value_113 === "default"){ default_config['tools']['quartus']['pnr'] = e_tools_quartus_pnr.default; } - if ( current_value_110 === "dse"){ + if ( current_value_113 === "dse"){ default_config['tools']['quartus']['pnr'] = e_tools_quartus_pnr.dse; } - if ( current_value_110 === "none"){ + if ( current_value_113 === "none"){ default_config['tools']['quartus']['pnr'] = e_tools_quartus_pnr.none; } // tools -> quartus -> dse_options - const current_value_111 = json_config['tools']['quartus']['dse_options']; - if (Array.isArray(current_value_111)){ - default_config['tools']['quartus']['dse_options'] = current_value_111; + const current_value_114 = json_config['tools']['quartus']['dse_options']; + if (Array.isArray(current_value_114)){ + default_config['tools']['quartus']['dse_options'] = current_value_114; } // tools -> quartus -> quartus_options - const current_value_112 = json_config['tools']['quartus']['quartus_options']; - if (Array.isArray(current_value_112)){ - default_config['tools']['quartus']['quartus_options'] = current_value_112; + const current_value_115 = json_config['tools']['quartus']['quartus_options']; + if (Array.isArray(current_value_115)){ + default_config['tools']['quartus']['quartus_options'] = current_value_115; } // tools -> radiant -> installation_path - const current_value_113 = json_config['tools']['radiant']['installation_path']; - if (typeof current_value_113 === 'string'){ - default_config['tools']['radiant']['installation_path'] = current_value_113; + const current_value_116 = json_config['tools']['radiant']['installation_path']; + if (typeof current_value_116 === 'string'){ + default_config['tools']['radiant']['installation_path'] = current_value_116; } // tools -> radiant -> part - const current_value_114 = json_config['tools']['radiant']['part']; - if (typeof current_value_114 === 'string'){ - default_config['tools']['radiant']['part'] = current_value_114; + const current_value_117 = json_config['tools']['radiant']['part']; + if (typeof current_value_117 === 'string'){ + default_config['tools']['radiant']['part'] = current_value_117; } // tools -> rivierapro -> installation_path - const current_value_115 = json_config['tools']['rivierapro']['installation_path']; - if (typeof current_value_115 === 'string'){ - default_config['tools']['rivierapro']['installation_path'] = current_value_115; + const current_value_118 = json_config['tools']['rivierapro']['installation_path']; + if (typeof current_value_118 === 'string'){ + default_config['tools']['rivierapro']['installation_path'] = current_value_118; } // tools -> rivierapro -> compilation_mode - const current_value_116 = json_config['tools']['rivierapro']['compilation_mode']; - if (typeof current_value_116 === 'string'){ - default_config['tools']['rivierapro']['compilation_mode'] = current_value_116; + const current_value_119 = json_config['tools']['rivierapro']['compilation_mode']; + if (typeof current_value_119 === 'string'){ + default_config['tools']['rivierapro']['compilation_mode'] = current_value_119; } // tools -> rivierapro -> vlog_options - const current_value_117 = json_config['tools']['rivierapro']['vlog_options']; - if (Array.isArray(current_value_117)){ - default_config['tools']['rivierapro']['vlog_options'] = current_value_117; + const current_value_120 = json_config['tools']['rivierapro']['vlog_options']; + if (Array.isArray(current_value_120)){ + default_config['tools']['rivierapro']['vlog_options'] = current_value_120; } // tools -> rivierapro -> vsim_options - const current_value_118 = json_config['tools']['rivierapro']['vsim_options']; - if (Array.isArray(current_value_118)){ - default_config['tools']['rivierapro']['vsim_options'] = current_value_118; + const current_value_121 = json_config['tools']['rivierapro']['vsim_options']; + if (Array.isArray(current_value_121)){ + default_config['tools']['rivierapro']['vsim_options'] = current_value_121; } // tools -> siliconcompiler -> installation_path - const current_value_119 = json_config['tools']['siliconcompiler']['installation_path']; - if (typeof current_value_119 === 'string'){ - default_config['tools']['siliconcompiler']['installation_path'] = current_value_119; + const current_value_122 = json_config['tools']['siliconcompiler']['installation_path']; + if (typeof current_value_122 === 'string'){ + default_config['tools']['siliconcompiler']['installation_path'] = current_value_122; } // tools -> siliconcompiler -> target - const current_value_120 = json_config['tools']['siliconcompiler']['target']; - if (typeof current_value_120 === 'string'){ - default_config['tools']['siliconcompiler']['target'] = current_value_120; + const current_value_123 = json_config['tools']['siliconcompiler']['target']; + if (typeof current_value_123 === 'string'){ + default_config['tools']['siliconcompiler']['target'] = current_value_123; } // tools -> siliconcompiler -> server_enable - const current_value_121 = json_config['tools']['siliconcompiler']['server_enable']; - if (current_value_121 === true || current_value_121 === false){ - default_config['tools']['siliconcompiler']['server_enable'] = current_value_121; + const current_value_124 = json_config['tools']['siliconcompiler']['server_enable']; + if (current_value_124 === true || current_value_124 === false){ + default_config['tools']['siliconcompiler']['server_enable'] = current_value_124; } // tools -> siliconcompiler -> server_address - const current_value_122 = json_config['tools']['siliconcompiler']['server_address']; - if (typeof current_value_122 === 'string'){ - default_config['tools']['siliconcompiler']['server_address'] = current_value_122; + const current_value_125 = json_config['tools']['siliconcompiler']['server_address']; + if (typeof current_value_125 === 'string'){ + default_config['tools']['siliconcompiler']['server_address'] = current_value_125; } // tools -> siliconcompiler -> server_username - const current_value_123 = json_config['tools']['siliconcompiler']['server_username']; - if (typeof current_value_123 === 'string'){ - default_config['tools']['siliconcompiler']['server_username'] = current_value_123; + const current_value_126 = json_config['tools']['siliconcompiler']['server_username']; + if (typeof current_value_126 === 'string'){ + default_config['tools']['siliconcompiler']['server_username'] = current_value_126; } // tools -> siliconcompiler -> server_password - const current_value_124 = json_config['tools']['siliconcompiler']['server_password']; - if (typeof current_value_124 === 'string'){ - default_config['tools']['siliconcompiler']['server_password'] = current_value_124; + const current_value_127 = json_config['tools']['siliconcompiler']['server_password']; + if (typeof current_value_127 === 'string'){ + default_config['tools']['siliconcompiler']['server_password'] = current_value_127; } // tools -> spyglass -> installation_path - const current_value_125 = json_config['tools']['spyglass']['installation_path']; - if (typeof current_value_125 === 'string'){ - default_config['tools']['spyglass']['installation_path'] = current_value_125; + const current_value_128 = json_config['tools']['spyglass']['installation_path']; + if (typeof current_value_128 === 'string'){ + default_config['tools']['spyglass']['installation_path'] = current_value_128; } // tools -> spyglass -> methodology - const current_value_126 = json_config['tools']['spyglass']['methodology']; - if (typeof current_value_126 === 'string'){ - default_config['tools']['spyglass']['methodology'] = current_value_126; + const current_value_129 = json_config['tools']['spyglass']['methodology']; + if (typeof current_value_129 === 'string'){ + default_config['tools']['spyglass']['methodology'] = current_value_129; } // tools -> spyglass -> goals - const current_value_127 = json_config['tools']['spyglass']['goals']; - if (Array.isArray(current_value_127)){ - default_config['tools']['spyglass']['goals'] = current_value_127; + const current_value_130 = json_config['tools']['spyglass']['goals']; + if (Array.isArray(current_value_130)){ + default_config['tools']['spyglass']['goals'] = current_value_130; } // tools -> spyglass -> spyglass_options - const current_value_128 = json_config['tools']['spyglass']['spyglass_options']; - if (Array.isArray(current_value_128)){ - default_config['tools']['spyglass']['spyglass_options'] = current_value_128; + const current_value_131 = json_config['tools']['spyglass']['spyglass_options']; + if (Array.isArray(current_value_131)){ + default_config['tools']['spyglass']['spyglass_options'] = current_value_131; } // tools -> spyglass -> rule_parameters - const current_value_129 = json_config['tools']['spyglass']['rule_parameters']; - if (Array.isArray(current_value_129)){ - default_config['tools']['spyglass']['rule_parameters'] = current_value_129; + const current_value_132 = json_config['tools']['spyglass']['rule_parameters']; + if (Array.isArray(current_value_132)){ + default_config['tools']['spyglass']['rule_parameters'] = current_value_132; } // tools -> symbiyosys -> installation_path - const current_value_130 = json_config['tools']['symbiyosys']['installation_path']; - if (typeof current_value_130 === 'string'){ - default_config['tools']['symbiyosys']['installation_path'] = current_value_130; + const current_value_133 = json_config['tools']['symbiyosys']['installation_path']; + if (typeof current_value_133 === 'string'){ + default_config['tools']['symbiyosys']['installation_path'] = current_value_133; } // tools -> symbiyosys -> tasknames - const current_value_131 = json_config['tools']['symbiyosys']['tasknames']; - if (Array.isArray(current_value_131)){ - default_config['tools']['symbiyosys']['tasknames'] = current_value_131; + const current_value_134 = json_config['tools']['symbiyosys']['tasknames']; + if (Array.isArray(current_value_134)){ + default_config['tools']['symbiyosys']['tasknames'] = current_value_134; } // tools -> symbiflow -> installation_path - const current_value_132 = json_config['tools']['symbiflow']['installation_path']; - if (typeof current_value_132 === 'string'){ - default_config['tools']['symbiflow']['installation_path'] = current_value_132; + const current_value_135 = json_config['tools']['symbiflow']['installation_path']; + if (typeof current_value_135 === 'string'){ + default_config['tools']['symbiflow']['installation_path'] = current_value_135; } // tools -> symbiflow -> package - const current_value_133 = json_config['tools']['symbiflow']['package']; - if (typeof current_value_133 === 'string'){ - default_config['tools']['symbiflow']['package'] = current_value_133; + const current_value_136 = json_config['tools']['symbiflow']['package']; + if (typeof current_value_136 === 'string'){ + default_config['tools']['symbiflow']['package'] = current_value_136; } // tools -> symbiflow -> part - const current_value_134 = json_config['tools']['symbiflow']['part']; - if (typeof current_value_134 === 'string'){ - default_config['tools']['symbiflow']['part'] = current_value_134; + const current_value_137 = json_config['tools']['symbiflow']['part']; + if (typeof current_value_137 === 'string'){ + default_config['tools']['symbiflow']['part'] = current_value_137; } // tools -> symbiflow -> vendor - const current_value_135 = json_config['tools']['symbiflow']['vendor']; - if (typeof current_value_135 === 'string'){ - default_config['tools']['symbiflow']['vendor'] = current_value_135; + const current_value_138 = json_config['tools']['symbiflow']['vendor']; + if (typeof current_value_138 === 'string'){ + default_config['tools']['symbiflow']['vendor'] = current_value_138; } // tools -> symbiflow -> pnr - const current_value_136 = json_config['tools']['symbiflow']['pnr']; - if ( current_value_136 === "vpr"){ + const current_value_139 = json_config['tools']['symbiflow']['pnr']; + if ( current_value_139 === "vpr"){ default_config['tools']['symbiflow']['pnr'] = e_tools_symbiflow_pnr.vpr; } // tools -> symbiflow -> vpr_options - const current_value_137 = json_config['tools']['symbiflow']['vpr_options']; - if (typeof current_value_137 === 'string'){ - default_config['tools']['symbiflow']['vpr_options'] = current_value_137; + const current_value_140 = json_config['tools']['symbiflow']['vpr_options']; + if (typeof current_value_140 === 'string'){ + default_config['tools']['symbiflow']['vpr_options'] = current_value_140; } // tools -> symbiflow -> environment_script - const current_value_138 = json_config['tools']['symbiflow']['environment_script']; - if (typeof current_value_138 === 'string'){ - default_config['tools']['symbiflow']['environment_script'] = current_value_138; + const current_value_141 = json_config['tools']['symbiflow']['environment_script']; + if (typeof current_value_141 === 'string'){ + default_config['tools']['symbiflow']['environment_script'] = current_value_141; } // tools -> trellis -> installation_path - const current_value_139 = json_config['tools']['trellis']['installation_path']; - if (typeof current_value_139 === 'string'){ - default_config['tools']['trellis']['installation_path'] = current_value_139; + const current_value_142 = json_config['tools']['trellis']['installation_path']; + if (typeof current_value_142 === 'string'){ + default_config['tools']['trellis']['installation_path'] = current_value_142; } // tools -> trellis -> arch - const current_value_140 = json_config['tools']['trellis']['arch']; - if ( current_value_140 === "xilinx"){ + const current_value_143 = json_config['tools']['trellis']['arch']; + if ( current_value_143 === "xilinx"){ default_config['tools']['trellis']['arch'] = e_tools_trellis_arch.xilinx; } - if ( current_value_140 === "ice40"){ + if ( current_value_143 === "ice40"){ default_config['tools']['trellis']['arch'] = e_tools_trellis_arch.ice40; } - if ( current_value_140 === "ecp5"){ + if ( current_value_143 === "ecp5"){ default_config['tools']['trellis']['arch'] = e_tools_trellis_arch.ecp5; } // tools -> trellis -> output_format - const current_value_141 = json_config['tools']['trellis']['output_format']; - if ( current_value_141 === "json"){ + const current_value_144 = json_config['tools']['trellis']['output_format']; + if ( current_value_144 === "json"){ default_config['tools']['trellis']['output_format'] = e_tools_trellis_output_format.json; } - if ( current_value_141 === "edif"){ + if ( current_value_144 === "edif"){ default_config['tools']['trellis']['output_format'] = e_tools_trellis_output_format.edif; } - if ( current_value_141 === "blif"){ + if ( current_value_144 === "blif"){ default_config['tools']['trellis']['output_format'] = e_tools_trellis_output_format.blif; } // tools -> trellis -> yosys_as_subtool - const current_value_142 = json_config['tools']['trellis']['yosys_as_subtool']; - if (current_value_142 === true || current_value_142 === false){ - default_config['tools']['trellis']['yosys_as_subtool'] = current_value_142; + const current_value_145 = json_config['tools']['trellis']['yosys_as_subtool']; + if (current_value_145 === true || current_value_145 === false){ + default_config['tools']['trellis']['yosys_as_subtool'] = current_value_145; } // tools -> trellis -> makefile_name - const current_value_143 = json_config['tools']['trellis']['makefile_name']; - if (typeof current_value_143 === 'string'){ - default_config['tools']['trellis']['makefile_name'] = current_value_143; + const current_value_146 = json_config['tools']['trellis']['makefile_name']; + if (typeof current_value_146 === 'string'){ + default_config['tools']['trellis']['makefile_name'] = current_value_146; } // tools -> trellis -> script_name - const current_value_144 = json_config['tools']['trellis']['script_name']; - if (typeof current_value_144 === 'string'){ - default_config['tools']['trellis']['script_name'] = current_value_144; + const current_value_147 = json_config['tools']['trellis']['script_name']; + if (typeof current_value_147 === 'string'){ + default_config['tools']['trellis']['script_name'] = current_value_147; } // tools -> trellis -> nextpnr_options - const current_value_145 = json_config['tools']['trellis']['nextpnr_options']; - if (Array.isArray(current_value_145)){ - default_config['tools']['trellis']['nextpnr_options'] = current_value_145; + const current_value_148 = json_config['tools']['trellis']['nextpnr_options']; + if (Array.isArray(current_value_148)){ + default_config['tools']['trellis']['nextpnr_options'] = current_value_148; } // tools -> trellis -> yosys_synth_options - const current_value_146 = json_config['tools']['trellis']['yosys_synth_options']; - if (Array.isArray(current_value_146)){ - default_config['tools']['trellis']['yosys_synth_options'] = current_value_146; + const current_value_149 = json_config['tools']['trellis']['yosys_synth_options']; + if (Array.isArray(current_value_149)){ + default_config['tools']['trellis']['yosys_synth_options'] = current_value_149; } // tools -> vcs -> installation_path - const current_value_147 = json_config['tools']['vcs']['installation_path']; - if (typeof current_value_147 === 'string'){ - default_config['tools']['vcs']['installation_path'] = current_value_147; + const current_value_150 = json_config['tools']['vcs']['installation_path']; + if (typeof current_value_150 === 'string'){ + default_config['tools']['vcs']['installation_path'] = current_value_150; } // tools -> vcs -> vcs_options - const current_value_148 = json_config['tools']['vcs']['vcs_options']; - if (Array.isArray(current_value_148)){ - default_config['tools']['vcs']['vcs_options'] = current_value_148; + const current_value_151 = json_config['tools']['vcs']['vcs_options']; + if (Array.isArray(current_value_151)){ + default_config['tools']['vcs']['vcs_options'] = current_value_151; } // tools -> vcs -> run_options - const current_value_149 = json_config['tools']['vcs']['run_options']; - if (Array.isArray(current_value_149)){ - default_config['tools']['vcs']['run_options'] = current_value_149; + const current_value_152 = json_config['tools']['vcs']['run_options']; + if (Array.isArray(current_value_152)){ + default_config['tools']['vcs']['run_options'] = current_value_152; } // tools -> veriblelint -> installation_path - const current_value_150 = json_config['tools']['veriblelint']['installation_path']; - if (typeof current_value_150 === 'string'){ - default_config['tools']['veriblelint']['installation_path'] = current_value_150; + const current_value_153 = json_config['tools']['veriblelint']['installation_path']; + if (typeof current_value_153 === 'string'){ + default_config['tools']['veriblelint']['installation_path'] = current_value_153; } // tools -> veriblelint -> ruleset - const current_value_151 = json_config['tools']['veriblelint']['ruleset']; - if ( current_value_151 === "default"){ + const current_value_154 = json_config['tools']['veriblelint']['ruleset']; + if ( current_value_154 === "default"){ default_config['tools']['veriblelint']['ruleset'] = e_tools_veriblelint_ruleset.default; } - if ( current_value_151 === "all"){ + if ( current_value_154 === "all"){ default_config['tools']['veriblelint']['ruleset'] = e_tools_veriblelint_ruleset.all; } - if ( current_value_151 === "none"){ + if ( current_value_154 === "none"){ default_config['tools']['veriblelint']['ruleset'] = e_tools_veriblelint_ruleset.none; } // tools -> veriblelint -> verible_lint_args - const current_value_152 = json_config['tools']['veriblelint']['verible_lint_args']; - if (Array.isArray(current_value_152)){ - default_config['tools']['veriblelint']['verible_lint_args'] = current_value_152; + const current_value_155 = json_config['tools']['veriblelint']['verible_lint_args']; + if (Array.isArray(current_value_155)){ + default_config['tools']['veriblelint']['verible_lint_args'] = current_value_155; } // tools -> veriblelint -> rules - const current_value_153 = json_config['tools']['veriblelint']['rules']; - if (Array.isArray(current_value_153)){ - default_config['tools']['veriblelint']['rules'] = current_value_153; + const current_value_156 = json_config['tools']['veriblelint']['rules']; + if (Array.isArray(current_value_156)){ + default_config['tools']['veriblelint']['rules'] = current_value_156; } // tools -> verilator -> installation_path - const current_value_154 = json_config['tools']['verilator']['installation_path']; - if (typeof current_value_154 === 'string'){ - default_config['tools']['verilator']['installation_path'] = current_value_154; + const current_value_157 = json_config['tools']['verilator']['installation_path']; + if (typeof current_value_157 === 'string'){ + default_config['tools']['verilator']['installation_path'] = current_value_157; } // tools -> verilator -> mode - const current_value_155 = json_config['tools']['verilator']['mode']; - if ( current_value_155 === "cc"){ + const current_value_158 = json_config['tools']['verilator']['mode']; + if ( current_value_158 === "cc"){ default_config['tools']['verilator']['mode'] = e_tools_verilator_mode.cc; } - if ( current_value_155 === "sc"){ + if ( current_value_158 === "sc"){ default_config['tools']['verilator']['mode'] = e_tools_verilator_mode.sc; } - if ( current_value_155 === "lint-only"){ + if ( current_value_158 === "lint-only"){ default_config['tools']['verilator']['mode'] = e_tools_verilator_mode.lint_only; } // tools -> verilator -> libs - const current_value_156 = json_config['tools']['verilator']['libs']; - if (Array.isArray(current_value_156)){ - default_config['tools']['verilator']['libs'] = current_value_156; + const current_value_159 = json_config['tools']['verilator']['libs']; + if (Array.isArray(current_value_159)){ + default_config['tools']['verilator']['libs'] = current_value_159; } // tools -> verilator -> verilator_options - const current_value_157 = json_config['tools']['verilator']['verilator_options']; - if (Array.isArray(current_value_157)){ - default_config['tools']['verilator']['verilator_options'] = current_value_157; + const current_value_160 = json_config['tools']['verilator']['verilator_options']; + if (Array.isArray(current_value_160)){ + default_config['tools']['verilator']['verilator_options'] = current_value_160; } // tools -> verilator -> make_options - const current_value_158 = json_config['tools']['verilator']['make_options']; - if (Array.isArray(current_value_158)){ - default_config['tools']['verilator']['make_options'] = current_value_158; + const current_value_161 = json_config['tools']['verilator']['make_options']; + if (Array.isArray(current_value_161)){ + default_config['tools']['verilator']['make_options'] = current_value_161; } // tools -> verilator -> run_options - const current_value_159 = json_config['tools']['verilator']['run_options']; - if (Array.isArray(current_value_159)){ - default_config['tools']['verilator']['run_options'] = current_value_159; + const current_value_162 = json_config['tools']['verilator']['run_options']; + if (Array.isArray(current_value_162)){ + default_config['tools']['verilator']['run_options'] = current_value_162; } // tools -> vivado -> installation_path - const current_value_160 = json_config['tools']['vivado']['installation_path']; - if (typeof current_value_160 === 'string'){ - default_config['tools']['vivado']['installation_path'] = current_value_160; + const current_value_163 = json_config['tools']['vivado']['installation_path']; + if (typeof current_value_163 === 'string'){ + default_config['tools']['vivado']['installation_path'] = current_value_163; } // tools -> vivado -> part - const current_value_161 = json_config['tools']['vivado']['part']; - if (typeof current_value_161 === 'string'){ - default_config['tools']['vivado']['part'] = current_value_161; + const current_value_164 = json_config['tools']['vivado']['part']; + if (typeof current_value_164 === 'string'){ + default_config['tools']['vivado']['part'] = current_value_164; } // tools -> vivado -> synth - const current_value_162 = json_config['tools']['vivado']['synth']; - if (typeof current_value_162 === 'string'){ - default_config['tools']['vivado']['synth'] = current_value_162; + const current_value_165 = json_config['tools']['vivado']['synth']; + if (typeof current_value_165 === 'string'){ + default_config['tools']['vivado']['synth'] = current_value_165; } // tools -> vivado -> pnr - const current_value_163 = json_config['tools']['vivado']['pnr']; - if ( current_value_163 === "vivado"){ + const current_value_166 = json_config['tools']['vivado']['pnr']; + if ( current_value_166 === "vivado"){ default_config['tools']['vivado']['pnr'] = e_tools_vivado_pnr.vivado; } - if ( current_value_163 === "none"){ + if ( current_value_166 === "none"){ default_config['tools']['vivado']['pnr'] = e_tools_vivado_pnr.none; } // tools -> vivado -> jtag_freq - const current_value_164 = json_config['tools']['vivado']['jtag_freq']; - if (typeof current_value_164 === 'number'){ - default_config['tools']['vivado']['jtag_freq'] = current_value_164; + const current_value_167 = json_config['tools']['vivado']['jtag_freq']; + if (typeof current_value_167 === 'number'){ + default_config['tools']['vivado']['jtag_freq'] = current_value_167; } // tools -> vivado -> hw_target - const current_value_165 = json_config['tools']['vivado']['hw_target']; - if (typeof current_value_165 === 'string'){ - default_config['tools']['vivado']['hw_target'] = current_value_165; + const current_value_168 = json_config['tools']['vivado']['hw_target']; + if (typeof current_value_168 === 'string'){ + default_config['tools']['vivado']['hw_target'] = current_value_168; } // tools -> vunit -> installation_path - const current_value_166 = json_config['tools']['vunit']['installation_path']; - if (typeof current_value_166 === 'string'){ - default_config['tools']['vunit']['installation_path'] = current_value_166; + const current_value_169 = json_config['tools']['vunit']['installation_path']; + if (typeof current_value_169 === 'string'){ + default_config['tools']['vunit']['installation_path'] = current_value_169; } // tools -> vunit -> simulator_name - const current_value_167 = json_config['tools']['vunit']['simulator_name']; - if ( current_value_167 === "rivierapro"){ + const current_value_170 = json_config['tools']['vunit']['simulator_name']; + if ( current_value_170 === "rivierapro"){ default_config['tools']['vunit']['simulator_name'] = e_tools_vunit_simulator_name.rivierapro; } - if ( current_value_167 === "activehdl"){ + if ( current_value_170 === "activehdl"){ default_config['tools']['vunit']['simulator_name'] = e_tools_vunit_simulator_name.activehdl; } - if ( current_value_167 === "ghdl"){ + if ( current_value_170 === "ghdl"){ default_config['tools']['vunit']['simulator_name'] = e_tools_vunit_simulator_name.ghdl; } - if ( current_value_167 === "modelsim"){ + if ( current_value_170 === "modelsim"){ default_config['tools']['vunit']['simulator_name'] = e_tools_vunit_simulator_name.modelsim; } - if ( current_value_167 === "xsim"){ + if ( current_value_170 === "xsim"){ default_config['tools']['vunit']['simulator_name'] = e_tools_vunit_simulator_name.xsim; } // tools -> vunit -> runpy_mode - const current_value_168 = json_config['tools']['vunit']['runpy_mode']; - if ( current_value_168 === "standalone"){ + const current_value_171 = json_config['tools']['vunit']['runpy_mode']; + if ( current_value_171 === "standalone"){ default_config['tools']['vunit']['runpy_mode'] = e_tools_vunit_runpy_mode.standalone; } - if ( current_value_168 === "creation"){ + if ( current_value_171 === "creation"){ default_config['tools']['vunit']['runpy_mode'] = e_tools_vunit_runpy_mode.creation; } // tools -> vunit -> extra_options - const current_value_169 = json_config['tools']['vunit']['extra_options']; - if (Array.isArray(current_value_169)){ - default_config['tools']['vunit']['extra_options'] = current_value_169; + const current_value_172 = json_config['tools']['vunit']['extra_options']; + if (Array.isArray(current_value_172)){ + default_config['tools']['vunit']['extra_options'] = current_value_172; } // tools -> vunit -> enable_array_util_lib - const current_value_170 = json_config['tools']['vunit']['enable_array_util_lib']; - if (current_value_170 === true || current_value_170 === false){ - default_config['tools']['vunit']['enable_array_util_lib'] = current_value_170; + const current_value_173 = json_config['tools']['vunit']['enable_array_util_lib']; + if (current_value_173 === true || current_value_173 === false){ + default_config['tools']['vunit']['enable_array_util_lib'] = current_value_173; } // tools -> vunit -> enable_com_lib - const current_value_171 = json_config['tools']['vunit']['enable_com_lib']; - if (current_value_171 === true || current_value_171 === false){ - default_config['tools']['vunit']['enable_com_lib'] = current_value_171; + const current_value_174 = json_config['tools']['vunit']['enable_com_lib']; + if (current_value_174 === true || current_value_174 === false){ + default_config['tools']['vunit']['enable_com_lib'] = current_value_174; } // tools -> vunit -> enable_json4vhdl_lib - const current_value_172 = json_config['tools']['vunit']['enable_json4vhdl_lib']; - if (current_value_172 === true || current_value_172 === false){ - default_config['tools']['vunit']['enable_json4vhdl_lib'] = current_value_172; + const current_value_175 = json_config['tools']['vunit']['enable_json4vhdl_lib']; + if (current_value_175 === true || current_value_175 === false){ + default_config['tools']['vunit']['enable_json4vhdl_lib'] = current_value_175; } // tools -> vunit -> enable_osvvm_lib - const current_value_173 = json_config['tools']['vunit']['enable_osvvm_lib']; - if (current_value_173 === true || current_value_173 === false){ - default_config['tools']['vunit']['enable_osvvm_lib'] = current_value_173; + const current_value_176 = json_config['tools']['vunit']['enable_osvvm_lib']; + if (current_value_176 === true || current_value_176 === false){ + default_config['tools']['vunit']['enable_osvvm_lib'] = current_value_176; } // tools -> vunit -> enable_random_lib - const current_value_174 = json_config['tools']['vunit']['enable_random_lib']; - if (current_value_174 === true || current_value_174 === false){ - default_config['tools']['vunit']['enable_random_lib'] = current_value_174; + const current_value_177 = json_config['tools']['vunit']['enable_random_lib']; + if (current_value_177 === true || current_value_177 === false){ + default_config['tools']['vunit']['enable_random_lib'] = current_value_177; } // tools -> vunit -> enable_verification_components_lib - const current_value_175 = json_config['tools']['vunit']['enable_verification_components_lib']; - if (current_value_175 === true || current_value_175 === false){ - default_config['tools']['vunit']['enable_verification_components_lib'] = current_value_175; + const current_value_178 = json_config['tools']['vunit']['enable_verification_components_lib']; + if (current_value_178 === true || current_value_178 === false){ + default_config['tools']['vunit']['enable_verification_components_lib'] = current_value_178; } // tools -> xcelium -> installation_path - const current_value_176 = json_config['tools']['xcelium']['installation_path']; - if (typeof current_value_176 === 'string'){ - default_config['tools']['xcelium']['installation_path'] = current_value_176; + const current_value_179 = json_config['tools']['xcelium']['installation_path']; + if (typeof current_value_179 === 'string'){ + default_config['tools']['xcelium']['installation_path'] = current_value_179; } // tools -> xcelium -> xmvhdl_options - const current_value_177 = json_config['tools']['xcelium']['xmvhdl_options']; - if (Array.isArray(current_value_177)){ - default_config['tools']['xcelium']['xmvhdl_options'] = current_value_177; + const current_value_180 = json_config['tools']['xcelium']['xmvhdl_options']; + if (Array.isArray(current_value_180)){ + default_config['tools']['xcelium']['xmvhdl_options'] = current_value_180; } // tools -> xcelium -> xmvlog_options - const current_value_178 = json_config['tools']['xcelium']['xmvlog_options']; - if (Array.isArray(current_value_178)){ - default_config['tools']['xcelium']['xmvlog_options'] = current_value_178; + const current_value_181 = json_config['tools']['xcelium']['xmvlog_options']; + if (Array.isArray(current_value_181)){ + default_config['tools']['xcelium']['xmvlog_options'] = current_value_181; } // tools -> xcelium -> xmsim_options - const current_value_179 = json_config['tools']['xcelium']['xmsim_options']; - if (Array.isArray(current_value_179)){ - default_config['tools']['xcelium']['xmsim_options'] = current_value_179; + const current_value_182 = json_config['tools']['xcelium']['xmsim_options']; + if (Array.isArray(current_value_182)){ + default_config['tools']['xcelium']['xmsim_options'] = current_value_182; } // tools -> xcelium -> xrun_options - const current_value_180 = json_config['tools']['xcelium']['xrun_options']; - if (Array.isArray(current_value_180)){ - default_config['tools']['xcelium']['xrun_options'] = current_value_180; + const current_value_183 = json_config['tools']['xcelium']['xrun_options']; + if (Array.isArray(current_value_183)){ + default_config['tools']['xcelium']['xrun_options'] = current_value_183; } // tools -> xsim -> installation_path - const current_value_181 = json_config['tools']['xsim']['installation_path']; - if (typeof current_value_181 === 'string'){ - default_config['tools']['xsim']['installation_path'] = current_value_181; + const current_value_184 = json_config['tools']['xsim']['installation_path']; + if (typeof current_value_184 === 'string'){ + default_config['tools']['xsim']['installation_path'] = current_value_184; } // tools -> xsim -> xelab_options - const current_value_182 = json_config['tools']['xsim']['xelab_options']; - if (Array.isArray(current_value_182)){ - default_config['tools']['xsim']['xelab_options'] = current_value_182; + const current_value_185 = json_config['tools']['xsim']['xelab_options']; + if (Array.isArray(current_value_185)){ + default_config['tools']['xsim']['xelab_options'] = current_value_185; } // tools -> xsim -> xsim_options - const current_value_183 = json_config['tools']['xsim']['xsim_options']; - if (Array.isArray(current_value_183)){ - default_config['tools']['xsim']['xsim_options'] = current_value_183; + const current_value_186 = json_config['tools']['xsim']['xsim_options']; + if (Array.isArray(current_value_186)){ + default_config['tools']['xsim']['xsim_options'] = current_value_186; } // tools -> yosys -> installation_path - const current_value_184 = json_config['tools']['yosys']['installation_path']; - if (typeof current_value_184 === 'string'){ - default_config['tools']['yosys']['installation_path'] = current_value_184; + const current_value_187 = json_config['tools']['yosys']['installation_path']; + if (typeof current_value_187 === 'string'){ + default_config['tools']['yosys']['installation_path'] = current_value_187; } // tools -> yosys -> arch - const current_value_185 = json_config['tools']['yosys']['arch']; - if ( current_value_185 === "xilinx"){ + const current_value_188 = json_config['tools']['yosys']['arch']; + if ( current_value_188 === "xilinx"){ default_config['tools']['yosys']['arch'] = e_tools_yosys_arch.xilinx; } - if ( current_value_185 === "ice40"){ + if ( current_value_188 === "ice40"){ default_config['tools']['yosys']['arch'] = e_tools_yosys_arch.ice40; } - if ( current_value_185 === "ecp5"){ + if ( current_value_188 === "ecp5"){ default_config['tools']['yosys']['arch'] = e_tools_yosys_arch.ecp5; } // tools -> yosys -> output_format - const current_value_186 = json_config['tools']['yosys']['output_format']; - if ( current_value_186 === "json"){ + const current_value_189 = json_config['tools']['yosys']['output_format']; + if ( current_value_189 === "json"){ default_config['tools']['yosys']['output_format'] = e_tools_yosys_output_format.json; } - if ( current_value_186 === "edif"){ + if ( current_value_189 === "edif"){ default_config['tools']['yosys']['output_format'] = e_tools_yosys_output_format.edif; } - if ( current_value_186 === "blif"){ + if ( current_value_189 === "blif"){ default_config['tools']['yosys']['output_format'] = e_tools_yosys_output_format.blif; } // tools -> yosys -> yosys_as_subtool - const current_value_187 = json_config['tools']['yosys']['yosys_as_subtool']; - if (current_value_187 === true || current_value_187 === false){ - default_config['tools']['yosys']['yosys_as_subtool'] = current_value_187; + const current_value_190 = json_config['tools']['yosys']['yosys_as_subtool']; + if (current_value_190 === true || current_value_190 === false){ + default_config['tools']['yosys']['yosys_as_subtool'] = current_value_190; } // tools -> yosys -> makefile_name - const current_value_188 = json_config['tools']['yosys']['makefile_name']; - if (typeof current_value_188 === 'string'){ - default_config['tools']['yosys']['makefile_name'] = current_value_188; + const current_value_191 = json_config['tools']['yosys']['makefile_name']; + if (typeof current_value_191 === 'string'){ + default_config['tools']['yosys']['makefile_name'] = current_value_191; } // tools -> yosys -> script_name - const current_value_189 = json_config['tools']['yosys']['script_name']; - if (typeof current_value_189 === 'string'){ - default_config['tools']['yosys']['script_name'] = current_value_189; + const current_value_192 = json_config['tools']['yosys']['script_name']; + if (typeof current_value_192 === 'string'){ + default_config['tools']['yosys']['script_name'] = current_value_192; } // tools -> yosys -> yosys_synth_options - const current_value_190 = json_config['tools']['yosys']['yosys_synth_options']; - if (Array.isArray(current_value_190)){ - default_config['tools']['yosys']['yosys_synth_options'] = current_value_190; + const current_value_193 = json_config['tools']['yosys']['yosys_synth_options']; + if (Array.isArray(current_value_193)){ + default_config['tools']['yosys']['yosys_synth_options'] = current_value_193; + } + + // tools -> openfpga -> installation_path + const current_value_194 = json_config['tools']['openfpga']['installation_path']; + if (typeof current_value_194 === 'string'){ + default_config['tools']['openfpga']['installation_path'] = current_value_194; + } + + // tools -> openfpga -> arch + const current_value_195 = json_config['tools']['openfpga']['arch']; + if ( current_value_195 === "xilinx"){ + default_config['tools']['openfpga']['arch'] = e_tools_openfpga_arch.xilinx; + } + if ( current_value_195 === "ice40"){ + default_config['tools']['openfpga']['arch'] = e_tools_openfpga_arch.ice40; + } + if ( current_value_195 === "ecp5"){ + default_config['tools']['openfpga']['arch'] = e_tools_openfpga_arch.ecp5; + } + + // tools -> openfpga -> output_format + const current_value_196 = json_config['tools']['openfpga']['output_format']; + if ( current_value_196 === "json"){ + default_config['tools']['openfpga']['output_format'] = e_tools_openfpga_output_format.json; + } + if ( current_value_196 === "edif"){ + default_config['tools']['openfpga']['output_format'] = e_tools_openfpga_output_format.edif; + } + if ( current_value_196 === "blif"){ + default_config['tools']['openfpga']['output_format'] = e_tools_openfpga_output_format.blif; + } + + // tools -> openfpga -> yosys_as_subtool + const current_value_197 = json_config['tools']['openfpga']['yosys_as_subtool']; + if (current_value_197 === true || current_value_197 === false){ + default_config['tools']['openfpga']['yosys_as_subtool'] = current_value_197; + } + + // tools -> openfpga -> makefile_name + const current_value_198 = json_config['tools']['openfpga']['makefile_name']; + if (typeof current_value_198 === 'string'){ + default_config['tools']['openfpga']['makefile_name'] = current_value_198; + } + + // tools -> openfpga -> script_name + const current_value_199 = json_config['tools']['openfpga']['script_name']; + if (typeof current_value_199 === 'string'){ + default_config['tools']['openfpga']['script_name'] = current_value_199; + } + + // tools -> openfpga -> yosys_synth_options + const current_value_200 = json_config['tools']['openfpga']['yosys_synth_options']; + if (Array.isArray(current_value_200)){ + default_config['tools']['openfpga']['yosys_synth_options'] = current_value_200; } diff --git a/src/config/config_manager.ts b/src/config/config_manager.ts index 94cf2aa5..858c8153 100644 --- a/src/config/config_manager.ts +++ b/src/config/config_manager.ts @@ -251,7 +251,7 @@ export class Config_manager { //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// public get_tool_options(): cfg_aux.t_tool_options { const tool_name = this.config.tools.general.select_tool; - const tool_config = this.config.tools[tool_name]; + const tool_config = (this.config.tools)[tool_name]; const tool_options: cfg_aux.t_tool_options = { name: this.config.tools.general.select_tool, installation_path: tool_config['installation_path'], diff --git a/src/config/config_web.ts b/src/config/config_web.ts index c0d93bfd..34724781 100644 --- a/src/config/config_web.ts +++ b/src/config/config_web.ts @@ -28,6 +28,7 @@ body { font-family: 'Open Sans', sans-serif; background-color: white; color: black; + } h3 { @@ -41,7 +42,7 @@ h3 { /*style the items (options), including the selected item:*/ select{ - width:20%; + width:50%; padding: 8px 16px; cursor: pointer; padding-right: 29px; @@ -156,10 +157,10 @@ input[type='input'] { .button { border: none; color: white; - padding: 15px 32px; + padding: 11px 25px; text-align: center; text-decoration: none; - font-size: 16px; + font-size: 13px; margin: 4px 2px; cursor: pointer; float: right; @@ -330,6 +331,7 @@ input[type='input'] { @@ -874,9 +877,25 @@ input[type='input'] {


@@ -899,6 +918,37 @@ input[type='input'] {

+
+

Tools: OSVVM

+
+

OSVVM is an advanced verification methodology that defines a VHDL verification framework, verification utility library, verification component library, and a scripting flow that simplifies your FPGA or ASIC verification project from start to finish. Using these libraries you can create a simple, readable, and powerful testbench that is suitable for either a simple FPGA block or a complex ASIC.

+ +
+ +

+ +
+ +

+ +
+ +

+ +

+ +

+

Tools: Ascenlint


@@ -1542,22 +1592,22 @@ input[type='input'] {

- +

- +

- +

- +

- +

- +

@@ -1652,6 +1702,49 @@ input[type='input'] {

+
+

Tools: OpenFPGA

+
+

The award-winning OpenFPGA framework is the first open-source FPGA IP generator with silicon proofs supporting highly-customizable FPGA architectures.

+ +
+ +

+ +
+ +

+ +
+ +

+ + +

+ +
+ +

+ +
+ +

+ + +

+ +

+ +

+
@@ -1659,8 +1752,8 @@ input[type='input'] { - - + +