SPICE シミュレーションで使うUNIX/Linux コマンドの使い方

##  はじめに

> 本記事では、**回路シミュレーションに役立つ UNIX/Linux コマンドの使い方**について解説します。特に、**Cadence Virtuoso の SPICE シミュレーション環境**での活用を想定し、便利な基本コマンドやコマンドの組み合わせ方法についてまとめました。  
>  
> Virtuoso 上で SPICE シミュレーションを行う際、ターミナル操作やスクリプト処理を効率的に行うためには、UNIX/Linux の基本操作に慣れておくことが重要です。



###  UNIX/Linux 基本・便利コマンド＋コマンド区切りまとめ表

| コマンド・記号     | 機能・動作                                                       | 使用例                                                       | 解説                                                                 |
|--------------------|------------------------------------------------------------------|--------------------------------------------------------------|----------------------------------------------------------------------|
| `cd`               | ディレクトリを移動する                                           | `cd /home/user`                                              | カレントディレクトリを `/home/user` に変更                         |
| `ls`               | ディレクトリの内容を表示                                         | `ls -l`                                                      | `-l` で詳細情報表示（ファイルサイズ・更新日時など）               |
| `pwd`              | 現在のディレクトリのパスを表示                                   | `pwd`                                                        | "print working directory" の略                                      |
| `mkdir`            | 新しいディレクトリを作成                                         | `mkdir new_folder`                                           | `new_folder` という名前のディレクトリを作成                        |
| `rm`               | ファイルやディレクトリを削除                                     | `rm file.txt`                                                | `-r` を使うと再帰的削除：`rm -r folder`                            |
| `cp`               | ファイルやディレクトリをコピー                                   | `cp file1.txt file2.txt`                                     | `-r` を使うとディレクトリもコピー可能                              |
| `mv`               | ファイルやディレクトリを移動・名前変更                           | `mv old.txt new.txt`                                         | 名前変更としても使える                                              |
| `cat`              | ファイルの中身を表示                                             | `cat file.txt`                                               | 複数ファイルをつなげることも可能：`cat file1 file2 > all.txt`     |
| `touch`            | 空のファイルを作成、またはファイルの更新日時を変更               | `touch new.txt`                                              | 空のテキストファイルをすばやく作成可能                             |
| `echo`             | 文字列を表示（またはファイルに書き込み）                         | `echo "Hello" > hello.txt`                                   | `"Hello"` を `hello.txt` に書き込む                                 |
| `man`              | コマンドのマニュアルを表示                                       | `man ls`                                                     | `ls` コマンドの詳細な使い方が読める                                 |
| `clear`            | 画面をクリア                                                     | `clear`                                                      | ターミナル画面をスッキリさせる                                      |
| `top`              | 現在のプロセスとCPUメモリ使用率を表示                             | `top`                                                        | リアルタイムで動作確認可能                                          |
| `history`          | 実行したコマンド履歴を表示                                       | `history`                                                    | `!123` で過去のコマンドを再実行可能                                 |
| `grep`             | 文字列検索                                                       | `grep "pattern" file.txt`                                    | `pattern` を含む行を検索                                             |
| `find`             | ファイルを検索                                                   | `find . -name "*.txt"`                                       | カレントディレクトリ以下の `.txt` ファイルを検索                    |

---

###  コマンドの区切り記号まとめ

| 区切り記号 | 動作                                                | 使用例                                              | 解説                                               |
|------------|-----------------------------------------------------|-----------------------------------------------------|----------------------------------------------------|
| `;`        | 常に実行                                            | `cd /tmp ; ls`                                     | 順にすべて実行                                     |
| `&&`       | 前のコマンドが成功した場合のみ実行                 | `cd /tmp && ls`                                    | 途中で失敗すると後続は実行されない               |
| `||`       | 前のコマンドが失敗した場合のみ実行                 | `cd /tmp || echo "Failed to change dir"`           | `cd` に失敗した場合だけ `echo` が実行される      |
| `&`        | バックグラウンド実行                                | `sleep 10 &`                                       | `sleep` を裏で実行し、プロンプトにすぐ戻る       |
| `&& ... || ...` | 成功したらA、失敗したらBを実行                | `make && echo OK || echo FAIL`                     | 条件分岐として便利                                 |





##  補足基本の定義

- **シェル**とは：  
  ターミナルで使うコマンド入力環境（`bash`, `zsh`, `sh` など）

- **シェルスクリプト**とは：  
  複数のシェルコマンドを **ファイルに記述し、一括して実行する仕組み**  
  → 人が毎回手で打たなくても、決まった処理を自動化できる！





###  コマンドの具体例




```bash
ls ; cd spice_sim_run ; ls ; virtuoso &
```

---

###  コマンド分解と説明

| コマンド部分                  | 説明 |
|-------------------------------|------|
| `ls`                          | 現在の作業ディレクトリの中身を表示（`spice_sim_run/` など） |
| `cd spice_sim_run`            | SPICEシミュレーション用ディレクトリに移動 |
| `ls`                          | 中にあるファイル（例：`netlist.sp`, `run.ocn`）を確認 |
| `virtuoso &`                  | Cadence Virtuoso を**バックグラウンド**で起動（GUIツール）<br>`&` によりターミナルはすぐに戻る |

---

###  構成例

```
~/cadence_workspace/
├── spice_sim_run/
│   ├── netlist.sp
│   ├── run.ocn
│   ├── test_results/
│   └── schematic.scs
```


##  Cadence Virtuoso UNIX/Linux コマンドの使い方具体例（ダミーデータで）



### ① ホームディレクトリの中身を確認  
```bash
[user@circuitlab ~]$ ls
```
 現在のディレクトリ（`~` = ホーム）にあるファイルやディレクトリの一覧を表示。

 代表的な中身とその予想される内容：

| ファイル/ディレクトリ名     | 内容の予想 |
|--------------------------|------------|
| `sar_adc_project`        | 逐次比較型ADC（SAR ADC）の設計プロジェクト |
| `cmos_library`           | CMOSセルや回路ブロック |
| `design_flow.log`        | Cadenceツールの作業ログ |
| `sim_output_data`        | シミュレーション結果の保存先 |
| `backup_designs.zip`     | 回路設計のバックアップアーカイブ |

---

### ② SAR ADC プロジェクトディレクトリへ移動  
```bash
[user@circuitlab ~]$ cd sar_adc_project
```
 `sar_adc_project` に移動  
 SAR ADC設計に必要な回路、シミュレーション、レイアウトデータなどが格納されています。

---

### ③ ディレクトリの中身を表示  
```bash
[user@circuitlab ~/sar_adc_project]$ ls
```

 主なファイルと役割（推定）：

| ファイル/ディレクトリ名         | 内容の予想 |
|------------------------------|------------|
| `sim_sar_adc_results.csv`     | SAR ADC のシミュレーション結果 |
| `opamp_core.sp`               | SPICE形式のオペアンプ設計ファイル |
| `opamp_lvs_report.txt`        | 回路とレイアウトの整合性検証（LVS）結果 |
| `top_level_layout.gds`        | GDSII形式のトップレベルレイアウト |
| `cds_project.lib`             | Cadenceのライブラリ設定ファイル |
| `cad_tool_log.log`            | Cadence関連ツールの操作ログ |
| `sar_core_blocks`             | SAR ADCの構成要素（コンパレータ、ロジック等） |
| `sar_adc_backup.tar.xz`       | 設計アーカイブ（再利用・配布用） |

---

### ④ Cadence Virtuoso を起動  
```bash
[user@circuitlab ~/sar_adc_project]$ virtuoso &
```

---


おまけ
以下に、**Cadence Virtuoso**（ケイデンス・ヴィルトゥオーソ）の**代表的なショートカットキー**を**マークダウン形式の表**でまとめました。カスタマイズされていないデフォルト設定を基にしています（Linuxベースの操作）。

---

## おまけ Cadence Virtuoso ショートカットキー一覧（レイアウト／スケマティック共通）

| キー            | 動作内容（日本語）                  | 内容（English）                     |
|------------------|--------------------------------------|--------------------------------------|
| **i**            | インスタンス配置                     | Add Instance                         |
| **w**            | 配線（ワイヤ）                       | Add Wire (Net)                       |
| **m**            | 移動（Move）                          | Move Object                          |
| **c**            | 複製（Copy）                          | Copy Object                          |
| **d**            | 削除（Delete）                        | Delete Object                        |
| **q**            | プロパティ編集                        | Edit Properties                      |
| **r**            | 回転（Rotate）                        | Rotate Object                        |
| **x**            | 拡大（Zoom In）                       | Zoom In                              |
| **z**            | 全体表示（Zoom Fit）                  | Zoom to Fit                          |
| **f**            | 選択範囲にズーム                      | Zoom to Selected Area                |
| **u**            | 取り消し（Undo）                      | Undo                                 |
| **Ctrl + r**     | やり直し（Redo）                      | Redo                                 |
| **l**            | 線・ラベルの追加                      | Add Label or Wire Name               |
| **s**            | 選択モード切替（シングル/複数）       | Toggle Selection Mode                |
| **t**            | テキスト追加                          | Add Text                             |
| **e**            | スナップを回転                        | Toggle Pin or Orientation            |
| **k**            | キャンバスのリフレッシュ              | Redraw Display                       |
| **Ctrl + p**     | 印刷ダイアログ                        | Print                                |
| **Ctrl + s**     | セーブ                                | Save                                 |
| **Ctrl + q**     | セッション終了                        | Quit Virtuoso                        |

---