読者です 読者をやめる 読者になる 読者になる

Quartus Ⅱでclock周波数を与える方法

FPGA

AlteraのFPGACPLDを開発する時には、IDE (Integrated Development Environment) であるQuartus Ⅱを利用しています。
このIDE、何も設定せずにTiming Analysisをすると、clock周波数を1GHzとして解析してしまうようです。
別にそれでもよいのですが、"Timing requirements not met"とエラーが出ているのは精神的によくないので、clockに適切な周波数を設定します。
その方法なのですが、"quartus ii set clock frequency"で調べてもあまり出てこなかったので、記しておきます。
(この検索ワードだと、実際に水晶振動子などから与える源clockの周波数の決め方みたいですが、Timing Analysisのための設定方法です。)

参考サイト

…と思っていたのですけれど、"SDC Altera"とかで調べたら出てくるみたいですね。

Quartus II はじめてガイド - タイミング制約の簡易設定方法 ~ TimeQuest Timing Analyzer Wizard ~ ver.10.0
https://www.altima.jp/members/japanese/download/tqwzd_v10_01.pdf

上のAltima社のはじめてガイドは、日本語でQuartus IIの使い方が一通り載っているので良さそうです。この記事の意味…。
インテル® FPGA : ソフトウェアに関する日本語資料

Quartus II TimeQuest タイミング・アナライザ・クックブック
https://www.altera.co.jp/ja_JP/pdfs/literature/manual/mnl_timequest_cookbook_j.pdf

設定方法

TimeQuestに渡すであろう.sdcファイルに記述するのが要なのでしょうが、GUIで行きます。
DE0のためにQuartus II 64-bit v13.0を使っているので、古いですけれどこれで説明します。
まず、何も設定せずにTiming Analysisをします。
f:id:vita_brevis:20170104023520p:plain

module唯一のclockであるI_SYSCLKに、1000MHzが与えられています。
次に、周波数を設定します。メニューの[Assignments] -> [TimeQuest Timing Analyzer Wizard]を選びます。 f:id:vita_brevis:20170104030048p:plain

最初の画面はNextで飛ばします。2つめの画面が、clockを与える設定を行う画面です。 f:id:vita_brevis:20170104024421p:plain

ここでは、f = 100[MHz]のclockを与える設定にします。周期Tは、T = 1/f = 10[ns]です。
まず、[Clock Name]には適当な名前を与えます。
次に、[Input pin]には、このclockを与える信号名(?)を与えます。今回はI_SYSCLKです。
最後に、[Period]に周期10[ns]を与えます。[Rising]と[Falling]は空欄でもよく、その場合duty比50%のclockとなるようです。

その後[Next]を押して、最後の画面ではファイル名を確認して[Finish]です。 f:id:vita_brevis:20170104024531p:plain

今回は、"dummy_1.sdc"という.sdcファイルが生成されました。中身は以下のようなテキストが記されたファイルです。
これで再びTiming Analysisをしてみました。 f:id:vita_brevis:20170104024543p:plain

ちゃんと周波数が100[MHz]になっていました。 f:id:vita_brevis:20170104024551p:plain

さっきの.sdcファイルが読み込まれているようです。