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 不要同时写同一个构建目录。需要并行或跨环境构建时使用独立输出目录。
工作区规则
保持项目相对路径不变:
D:\develop\Virtual Machines\Project\<relative_project_path>
↕
/mnt/hgfs/Project/<relative_project_path>
文件查找、查看和编辑优先在 Windows 侧完成;只有命令确实依赖 EDA/Linux 环境时才通过 SSH 执行。VM 产物应写回对应共享项目目录,避免维护两份权威副本。
先确认工作目录和输入存在,再运行工具:
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 路径和许可证变量。环境异常时检查:
ssh vmhw "bash -lc 'command -v <eda-command>; printenv SNPSLMD_LICENSE_FILE; printenv LM_LICENSE_FILE'"
不要默认安装、升级或替换 EDA 软件,也不要改写全局环境脚本。
长任务与结果观察
需要脱离 SSH 运行时,关闭标准输入并将输出写入任务专属日志:
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 原生文件系统:
ssh vmhw "mkdir -p ~/temp/<project_name>; cp -a /mnt/hgfs/Project/<relative_project_path>/. ~/temp/<project_name>/"
完成后仅把需要保留的修改和成果复制回共享项目。若共享目录整体未挂载或不可写,才回退到 SCP;连接该旧主机时使用 Legacy SCP:
scp -O <local_file> vmhw:~/temp/<project_name>/
scp -O vmhw:~/temp/<project_name>/<remote_file> .
GUI 与 DISPLAY
只有用户明确要求打开 EDA GUI 时才启动图形程序。先探测桌面会话和 X socket,不假定显示编号:
ssh vmhw "who; ls -la /tmp/.X11-unix"
使用探测到的显示编号后台启动,并同时检查进程、窗口树和日志:
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 本地目录。