17

24

20

16

23

18

25

21

19

22

C言語とVerilogの混在シミュレーション技法「DPI」 389

●はじめに

 本章では,Nios IIなどのCPUシステム内の周辺機
能,すなわちスレーブIP(Intellectual Property)を設
計するための手法を学びます.
 まず,C言語とVerilogの混在シミュレーション手
法DPI(Direct Programming Interface)を説明しま
す.論理シミュレーションのテストベンチにC言語
記述を組み込むことができるので,最終的なアプリ
ケーションと同じプログラムを使って論理検証できる
ようになり,作業効率が向上します.
 次に,Nios IIのスレーブIPを設計するのに必要な
知識として,Avalon-MMインターフェース(内部バス)
の信号とタイミング仕様を説明します.
 そして,C言語から制御してAvalon-MMマスタに
バス・アクセスさせてRAMのリード/ライト動作を
させてみます.この時点で,Quartus Prime,QSys,
ModelSim ASE(Altera Starter Edition)を総合的に連
携させて,Avalon-MMスレーブIPの設計と検証を
進める手法を学べます.
 最後に,本書の第5章で説明した,PICマイコンの
FLASHメモリ書き込み用の特殊なSPI通信モジュー
ルpic_programmerを設計して,C言語混在シミュ
レーションにより機能検証してみます.

C言語とVerilogの

混在シミュレーション技法「DPI」

●実はもうやっていたC言語混在シミュレーション

 本書の読者の方は,実はすでにC言語とVerilogの
混在シミュレーションを行っていました.第12章の

Nios IIによるシステム設計の中でです.
 Nios IIのソフトウェア統合開発環境Nios II EDS
の中から論理シミュレータModelSim ASEを起動し
て,ソフトウェアをコンパイルしたバイナリ・ファイ
ルによりシステム内のプログラム・メモリの内容を初
期化することで,Nios II CPUコアを含めたシステム
全体の論理シミュレーションを実行していました.
 この手法はシステム全体をまるごと検証できるので
とても有効なのですが,C言語のスタートアップ・ルー
チン(メモリ内の変数領域の初期化など)も実行される
ためサイクル数が長く,シミュレーション時間が長く
なる問題があります.
 さらに,CPUコアを含めた大規模論理をシミュレー
ションするので,無償版のModelSim ASEだと実行速
度が遅く,PCのメモリや波形記憶用のストレージ容
量も多く消費してしまいます.
 もちろん,最終的にシステムが完成してその全体を
検証する段階に至れば,上記の手法はとても有効なの
ですが,検証対象のIPを設計しながらシステム全体
を検証する設計工程の前段階では,繰り返して論理シ
ミュレーションしたいので,時間がかかる上記の手法
は実用的ではありません.

●C言語混在シミュレーションの意義

 IPを設計しながら効率的に論理シミュレーション
するには,Verilogだけでテストベンチを作ればよい
話です.
 しかし,そのIPの機能を動作させるためにシーケ
ンス処理やループ処理(フラグがセットされるまで待
つなど)が必要なケースでは,テストベンチをVerilog

20

C言語とVerilog HDLの混在シミュレーションを

使ってAvalon-MMスレーブIPを設計しよう

C言語混在シミュレーションとIP設計

本書付属DVD-ROM収録関連データ

DVD-ROM格納場所

内 容

備 考

CQ-MAX10¥Projects¥PROJ_DPI

C言語とVerilog HDLの混在シミュ

レーションの基本

(Quartus Prime,ModelSim用)

CQ-MAX10¥Projects¥PROJ_MM-Slave

Avalon-MMスレーブIPの設計事例:

pic_programmer用SPI機能

(Quartus Prime,ModelSim用)

このプロジェクトは,バス・マスタの機能モデル

にSRAMだけ接続する検証にも使うが,DVDに格

納したのはpic_programmerまで接続した完成形で

ある.FPGA_completedフォルダは無視してよい