feat:接入iverilog工具

- 将iverilog可以随着插件的下载而下载
- 用户输入自然语言就可以控制生成对应的VCD文件
This commit is contained in:
Roe-xin
2025-12-15 11:09:03 +08:00
parent 94225a3525
commit 22b9a0ed13
71 changed files with 2020 additions and 87 deletions

View File

@ -0,0 +1,136 @@
# Iverilog 文件自动复制脚本
# 用于将已安装的 iverilog 复制到插件目录
param(
[string]$IverilogPath = "C:\iverilog"
)
# 设置插件工具路径
$PluginPath = Split-Path -Parent $PSScriptRoot
$ToolsPath = Join-Path $PSScriptRoot ""
Write-Host "=====================================" -ForegroundColor Cyan
Write-Host "Iverilog 文件复制脚本" -ForegroundColor Cyan
Write-Host "=====================================" -ForegroundColor Cyan
Write-Host ""
# 检查源路径是否存在
if (-not (Test-Path $IverilogPath)) {
Write-Host "错误: 找不到 iverilog 安装目录: $IverilogPath" -ForegroundColor Red
Write-Host ""
Write-Host "请指定正确的 iverilog 安装路径,例如:" -ForegroundColor Yellow
Write-Host " .\copy-iverilog.ps1 -IverilogPath 'C:\Program Files\iverilog'" -ForegroundColor Yellow
Write-Host ""
# 尝试查找常见安装位置
$CommonPaths = @(
"C:\iverilog",
"C:\Program Files\iverilog",
"C:\Program Files (x86)\iverilog",
"$env:LOCALAPPDATA\iverilog"
)
Write-Host "正在搜索常见安装位置..." -ForegroundColor Yellow
foreach ($path in $CommonPaths) {
if (Test-Path $path) {
Write-Host "找到: $path" -ForegroundColor Green
$IverilogPath = $path
break
}
}
if (-not (Test-Path $IverilogPath)) {
Write-Host "未找到 iverilog 安装目录" -ForegroundColor Red
exit 1
}
}
Write-Host "源路径: $IverilogPath" -ForegroundColor Green
Write-Host "目标路径: $ToolsPath" -ForegroundColor Green
Write-Host ""
# 创建目标目录
Write-Host "创建目录结构..." -ForegroundColor Cyan
New-Item -ItemType Directory -Force -Path "$ToolsPath\bin" | Out-Null
New-Item -ItemType Directory -Force -Path "$ToolsPath\lib" | Out-Null
# 复制可执行文件
Write-Host "复制可执行文件..." -ForegroundColor Cyan
$executables = @("iverilog.exe", "vvp.exe")
foreach ($exe in $executables) {
$sourcePath = Join-Path "$IverilogPath\bin" $exe
if (Test-Path $sourcePath) {
Copy-Item $sourcePath "$ToolsPath\bin\" -Force
Write-Host "$exe" -ForegroundColor Green
} else {
Write-Host " ✗ 未找到 $exe" -ForegroundColor Red
}
}
# 复制 DLL 文件
Write-Host "复制 DLL 文件..." -ForegroundColor Cyan
$dlls = Get-ChildItem "$IverilogPath\bin\*.dll" -ErrorAction SilentlyContinue
if ($dlls) {
foreach ($dll in $dlls) {
Copy-Item $dll.FullName "$ToolsPath\bin\" -Force
Write-Host "$($dll.Name)" -ForegroundColor Green
}
} else {
Write-Host " ! 未找到 DLL 文件" -ForegroundColor Yellow
}
# 复制库文件
Write-Host "复制库文件..." -ForegroundColor Cyan
$libPath = Join-Path $IverilogPath "lib"
if (Test-Path $libPath) {
Copy-Item "$libPath\*" "$ToolsPath\lib\" -Recurse -Force
# 统计复制的文件
$vpiFiles = Get-ChildItem "$ToolsPath\lib\ivl\*.vpi" -ErrorAction SilentlyContinue
$vplFiles = Get-ChildItem "$ToolsPath\lib\ivl\*.vpl" -ErrorAction SilentlyContinue
Write-Host " ✓ 复制了 $($vpiFiles.Count) 个 .vpi 文件" -ForegroundColor Green
Write-Host " ✓ 复制了 $($vplFiles.Count) 个 .vpl 文件" -ForegroundColor Green
} else {
Write-Host " ✗ 未找到 lib 目录" -ForegroundColor Red
}
Write-Host ""
Write-Host "=====================================" -ForegroundColor Cyan
Write-Host "验证安装..." -ForegroundColor Cyan
Write-Host "=====================================" -ForegroundColor Cyan
# 验证 iverilog
$iverilogExe = Join-Path "$ToolsPath\bin" "iverilog.exe"
if (Test-Path $iverilogExe) {
Write-Host ""
Write-Host "运行 iverilog -V:" -ForegroundColor Yellow
& $iverilogExe -V
Write-Host ""
} else {
Write-Host "错误: iverilog.exe 未找到" -ForegroundColor Red
}
# 显示文件大小统计
Write-Host "=====================================" -ForegroundColor Cyan
Write-Host "文件大小统计" -ForegroundColor Cyan
Write-Host "=====================================" -ForegroundColor Cyan
$binSize = (Get-ChildItem "$ToolsPath\bin" -Recurse -File | Measure-Object -Property Length -Sum).Sum
$libSize = (Get-ChildItem "$ToolsPath\lib" -Recurse -File -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum).Sum
$totalSize = $binSize + $libSize
Write-Host "bin/ 目录: $([math]::Round($binSize / 1MB, 2)) MB" -ForegroundColor Green
Write-Host "lib/ 目录: $([math]::Round($libSize / 1MB, 2)) MB" -ForegroundColor Green
Write-Host "总计: $([math]::Round($totalSize / 1MB, 2)) MB" -ForegroundColor Cyan
Write-Host ""
Write-Host "=====================================" -ForegroundColor Cyan
Write-Host "复制完成!" -ForegroundColor Green
Write-Host "=====================================" -ForegroundColor Cyan
Write-Host ""
Write-Host "现在可以使用插件的 VCD 生成功能了。" -ForegroundColor Green
Write-Host ""