LTspiceの階層ブロックモデル
<!-- markdown-mode-on -->
了解しました。LTspiceにおける**階層ブロック(Hierarchical Block)**の仕組みを、構造・動作・要件に分けて明確に説明します。
---
## 🧩 LTspiceの階層ブロックとは
階層ブロックとは、**別の `.asc` ファイルを1つの部品として使う方法**です。これにより、複雑な回路を部品化して再利用できます。これは `.subckt` を使ったテキストベースのサブサーキット定義とは異なり、**回路図ベースで構造化**する方法です。
---
## 📁 ファイル構成と命名規則
階層ブロックを使うには、以下の2つのファイルを**同じフォルダ**に置きます:
| ファイル | 役割 |
|---------|------|
| `sfh213.asc` | 階層ブロックの中身(回路図) |
| `sfh213.asy` | 階層ブロックのシンボル(親回路で使う) |
**ファイル名は拡張子を除いて一致している必要があります。**
例:`sfh213.asc` ⇔ `sfh213.asy`
---
## 🔌 ピン定義のルール
### 1. `.asy` ファイルのピン名
- シンボルファイル(`sfh213.asy`)にはピンが定義されている
- 例:`IN`, `OUT`, `GND`
### 2. `.asc` ファイルのノード名
- 回路図ファイル(`sfh213.asc`)のトップレベルで、**ピン名と一致するノード名**が必要
- つまり、`IN` というピンがあるなら、`IN` というノードが `.asc` 内に存在しなければならない
---
## 🛠 使用方法
1. 親回路図(例:`main.asc`)を開く
2. `Edit > Component` で `sfh213.asy` を選択
3. 回路図上に配置すると、LTspiceは自動的に `sfh213.asc` を読み込み、部品として扱う
---
## ⚠️ よくあるエラーと対処
| エラー内容 | 原因 | 対処 |
|------------|------|------|
| `Unknown subcircuit called in: xd1 ... sfh213` | LTspiceが `sfh213.asc` を見つけられない、または `.asy` が正しく定義されていない | ファイル名の一致、ピン名の一致、フォルダ配置を確認 |
| ピンが接続されない | `.asy` のピン名と `.asc` のノード名が不一致 | 両者の名前を完全一致させる(大文字小文字含む) |
| シンボルが表示されない | `.asy` ファイルが壊れているか、パスが通っていない | `Edit > Component` で手動選択、または再作成 |
---
## 🧪 検証方法
1. `sfh213.asy` を開いてピン名を確認
2. `sfh213.asc` を開いて、対応するノードが存在するか確認
3. 親回路図で `sfh213.asy` を配置し、シミュレーションが通るか確認
---
必要であれば、`.asy` の構造や `.asc` のノード定義を一緒にレビューできます。どちらかのファイル内容を貼っていただければ、具体的に検証します。
非常に鋭い指摘です。LTspiceで**階層ブロック(`.asc` + `.asy`)**を使う場合、**`Prefix` や `SpiceModel` の設定はどうなるのか?**という点を明確に整理します。
---
## ✅ 結論:階層ブロックには `Prefix` や `SpiceModel` は不要
LTspiceの**階層ブロック方式**では、以下のような設定は**不要**です:
| 設定項目 | 階層ブロックでの必要性 |
|----------|------------------------|
| `Prefix` | 不要(空欄でよい) |
| `SpiceModel` | 不要(空欄でよい) |
| `.subckt` 定義 | 不要(`.asc` がその代わり) |
---
## 🔍 理由と動作原理
### 1. `Prefix` の役割
通常のシンボル(例:MOSFET, ダイオードなど)では、`Prefix` に `X`, `M`, `D` などを指定し、SPICEネットリストでの部品種別を決定します。
しかし、**階層ブロックでは LTspice が自動的に `X` を割り当てる**ため、`Prefix` を空欄にしておくのが正しい。
### 2. `SpiceModel` の役割
これは通常、`.model` や `.subckt` を参照するために使いますが、**階層ブロックでは `.asy` のファイル名がそのままモデル名として使われる**ため、`SpiceModel` も空欄でOK。
---
## 🧪 正しい `.asy` 設定例(階層ブロック用)
| 項目 | 設定値 |
|------|--------|
| Prefix | (空欄) |
| SpiceModel | (空欄) |
| Value | `sfh213`(任意、表示用) |
| Pins | `IN`, `OUT`, `GND` など、`.asc` のノードと一致させる |
---
## 📌 注意点
- `.asy` のファイル名(拡張子除く)が `.asc` のファイル名と一致している必要があります
- `.asc` の中で、ピン名と一致するノードがトップレベルに存在している必要があります
- `.asy` の `Prefix` や `SpiceModel` を誤って設定すると、LTspiceが `.asc` を読み込まず、`Unknown subcircuit` エラーになります
---
必要であれば、`.asy` ファイルの中身を貼っていただければ、設定をレビューできます。階層ブロックとして成立しているか、構造的に確認可能です。