取消 fsm

This commit is contained in:
锦恢 2024-12-31 16:04:01 +08:00
parent cbb9c40940
commit 2ef8b78d26
21 changed files with 1 additions and 3179 deletions

View File

@ -1,635 +0,0 @@
{
"efx:project": {
"_attributes": {
"xmlns:efx": "http://www.efinixinc.com/enf_proj",
"xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance",
"name": "Ti60_Demo",
"description": "",
"last_change": "1724637727",
"sw_version": "2023.2.307",
"last_run_state": "pass",
"last_run_flow": "bitstream",
"config_result_in_sync": "sync",
"design_ood": "sync",
"place_ood": "sync",
"route_ood": "sync",
"xsi:schemaLocation": "http://www.efinixinc.com/enf_proj enf_proj.xsd"
},
"efx:device_info": {
"efx:family": {
"_attributes": {
"name": "Titanium"
}
},
"efx:device": {
"_attributes": {
"name": "Ti60F100S3F2"
}
},
"efx:timing_model": {
"_attributes": {
"name": "C4"
}
}
},
"efx:design_info": {
"_attributes": {
"def_veri_version": "verilog_2k",
"def_vhdl_version": "vhdl_2008"
},
"efx:top_module": {
"_attributes": {
"name": "example_top"
}
},
"efx:design_file": [
{
"_attributes": {
"name": "example_top.v",
"version": "default",
"library": "default"
}
},
{
"_attributes": {
"name": "src/Reset.v",
"version": "default",
"library": "default"
}
},
{
"_attributes": {
"name": "src/uart_index/precise_divider.v",
"version": "default",
"library": "default"
}
},
{
"_attributes": {
"name": "src/uart_index/uart_transfer.v",
"version": "default",
"library": "default"
}
},
{
"_attributes": {
"name": "src/uart_index/uart_receiver.v",
"version": "default",
"library": "default"
}
},
{
"_attributes": {
"name": "src/uart_index/integer_divider.v",
"version": "default",
"library": "default"
}
}
],
"efx:top_vhdl_arch": {
"_attributes": {
"name": ""
}
}
},
"efx:constraint_info": {
"efx:sdc_file": {
"_attributes": {
"name": "Ti60_Demo.pt.sdc"
}
},
"efx:inter_file": {
"_attributes": {
"name": ""
}
}
},
"efx:sim_info": {},
"efx:misc_info": {},
"efx:ip_info": {
"efx:ip": {
"_attributes": {
"instance_name": "FIFO_4Kx8",
"path": "ip/FIFO_4Kx8/settings.json"
},
"efx:ip_src_file": {
"_attributes": {
"name": "FIFO_4Kx8.v"
}
}
}
},
"efx:synthesis": {
"_attributes": {
"tool_name": "efx_map"
},
"efx:param": [
{
"_attributes": {
"name": "work_dir",
"value": "prj/work_syn",
"value_type": "e_string"
}
},
{
"_attributes": {
"name": "write_efx_verilog",
"value": "on",
"value_type": "e_bool"
}
},
{
"_attributes": {
"name": "mode",
"value": "speed",
"value_type": "e_option"
}
},
{
"_attributes": {
"name": "max_ram",
"value": "-1",
"value_type": "e_integer"
}
},
{
"_attributes": {
"name": "max_mult",
"value": "-1",
"value_type": "e_integer"
}
},
{
"_attributes": {
"name": "infer-clk-enable",
"value": "3",
"value_type": "e_option"
}
},
{
"_attributes": {
"name": "infer-sync-set-reset",
"value": "1",
"value_type": "e_option"
}
},
{
"_attributes": {
"name": "fanout-limit",
"value": "0",
"value_type": "e_integer"
}
},
{
"_attributes": {
"name": "seq_opt",
"value": "0",
"value_type": "e_option"
}
},
{
"_attributes": {
"name": "retiming",
"value": "0",
"value_type": "e_option"
}
},
{
"_attributes": {
"name": "dsp-mac-packing",
"value": "1",
"value_type": "e_option"
}
},
{
"_attributes": {
"name": "dsp-input-regs-packing",
"value": "1",
"value_type": "e_option"
}
},
{
"_attributes": {
"name": "dsp-output-regs-packing",
"value": "1",
"value_type": "e_option"
}
},
{
"_attributes": {
"name": "bram_output_regs_packing",
"value": "1",
"value_type": "e_option"
}
},
{
"_attributes": {
"name": "blast_const_operand_adders",
"value": "1",
"value_type": "e_option"
}
},
{
"_attributes": {
"name": "operator-sharing",
"value": "0",
"value_type": "e_option"
}
},
{
"_attributes": {
"name": "optimize-adder-tree",
"value": "0",
"value_type": "e_option"
}
},
{
"_attributes": {
"name": "pack-luts-to-comb4",
"value": "0",
"value_type": "e_option"
}
},
{
"_attributes": {
"name": "min-sr-fanout",
"value": "0",
"value_type": "e_integer"
}
},
{
"_attributes": {
"name": "min-ce-fanout",
"value": "0",
"value_type": "e_integer"
}
},
{
"_attributes": {
"name": "seq-opt-sync-only",
"value": "0",
"value_type": "e_option"
}
},
{
"_attributes": {
"name": "blackbox-error",
"value": "1",
"value_type": "e_option"
}
},
{
"_attributes": {
"name": "allow-const-ram-index",
"value": "0",
"value_type": "e_option"
}
},
{
"_attributes": {
"name": "hdl-compile-unit",
"value": "1",
"value_type": "e_option"
}
},
{
"_attributes": {
"name": "create-onehot-fsms",
"value": "0",
"value_type": "e_option"
}
},
{
"_attributes": {
"name": "mult-decomp-retime",
"value": "0",
"value_type": "e_option"
}
},
{
"_attributes": {
"name": "optimize-zero-init-rom",
"value": "1",
"value_type": "e_option"
}
},
{
"_attributes": {
"name": "insert-carry-skip",
"value": "0",
"value_type": "e_option"
}
},
{
"_attributes": {
"name": "mult-auto-pipeline",
"value": "0",
"value_type": "e_option"
}
},
{
"_attributes": {
"name": "use-logic-for-small-mem",
"value": "64",
"value_type": "e_integer"
}
},
{
"_attributes": {
"name": "use-logic-for-small-rom",
"value": "64",
"value_type": "e_integer"
}
},
{
"_attributes": {
"name": "include",
"value": "ip/FIFO_4Kx8",
"value_type": "e_string"
}
}
]
},
"efx:place_and_route": {
"_attributes": {
"tool_name": "efx_pnr"
},
"efx:param": [
{
"_attributes": {
"name": "work_dir",
"value": "prj/work_pnr",
"value_type": "e_string"
}
},
{
"_attributes": {
"name": "verbose",
"value": "off",
"value_type": "e_bool"
}
},
{
"_attributes": {
"name": "load_delaym",
"value": "on",
"value_type": "e_bool"
}
},
{
"_attributes": {
"name": "optimization_level",
"value": "CONGESTION_1",
"value_type": "e_option"
}
},
{
"_attributes": {
"name": "seed",
"value": "1",
"value_type": "e_integer"
}
},
{
"_attributes": {
"name": "placer_effort_level",
"value": "1",
"value_type": "e_option"
}
},
{
"_attributes": {
"name": "max_threads",
"value": "32",
"value_type": "e_integer"
}
},
{
"_attributes": {
"name": "beneficial_skew",
"value": "on",
"value_type": "e_option"
}
},
{
"_attributes": {
"name": "print_critical_path",
"value": "10",
"value_type": "e_integer"
}
}
]
},
"efx:bitstream_generation": {
"_attributes": {
"tool_name": "efx_pgm"
},
"efx:param": [
{
"_attributes": {
"name": "mode",
"value": "active",
"value_type": "e_option"
}
},
{
"_attributes": {
"name": "width",
"value": "2",
"value_type": "e_option"
}
},
{
"_attributes": {
"name": "cold_boot",
"value": "off",
"value_type": "e_bool"
}
},
{
"_attributes": {
"name": "cascade",
"value": "off",
"value_type": "e_option"
}
},
{
"_attributes": {
"name": "enable_roms",
"value": "on",
"value_type": "e_option"
}
},
{
"_attributes": {
"name": "spi_low_power_mode",
"value": "off",
"value_type": "e_bool"
}
},
{
"_attributes": {
"name": "io_weak_pullup",
"value": "on",
"value_type": "e_bool"
}
},
{
"_attributes": {
"name": "oscillator_clock_divider",
"value": "DIV8",
"value_type": "e_option"
}
},
{
"_attributes": {
"name": "enable_crc_check",
"value": "on",
"value_type": "e_bool"
}
},
{
"_attributes": {
"name": "bitstream_compression",
"value": "on",
"value_type": "e_bool"
}
},
{
"_attributes": {
"name": "active_capture_clk_edge",
"value": "negedge",
"value_type": "e_option"
}
},
{
"_attributes": {
"name": "release_tri_then_reset",
"value": "on",
"value_type": "e_bool"
}
},
{
"_attributes": {
"name": "enable_external_master_clock",
"value": "off",
"value_type": "e_bool"
}
},
{
"_attributes": {
"name": "jtag_usercode",
"value": "0xFFFFFFFF",
"value_type": "e_string"
}
},
{
"_attributes": {
"name": "generate_bit",
"value": "on",
"value_type": "e_bool"
}
},
{
"_attributes": {
"name": "generate_bitbin",
"value": "on",
"value_type": "e_bool"
}
},
{
"_attributes": {
"name": "generate_hex",
"value": "on",
"value_type": "e_bool"
}
},
{
"_attributes": {
"name": "generate_hexbin",
"value": "on",
"value_type": "e_bool"
}
},
{
"_attributes": {
"name": "four_byte_addressing",
"value": "off",
"value_type": "e_bool"
}
}
]
},
"efx:debugger": {
"efx:param": [
{
"_attributes": {
"name": "work_dir",
"value": "prj/work_dbg",
"value_type": "e_string"
}
},
{
"_attributes": {
"name": "auto_instantiation",
"value": "off",
"value_type": "e_bool"
}
},
{
"_attributes": {
"name": "profile",
"value": "NONE",
"value_type": "e_string"
}
}
]
},
"efx:security": {
"efx:param": [
{
"_attributes": {
"name": "enable_bitstream_encrypt",
"value": "off",
"value_type": "e_bool"
}
},
{
"_attributes": {
"name": "enable_bitstream_auth",
"value": "off",
"value_type": "e_bool"
}
},
{
"_attributes": {
"name": "encryption_key_file",
"value": "NONE",
"value_type": "e_string"
}
},
{
"_attributes": {
"name": "auth_key_file",
"value": "NONE",
"value_type": "e_string"
}
},
{
"_attributes": {
"name": "randomize_iv_value",
"value": "off",
"value_type": "e_bool"
}
},
{
"_attributes": {
"name": "iv_value",
"value": "",
"value_type": "e_string"
}
}
]
}
}
}

View File

@ -696,11 +696,6 @@
"command": "digital-ide.tool.icarus.simulateFile", "command": "digital-ide.tool.icarus.simulateFile",
"group": "navigation@1" "group": "navigation@1"
}, },
{
"when": "editorLangId == verilog || editorLangId == systemverilog || editorLangId == vhdl",
"command": "digital-ide.fsm.show",
"group": "navigation@2"
},
{ {
"when": "editorLangId == verilog || editorLangId == systemverilog || editorLangId == vhdl", "when": "editorLangId == verilog || editorLangId == systemverilog || editorLangId == vhdl",
"command": "digital-ide.netlist.show", "command": "digital-ide.netlist.show",
@ -758,11 +753,6 @@
"command": "digital-ide.waveviewer.show", "command": "digital-ide.waveviewer.show",
"group": "navigation@7" "group": "navigation@7"
}, },
{
"when": "resourceLangId == verilog || resourceLangId == systemverilog || resourceLangId == vhdl",
"command": "digital-ide.fsm.show",
"group": "navigation@8"
},
{ {
"when": "resourceLangId == vhdl", "when": "resourceLangId == vhdl",
"command": "digital-ide.vhdl2vlog", "command": "digital-ide.vhdl2vlog",
@ -805,11 +795,6 @@
"command": "digital-ide.waveviewer.show", "command": "digital-ide.waveviewer.show",
"group": "navigation@10" "group": "navigation@10"
}, },
{
"when": "resourceLangId == verilog || resourceLangId == systemverilog || resourceLangId == vhdl",
"command": "digital-ide.fsm.show",
"group": "navigation@11"
},
{ {
"when": "resourceLangId == vhdl", "when": "resourceLangId == vhdl",
"command": "digital-ide.vhdl2vlog", "command": "digital-ide.vhdl2vlog",

View File

@ -1,10 +0,0 @@
import type * as vscode from 'vscode';
declare module FSM {
export class FsmViewer {
constructor(context: vscode.ExtensionContext);
public open(uri: vscode.Uri);
}
}
export = FSM;

View File

@ -1,217 +0,0 @@
/* eslint-disable @typescript-eslint/naming-convention */
const fs = require("fs");
const fspath = require("path");
const vscode = require("vscode");
const parse = require("./utils/fsm_parser");
function getLanguageId(path) {
let vhdlExtensions = [".vhd",".vhdl",".vho",".vht"];
let vlogExtensions = [".v",".V",".vh",".vl"];
let svlogExtensions = [".sv",".SV"];
let value = fspath.extname(path);
if (vlogExtensions.includes(value)) {
return 'verilog';
}
else if (svlogExtensions.includes(value)) {
return 'systemverilog';
}
else if (vhdlExtensions.includes(value)) {
return 'vhdl';
}
return null;
}
class FsmViewer {
/**
*
* @param {vscode.ExtensionContext} context
*/
constructor(context) {
this.panel = undefined;
this.sources = [];
this.context = context;
this.rootPath = context.extensionPath.replace(/\\/g, '/');
}
/**
* CN: 打开FSM图表的 webview 网页
* @param {*} uri 指定所需转换为图表的文件uri信息
*/
open(uri) {
this.current_uri = uri;
const docPath = uri.fsPath.replace(/\\/g, '/');
if (this.panel === undefined) {
this.create();
}
this.send(docPath);
}
async create() {
// Create panel
this.panel = vscode.window.createWebviewPanel(
'state_machine_viewer',
'State machine viewer',
vscode.ViewColumn.Two,
{
enableScripts: true
}
);
this.panel.onDidDispose(() => {
// When the panel is closed, cancel any future updates to the webview content
this.panel = undefined;
}, null, this.context.subscriptions);
// Handle messages from the webview
this.panel.webview.onDidReceiveMessage((message) => {
switch (message.command) {
case 'export':
this.export_as(message.text);
return;
case 'go_to_state':
this.go_to_state(message.stm_index, message.state);
return;
case 'go_to_condition':
this.go_to_condition(message.stm_index, message.transition, message.condition);
return;
}
}, undefined, this.context.subscriptions);
let previewHtml = this.getWebviewContent(this.context);
this.panel.webview.html = previewHtml;
}
async send(path) {
let languageId = getLanguageId(path);
let content = fs.readFileSync(path, "utf-8");
let state_machines = await parse(languageId, content);
this.state_machines = state_machines;
this.panel.webview.postMessage({
command: "update",
svg: state_machines.svg,
stms: state_machines.stm
});
}
go_to_state(stm_index, state) {
if (this.state_machines === undefined) {
return;
}
let states = this.state_machines.stm[stm_index].states;
let state_stm;
for (let i = 0; i < states.length; ++i) {
if (states[i].name.replace(/\"/g, '').replace(/\'/g, '') === state) {
state_stm = states[i];
}
}
if (state_stm !== undefined) {
let start_position = state_stm.start_position;
let end_position = state_stm.end_position;
let pos_1 = new vscode.Position(start_position[0], start_position[1]);
let pos_2 = new vscode.Position(end_position[0], end_position[1]);
vscode.workspace.openTextDocument(this.current_uri).then(doc => {
vscode.window.showTextDocument(doc, vscode.ViewColumn.One).then(editor => {
// Line added - by having a selection at the same position twice, the cursor jumps there
editor.selections = [new vscode.Selection(pos_1, pos_2)];
// And the visible range jumps there too
var range = new vscode.Range(pos_1, pos_2);
editor.revealRange(range);
});
});
}
}
go_to_condition(stm_index, transition, condition) {
let normalized_condition = this.normalize_string(condition);
let state_origen = transition[0];
let state_destination = transition[1];
if (this.state_machines === undefined) {
return;
}
let states = this.state_machines.stm[stm_index].states;
let transition_match;
//Search state
for (let i = 0; i < states.length; ++i) {
if (states[i].name.replace(/\"/g, '').replace(/\'/g, '') === state_origen) {
let transitions = states[i].transitions;
//Search condition
for (let j = 0; j < transitions.length; ++j) {
let normalized_condition_state = this.normalize_string(transitions[j].condition);
if (transitions[j].destination.replace(/\"/g, '').replace(/\'/g, '') === state_destination
&& normalized_condition_state === normalized_condition) {
transition_match = transitions[j];
}
}
}
}
if (transition_match !== undefined) {
if (transition_match.start_position === undefined || transition_match.end_position === undefined) {
return;
}
let start_position = transition_match.start_position;
let end_position = transition_match.end_position;
let pos_1 = new vscode.Position(start_position[0], start_position[1]);
let pos_2 = new vscode.Position(end_position[0], end_position[1]);
vscode.workspace.openTextDocument(this.current_uri).then(doc => {
vscode.window.showTextDocument(doc, vscode.ViewColumn.One).then(editor => {
// Line added - by having a selection at the same position twice, the cursor jumps there
editor.selections = [new vscode.Selection(pos_1, pos_2)];
// And the visible range jumps there too
var range = new vscode.Range(pos_1, pos_2);
editor.revealRange(range);
});
});
}
}
export_as(type) {
if (type === "svg") {
let filter = { 'svg': ['svg'] };
vscode.window.showSaveDialog({ filters: filter }).then(fileInfos => {
if ((fileInfos === null || fileInfos === void 0 ? void 0 : fileInfos.path) !== undefined) {
let path_full = this.normalize_path(fileInfos === null || fileInfos === void 0 ? void 0 : fileInfos.path);
let dir_name = fspath.dirname(path_full);
let file_name = fspath.basename(path_full).split('.')[0];
for (let i = 0; i < this.state_machines.svg.length; ++i) {
let custom_path = `${dir_name}${fspath.sep}${file_name}_${i}.svg`;
fs.writeFileSync(custom_path, this.state_machines.svg[i].svg);
}
vscode.window.showInformationMessage('Documentation has been saved.');
}
});
}
else {
console.log("Error export documentation.");
}
}
normalize_path(path) {
if (path[0] === '/' && require('os').platform() === 'win32') {
return path.substring(1);
}
else {
return path;
}
}
normalize_string(str) {
let n_string = str.replace(/[^ -~]+/g, '');
n_string = n_string.replace(/ /g, '');
n_string = n_string.replace(/\n/g, '');
return n_string;
}
getWebviewContent() {
const resource_path = fspath.join(this.rootPath, 'resources', 'fsm', 'view', 'fsm_viewer.html');
const dir_path = fspath.dirname(resource_path);
let html = fs.readFileSync(resource_path, 'utf-8');
html = html.replace(/(<link.+?href="|<script.+?src="|<img.+?src=")(.+?)"/g, (m, $1, $2) => {
const absLocalPath = fspath.resolve(dir_path, $2);
const webviewUri = this.panel.webview.asWebviewUri(vscode.Uri.file(absLocalPath));
const replaceHref = $1 + webviewUri.toString() + '"';
return replaceHref;
});
return html;
}
}
module.exports = {
FsmViewer
};

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,234 +0,0 @@
/* eslint-disable @typescript-eslint/naming-convention */
const vscode = acquireVsCodeApi();
// Handle the message inside the webview
window.addEventListener('message', event => {
const message = event.data; // The JSON data our extension sen
switch (message.command) {
case 'update':
update_graph(message.svg, message.stms);
break;
case 'clear':
clear();
break;
}
});
let graph = [];
let div = [];
let stms = [];
function update_graph(svgs, stms_i) {
stms = stms_i;
const el = document.querySelector('body');
// get scroll position in px
let last_scroll_left = el.scrollLeft;
let last_scroll_top = el.scrollTop;
let message = document.getElementById("message");
message.innerHTML = `#State machines ${svgs.length}`;
delete_graph();
if (svgs === undefined) {
return;
}
for (let i = 0; i < svgs.length; ++i) {
create_graph(svgs[i].svg, `svg_${i}`, i);
}
// set scroll position in px
el.scrollLeft = last_scroll_left;
el.scrollTop = last_scroll_top;
}
function create_graph(svg, name, index) {
let embed = document.createElementNS("http://www.w3.org/2000/svg", "svg");
embed.setAttribute('style', 'width: 100%; height: 720px;');
embed.setAttribute('type', 'image/svg+xml');
embed.innerHTML = svg;
embed.id = name;
//Add div
var elem = document.createElement('div');
elem.style.width = "100%";
elem.style.heigh = "500px";
elem.style.border = "1px solid black";
div.push(elem);
document.body.appendChild(elem);
//Add svg
elem.appendChild(embed);
let pan_zoom = svgPanZoom(`#${name}`, pan_config);
pan_zoom.center();
pan_zoom.resize();
let countries = embed.childNodes;
for (let i = 0; i < countries.length; i++) {
countries[i].addEventListener('click', e => {
let parent_target = e.target.parentNode;
let childs = parent_target.childNodes;
for (let i = 0; i < childs.length; ++i) {
let child = childs[i];
if (child.tagName === 'title') {
let state_name = child.textContent;
let state_machine_index_i = index;
for (let j = 0; j < childs.length; ++j) {
let child_0 = childs[j];
if (child_0.tagName === 'polygon' && check_state(state_machine_index_i, state_name) === true) {
uncheck_all();
child_0.style = "fill:#d0fdf7";
go_to_code_state(state_machine_index_i, state_name);
}
}
}
}
});
countries[i].addEventListener('click', e => {
let state_machine_index_i = index;
let parent_target = e.target.parentNode;
let childs = parent_target.childNodes;
for (let i = 0; i < childs.length; ++i) {
let child = childs[i];
let transtion = child.textContent.split('->');
if (child.tagName === 'title' && transtion.length === 2) {
let text_count = 0;
let condition = '';
let child_match;
let child_match_0;
for (let j = 0; j < childs.length; ++j) {
let child_0 = childs[j];
if (child_0.tagName === 'text') {
if (text_count === 0) {
condition = child_0.textContent;
}
else {
condition += '\n' + child_0.textContent;
}
text_count += 1;
}
else if (child_0.tagName === 'polygon') {
child_match = child_0;
}
else if (child_0.tagName === 'path') {
child_match_0 = child_0;
}
}
if (text_count >= 0) {
uncheck_all();
child_match.style = "fill:#0024b9;stroke:#0024b9";
child_match_0.style = "stroke:#0024b9";
go_to_condition(state_machine_index_i, transtion, condition);
}
}
}
});
}
graph.push(embed);
document.body.contentEditable = false;
}
function uncheck_all() {
for (let i = 0; i < graph.length; i++) {
search_in_tree(graph[i], 'polygon');
search_in_tree(graph[i], 'path');
}
}
function check_state(stm_index, state) {
let states = stms[stm_index].states;
for (let i = 0; i < states.length; ++i) {
if (states[i].name.replace(/\"/g, '').replace(/\'/g, '') === state) {
return true;
}
}
return false;
}
function search_in_tree(element, matchingTitle) {
let match = undefined;
function recursive_searchTree(element, matchingTitle) {
let type = element.tagName;
if (type === matchingTitle) {
if (element.style !== undefined && element.style.fill === 'rgb(208, 253, 247)') {
element.style = "fill:transparent";
}
else if (element.style !== undefined && element.style.fill === 'rgb(0, 36, 185)'
&& element.style.stroke === 'rgb(0, 36, 185)') {
element.style = "fill:#000000;stroke:#000000";
}
else if (element.style !== undefined && element.style.stroke === 'rgb(0, 36, 185)') {
element.style = "fill:none;stroke:#000000";
}
match = element;
} else if (element !== null) {
let i;
let result = null;
let childs = element.childNodes;
for (i = 0; result === null && i < childs.length; i++) {
result = recursive_searchTree(childs[i], matchingTitle);
if (result !== null) {
break;
}
}
return result;
}
return null;
}
recursive_searchTree(element, matchingTitle);
return match;
}
function go_to_code_state(stm_index, state) {
vscode.postMessage({
command: 'go_to_state',
stm_index: stm_index,
state: state
});
}
function go_to_condition(stm_index, transition, condition) {
vscode.postMessage({
command: 'go_to_condition',
stm_index: stm_index,
transition: transition,
condition: condition
});
}
function delete_graph() {
if (graph === undefined) {
return;
}
for (let i = 0; i < graph.length; ++i) {
svgPanZoom(graph[i]).destroy();
if (div[i].parentNode !== null) {
div[i].parentNode.removeChild(div[i]);
}
}
}
let pan_config = {
zoomEnabled: true,
controlIconsEnabled: true,
fit: true,
center: true,
};
document.getElementById("export-as-svg").onclick = () => {
export_message("svg");
};
function export_message(message) {
vscode.postMessage({
command: 'export',
text: message
});
}

View File

@ -1,38 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Dependencies viewer</title>
<script src="../../public/jquery-2.2.4.min.js"></script>
<script src="../../public/svg-pan-zoom.min.js"></script>
<script src="../../public/full.render.js"></script>
<script src="../../public/viz.js"></script>
<div id="svg" style="text-align: center;"></div>
<link rel="stylesheet" href="../../../css/fsm_viewer.css" type="text/css" />
</head>
<body>
<div class="toolbar">
<div class="center-panel">
<label class="fancy-checkbox">
<input id="export-as-svg" name="zoom-mode" type="radio" value="fit" />
<div class="button">Save as SVG</div>
</label>
</div>
</div>
<script src="./fsm_draw.js"></script>
<div id="error-info" class="trontron">
<div id="inner" class="fuck"></div>
</div>
<div class="config">
<p id="message"></p>
</div>
<div class="column">
<div id="container"></div>
</div>
</body>
</html>

View File

@ -1,13 +0,0 @@
@echo off
set production_folder=dist
@REM important static or config
if not exist %production_folder% (
mkdir %production_folder%
)
echo vsce package
call vsce package

View File

@ -1,10 +0,0 @@
const { vlogFast, callParser } = require('../../resources/hdlParser');
const testFile = 'c:/Users/11934/Project/Digital-IDE/Digital-Test/user/src/netlist_test.v';
(async () => {
const fast = await callParser(testFile, 5);
console.log(fast);
const all = await callParser(testFile, 6);
console.log(all);
})();

View File

@ -1,8 +0,0 @@
const { svAll } = require('../../resources/hdlParser');
const testFile = '../Digital-Test/svlog/user/src/hello.sv';
(async () => {
const all = await svAll(testFile);
(JSON.stringify(all, null, ' '));
})();

View File

@ -1,9 +0,0 @@
const { vhdlAll } = require('../../resources/hdlParser');
const testFile = '../Digital-Test/Verilog/dependence_test/test.vhd';
(async () => {
const all = await vhdlAll(testFile);
console.log(JSON.stringify(all, null, ' '));
console.log('number of symbols:', all.content.length);
})();

View File

@ -1,8 +0,0 @@
const { vhdlFast } = require('../../resources/hdlParser');
const testFile = '../Digital-Test/Verilog/dependence_test/test.vhd';
(async () => {
const fast = await vhdlFast(testFile);
console.log(JSON.stringify(fast, null, ' '));
})();

View File

@ -1,8 +0,0 @@
const { vlogAll } = require('../../resources/hdlParser');
const testFile = '../Digital-Test/user/src/child_2.v';
(async () => {
const all = await vlogAll(testFile);
console.log(JSON.stringify(all, null, ' '));
})();

View File

@ -1,8 +0,0 @@
const { vlogFast, callParser } = require('../../resources/hdlParser');
const testFile = '../Digital-Test/user/src/netlist_test.v';
(async () => {
const fast = await vlogFast(testFile);
console.log(JSON.stringify(fast, null, ' '));
})();

View File

@ -18,7 +18,6 @@ async function registerCommand(context: vscode.ExtensionContext, packageJson: an
func.registerTreeViewDataProvider(context); func.registerTreeViewDataProvider(context);
func.registerLsp(context, packageJson.version); func.registerLsp(context, packageJson.version);
func.registerToolCommands(context); func.registerToolCommands(context);
func.registerFSM(context);
func.registerNetlist(context); func.registerNetlist(context);
func.registerWaveViewer(context); func.registerWaveViewer(context);

View File

@ -1,10 +1,7 @@
import * as vscode from 'vscode'; import * as vscode from 'vscode';
import { FsmViewer } from '../../../resources/fsm';
async function openFsmViewer(context: vscode.ExtensionContext, uri: vscode.Uri) { async function openFsmViewer(context: vscode.ExtensionContext, uri: vscode.Uri) {
const viewer = new FsmViewer(context);
viewer.open(uri);
} }
export { export {