# Vmhw

> Invoke commercial and licensed hardware EDA tools on the dedicated `vmhw` virtual machine. Use for legacy EDA environments, hardware simulation, synthesis, implementation, signoff, waveform/debug GUI work, and related runs that require the installed CentOS toolchain; use `vmsw` for modern general-purpose Linux software work.

- Skill: `mhliulgy/vmhw` (Agent Skill)
- Install (CLI): `npx skillmds@latest add mhliulgy/vmhw`
- Raw SKILL.md: https://api.skillmd.com/api/skills/mhliulgy/vmhw/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: mhliulgy (https://skillmd.com/u/mhliulgy)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/mhliulgy/vmhw

---


# Hardware EDA VM

使用 `ssh vmhw` 调用专用硬件 EDA 环境。此 Skill 负责选择该主机、准备运行环境、执行和观察 EDA 工具；具体项目的仿真、综合、布局布线或签核方法仍以用户要求和项目脚本为准。

## 固定环境

| 项目 | 信息 |
| :--- | :--- |
| SSH 别名 | `vmhw` |
| 系统 | CentOS 6.10，Linux 2.6.32，x86_64 |
| 用户与主目录 | `crazy`，`/home/crazy` |
| EDA 环境入口 | `/opt/skel/tools_env/bashrc` |
| 权威工作区 | Windows：`D:\develop\Virtual Machines\Project`；VM：`/mnt/hgfs/Project` |
| VM 本地备用区 | `~/temp/` |
| 共享临时目录 | `/mnt/hgfs/Project/temp` |

已验证的工具包括 VCS、Verdi、Design Compiler、ICC2、Innovus、Genus 和 Questa/ModelSim。安装版本较旧且可能变化；每次任务以登录 Shell 中的 `command -v` 和工具版本输出为准，不要只依赖此清单。

## 主机路由

- 商业或授权 EDA、依赖 `/opt` 中既有工具链、需要复现实验室旧版本行为的硬件任务使用 `vmhw`。
- 通用编译、Python、Git、现代 Linux 工具、软件依赖处理，以及适合 Icarus Verilog 或 Verilator 的开源辅助任务使用 `vmsw`。
- 混合任务可在 `vmsw` 做生成、编译或数据处理，在 `vmhw` 跑专用 EDA 阶段。两边通过共享 `Project` 交接。
- 不要因为某个工具在 `vmhw` 缺失或过旧，就静默改用 `vmsw` 上名称相近的工具；版本和实现可能改变结果。说明差异后再按用户意图切换。
- 两台 VM 不要同时写同一个构建目录。需要并行或跨环境构建时使用独立输出目录。

## 工作区规则

保持项目相对路径不变：

```text
D:\develop\Virtual Machines\Project\<relative_project_path>
                              ↕
/mnt/hgfs/Project/<relative_project_path>
```

文件查找、查看和编辑优先在 Windows 侧完成；只有命令确实依赖 EDA/Linux 环境时才通过 SSH 执行。VM 产物应写回对应共享项目目录，避免维护两份权威副本。

先确认工作目录和输入存在，再运行工具：

```powershell
ssh -o BatchMode=yes vmhw "whoami; hostname; test -r /mnt/hgfs/Project/<relative_project_path>"
ssh -o BatchMode=yes vmhw "bash -lc 'cd /mnt/hgfs/Project/<relative_project_path> && command -v <eda-command> && <eda-command> <arguments>'"
```

登录 Shell 用于加载 EDA 路径和许可证变量。环境异常时检查：

```powershell
ssh vmhw "bash -lc 'command -v <eda-command>; printenv SNPSLMD_LICENSE_FILE; printenv LM_LICENSE_FILE'"
```

不要默认安装、升级或替换 EDA 软件，也不要改写全局环境脚本。

## 长任务与结果观察

需要脱离 SSH 运行时，关闭标准输入并将输出写入任务专属日志：

```powershell
ssh vmhw "bash -lc 'cd /mnt/hgfs/Project/<relative_project_path> && nohup <command> > run.log 2>&1 < /dev/null &'"
ssh vmhw "pgrep -fl '<process-pattern>'; tail -n 60 /mnt/hgfs/Project/<relative_project_path>/run.log"
```

判断完成状态时同时查看退出标记、预期产物和日志错误；仅有进程消失或产物文件存在都不足以证明成功。CentOS 6 的 `pgrep` 不支持部分新参数，使用 `pgrep -fl`。

## 共享挂载的例外

只有工具明确受共享文件系统的权限、符号链接、文件锁或 I/O 性能影响时，才复制到 VM 原生文件系统：

```powershell
ssh vmhw "mkdir -p ~/temp/<project_name>; cp -a /mnt/hgfs/Project/<relative_project_path>/. ~/temp/<project_name>/"
```

完成后仅把需要保留的修改和成果复制回共享项目。若共享目录整体未挂载或不可写，才回退到 SCP；连接该旧主机时使用 Legacy SCP：

```powershell
scp -O <local_file> vmhw:~/temp/<project_name>/
scp -O vmhw:~/temp/<project_name>/<remote_file> .
```

## GUI 与 DISPLAY

只有用户明确要求打开 EDA GUI 时才启动图形程序。先探测桌面会话和 X socket，不假定显示编号：

```powershell
ssh vmhw "who; ls -la /tmp/.X11-unix"
```

使用探测到的显示编号后台启动，并同时检查进程、窗口树和日志：

```powershell
ssh vmhw "DISPLAY=:0 nohup <gui-command> > /mnt/hgfs/Project/temp/<gui-name>.log 2>&1 < /dev/null &"
ssh vmhw "pgrep -fl '<process-pattern>'; DISPLAY=:0 xwininfo -root -tree; tail -n 60 /mnt/hgfs/Project/temp/<gui-name>.log"
```

若要求显示到 Windows，可使用 `ssh -X vmhw <gui-command>`，但本机必须已有 X Server。不要仅凭进程存活断言窗口已打开。

## 旧系统兼容与安全

- CentOS 6 没有 `systemctl`，使用 `service`；避免假设现代 GNU/Linux 选项存在。
- `command not found` 或许可证变量缺失时，先确认使用了 `bash -lc`，再检查环境入口和许可证状态。
- `Could not resolve hostname vmhw` 若只出现在受限执行环境，应按权限机制重试，不擅自修改用户的 SSH 配置。
- 默认先做只读探测。删除或覆盖成果、终止非本任务进程、修改许可证或系统配置前，必须确认明确目标和授权。
- 除非用户明确要求，不清理共享工作区或 VM 本地目录。


