137 lines
4.9 KiB
PowerShell
137 lines
4.9 KiB
PowerShell
# 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 ""
|