コラボレーション
アート
美容とウェルネス
工芸
文化と歴史
エンターテインメント
環境
食品と飲料
リバースエンジニアリング
科学
スポーツ
テクノロジー
ウェアラブル

English
Youblob (simulation output) · CC0
オンチップSRAM:チップ自身のメモリに保存された呼吸する光
wafer.spaceのテンプレートには、そのサンプル設計に512バイトのマクロが2つ含まれており、どちらも無効のままになっています。マクロとは、PDKの完成済みのメモリブロックのことで、4,096個のスタティックメモリセルからなり、アドレスデコーダと読み出し回路を含めて一度に設計されたものを、ゲートから組み立てる代わりに丸ごと配置できます。
この段階では、そのうちの1つを有効にします。前の段階のPWMディマーは、ここでパターンを再生するようになります。マイクロコントローラがパッドを通じて256バイトをチップに一度書き込むと、以降はチップが自ら一度に1バイトずつそれらを読み出し、ゆっくり呼吸するように明るさを変化させる光の輝度として出力します。
このブループリント用に、コアとそのテストベンチは、Icarus Verilog 12.0、cocotb 2.1.0、およびPDKが提供するSRAMマクロ自身のシミュレーションモデルを用いて実行されました。出力は、保存されたテーブルに従い、600PWM周期にわたって追従しました。図は、そのシミュレーション自身の出力であり、1周期につき1本のバーで示しています。テーブルを読み込むESP32スケッチは、このブループリント用にコンパイル済みですが、実行できる実チップはまだありません。
上級者
ある夜、そしてチップ
手順
1
1
パターン、タイミング、サイズ
パターン、タイミング、サイズ
Jupyter ノートブックを読み込み中…
2
2
4,096ビットそれぞれが何であるか
4,096ビットそれぞれが何であるか
埋め込まれた設計図は、1ビットのスタティックメモリが二つのインバータのループによって自身の状態を保持する仕組みを示しています。このラング(段)のマクロは、1つのアレイに配置された4,096ビットのスタティックメモリです。
3
3
マクロのピンと、そのモデルが示す3つのこと
マクロのピンと、そのモデルが示す3つのこと
gf180mcu_fd_ip_sram__sram512x8m8wm1 は512バイトを保持します。そのピンは次のとおりです: CLK; A は9ビットのアドレス; D は書き込むバイト; Q は読み出されたバイト。3つの制御信号はすべてアクティブLOWです。CEN が0のとき、メモリの電源が入ります。GWEN が0のとき、クロックエッジは書き込みになり、1のときは読み出しになります。WEN はデータビットごとに1ビットあり、0のとき対応するビットの書き込みが許可されるため、書き込みではバイトの一部のビットだけを変更し、残りはそのままにできます。
PDK のシミュレーションモデルを読むと、知っておく価値のある3つのことがわかります。第一に、メモリは CEN が1から0に変化した後にのみ動作します。そうでない場合、モデルは "CEN is not reset, memory is not operational" と表示するため、コアはリセット中 CEN を1に保持し、その後に下げます。第二に、読み出しは A をサンプリングしたクロックエッジの直後に mem[A] を Q に出力するため、データは1クロック後に準備完了になります。第三に、モデルはすべてのバイトが0の状態で始まります。実際のチップはそうではなく、その SRAM は電源投入時に各セルが落ち着いた値を保持するため、設計は読み出す前に必ず書き込まなければなりません。
テンプレートの例では CEN を1に接続しているため、2つのマクロは無効化された状態です。そのタイミングファイルでは、マクロの最小クロック周期は標準的な5 Vコーナーで6.6 ns、低速な3.0 V・125 °Cコーナーで18.3 nsとされており、どちらもテンプレートの40 nsに十分収まっています。
4
4
The core
The core
src/chip_core.sv for the pattern player, with the template's port list unchanged plus one parameter, HOLD_LOG2. Input pad 0 enables, pad 1 selects LOAD mode, pad 2 is the write strobe; bidirectional pads 0 to 7 carry the byte, pad 8 the PWM. The LOAD and strobe pads are passed through two flip-flops before use, a synchroniser: they change whenever the outside world likes, not in step with the chip's clock, and a flip-flop caught mid-change can hover between 0 and 1 for a while. In play mode, each time HOLD_LOG2 periods have passed, the byte the SRAM has been reading becomes the new duty and the address moves on.
chip_core.svsystemverilog
必要な工具:
デスクトップパソコン5
5
The test
The test
test_pattern.py builds the core with the PDK's SRAM model, gf180mcu_fd_ip_sram__sram512x8m8wm1.v, at the template's 25 MHz and with HOLD_LOG2 = 0 so the whole table plays in 256 periods. It loads the table through the pads the way the ESP32 will, then counts the high clocks in each of 600 PWM periods and requires them to follow the table from exactly one starting point. A second test loads again and checks the new pattern replaced the old.
test_pattern.pypython
必要な工具:
デスクトップパソコン6
6
シミュレーションの出力内容
シミュレーションの出力内容
このブループリントを Icarus Verilog 12.0 と cocotb 2.1.0 で実行した結果:
-------- MESSAGE: CEN はリセット直後、メモリは動作中 ---------
test_pattern.test_plays_the_table PASS (600 周期、テーブルは正確に 1 つのオフセットで整列)
test_pattern.test_reload PASS
TESTS=2 PASS=2 FAIL=0 SKIP=0
テストが失敗しうることを確認するため、WEN を 8'b0 から 8'hFF に変更しました。これはアクティブローのピンでよくある取り違えで、すべてのビットがマスクされ、何も書き込まれず、テーブルはゼロで埋まります。両方のテストが失敗し、その後コアは元に戻されました。
1 行目は SRAM モデル自身のメッセージです。モデルが要求するとおり、コアはリセット後に CEN を下げました。
7
7
Load it from an ESP32
Load it from an ESP32
Once the chip is on its breakout board, this sketch writes the table. Eight GPIOs carry the byte, three more drive LOAD, the strobe and enable, and an LED with a 330 ohm resistor from pad 8 to ground shows the breath. Each level is held for 1 microsecond, 25 of the chip's clocks, so the synchroniser always sees it. The sketch then does nothing: the pattern lives in the chip. It is lost when the chip loses power, so send r over serial to load it again.
The ESP32 is a 3.3 V part and its inputs are not 5 V tolerant. The sketch only drives the chip and never reads from it. The template's default libraries are the 5 V ones; before you connect, check in the I/O library's documentation that 3.3 V is a valid logic high for your chip's inputs, or build with the 3.3 V libraries, as the template's README shows. The sketch compiles for the ESP32 with the Arduino ESP32 core 3.3.12; it has not been run, because the chip does not exist yet.
load_pattern.inocpp
このステップの材料:
カスタム ASIC ダイ1 個
プリント基板1 個
5 mm LED1 個
330 オーム抵抗1 個必要な工具:
ESP32 開発ボード
ブレッドボード
ジャンパワイヤ
デスクトップパソコン8
8
保存できない、または再生できないパターン
保存できない、または再生できないパターン
SRAM パターンのトラブルシューティング。
Flow
Loading...
9
9
出典と正直な制限
出典と正直な制限
**出典**、2026年9月29日に参照:テンプレートが固定しているコミット(gf180mcuD、f6eeac7dad085ffcc829ccfd721f7b4ce39edcf7、fossi-foundation ciel リリース由来;Apache-2.0)における GF180MCU PDK:SRAM モデル gf180mcu_fd_ip_sram__sram512x8m8wm1.v、その外形は LEF、最小クロック周期はそのタイミングファイル;フリップフロップ面積は標準セルライブラリのタイミングファイル。wafer-space/gf180mcu-project-template リポジトリ(src/chip_core.sv、src/chip_top.sv、README.md、librelane/config.yaml;Apache-2.0)。
**正直な制限。** シミュレーションは chip_core レベルで行われ、SRAM 自身のモデルを使用しているが、パッドリング、合成、レイアウトは含まれておらず、モデルのタイミングチェックはここでは何も決定しない。ESP32 のスケッチはコンパイルしたが実行はしていない。HOLD_LOG2 はテストが終了するように 0 にしていたが、チップでは 9 を使用する想定で、約1.3秒ほどの間である。
材料
4- 1 個プレースホルダー
- 1 個プレースホルダー
- プレースホルダー
- 1 個プレースホルダー
関連ブループリント
これらのブループリントは知識を共有しています — 技術、材料、原理
CC0 パブリックドメイン
このブループリントはCC0で公開されています。許可を求めずに、自由にコピー、修正、配布、あらゆる目的で使用できます。
メイカーを応援するには、ブループリント経由で製品を購入してください。メイカーには メイカーコミッション がベンダーにより設定されています。または、このブループリントの新しいイテレーションを作成し、自分のブループリントにコネクションとして含めて収益を共有できます。



