忍者ブログ

EDA Blog

Verilog、SystemVerilog、SystemCなど、ハードウェア記述言語についてのブログです。

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

言語実装パターン再開

ANTLRのチュートリアルを一通り読んだので、言語実装パターンを再開しました。
はじめから、必要に応じてメモを取りながら読み進んだところ、前回つまずいたところも理解できました。
サンプルコードはあまり試していませんが、パターン 12: 組み込み非均質木走査器まで進みました。

拍手[0回]

PR

SeedとCost Table

Quartus IIでは、Fitter設定のSeedを変更することで、同じデザインでも異なる配置配線結果を得ることができます。
配置配線結果が変わるということはタイミングも変わるということなので、タイミングが満たしにくいデザインの場合は、複数のseedを振ってタイミングを満たすということをよく行います。
ISEでは、cost tableというものがseedに相当するようです。
cost tableで設定できる値は1から100までとなっています。

拍手[0回]

tclでgettext

Tkのテキストを日英両方の対応にしたかったので、gettextを使ってみました。

まず、ここからWindows用のバイナリをダウンロードします。
ダウンロードが終わったら、ダウンロードした.exeを実行してインストールします。
インストール後、C:\Program Files (x86)\GnuWin32\binにパスを通しておきます。

下記がサンプルコードです。
ボタンが2つだけです。
toplevel .top
package require msgcat
namespace import msgcat::*
proc _ {s} {return [::msgcat::mc $s]}
msgcat::mcload [file join [file dirname [info script]] msg]

package require msgcat
namespace import msgcat::*
msgcat::mcload [file join [file dirname [info script]] msg]
set hoge "close"
pack [button .top.b -text [_ "Push Me"]]
pack [button .top.b2 -text [format [_ "Close %s"] $hoge]]

tkwait window .top
上記サンプルコードをsample.tclとして保存し、xgettext -k_ sample.tclと実行します。
messages.poというファイルが生成されますので、これを編集します。
CHARSET=UTF-8に設定し、UTF-8で保存しておきます。

message.poを編集して"Push Me"と"Close %s"に対応する日本語を追加後、msgfmt --tcl -l ja_jp -d msg messages.poと実行します。
msg/ja_jp.msgが作成されます。
localeがjp_JPになっている状態でsample.tclを実行するとボタンは日本語で表示され、それ以外のlocaleの場合には英語で表示されるようになります。

拍手[0回]

Excel 2007で正規表現を使う

Excel 2007で正規表現を使ってみた。

まずは下記手順で正規表現を有効にする。
  1. Alt + F11でMicrosoft Visual Basicを開く。
  2. ツール → 参照設定
  3. Microsoft VBScript Regular Expression 5.5をチェックしてOKをクリック
下記は試しに作ってみたマクロ。たとえば「100 MHz」という値のセルを選択して実行すると、セルの値が「100」になる。
Sub Remove_MHz()
   Dim re As RegExp

   Set re = New RegExp
   re.Pattern = "\s+MHz"

   For Each xCell In Selection
       xCell.Value = re.Replace(xCell.Value, "")
   Next xCell
End Sub

拍手[0回]

ANTLRチュートリアル

ANTLRのチュートリアルを7. Simple Lexer/Parser Exampleまで進めた。
これを一通りこなしてから言語実装パターンに戻ろうと思う。

拍手[0回]

言語実装パターン

言語実装パターンという本を昨年末に買い、読んでいるのですが難しいです。
使われているANTLRにもJavaにもなじみがないためでしょうか。
サンプルコードを確認しながら読み進めるように、JDKをインストールし、サンプルコードもオライリーのサイトからダウンロードしてきました。
ANTLRのチュートリアルも読んだほうがよいような気がします。

拍手[0回]

[ISE] SmartXplorer

普段はQuartus IIばかり使用していますが、訳あって最近はISEを少し触っています。
Quartus IIのDesign Space Explorerのような、シードを振って最適化するようなツールがISEにもないか探したところ、最近のバージョンではSmartXplorerというツールがありました。
少し前まではMulti Pass Place & Routeなるツール(?)で行っていたようで、日本語のブログでもそれを紹介しているものを見かけましたが、現在はSmartXplorerに移行されているようです。

拍手[0回]

Perlを使ってGoogle翻訳

Webの翻訳APIをPerlからアクセスする方法を探していたら、Google AJAX Language APIをPerlから叩いて翻訳するを見つけました。 サンプルコードを参考にして、翻訳したい文章をGoogle翻訳で翻訳できるようになりました。
作者のmemememomoさんには大感謝です。

JSONを使うのは初めてだったのですが、使いやすそうです。


拍手[1回]

[Quartus] Quartus II Tcl API を使用したHardCopy II フローの自動化 (3)

今回は、example1.tcl で使用したTcl コマンドの詳細について説明します。

(1) load_package flow

Qaurtus II の提供するflow というパッケージをロードします。

Quartus II のTcl API で提供されるコマンドは、それぞれ関連するTcl パッケージの中に入っています。いくつかのTcl パッケージはロード済みですが、ロードされていないパッケージについてはload_package コマンドで明示的にロードする必要があります。

example1.tcl で使用しているexecute_flow execute_hardcopyii というTcl コマンドはflow パッケージに含まれていますが、このパッケージはロードされていないので、明示的にロードする必要があります。

(2) execute_flow –compile
フルコンパイルを実行します。GUI 上では、Processing→Start Compilation をクリックしたのと等価なフローが実行されます。

execute_flow コマンドは、flow パッケージに含まれているコマンドで、オプションによってAnalysis & Elaboration、I/O アサインメント・アナリシス等のあらかじめ決められたフローを実行することができます。

(3) execute_flow –create_companion_revision
HardCopy II コンパニオン・リビジョンを作成します。コンパニオン・リビジョン名は、Stratix II リビジョン名に_hcii をつけたものになります。例ではStratix II リビジョン名はdes56 ですので、HardCopy II コンパニオン・リビジョン名はdes56_hcii に設定されます。

GUI 上の等価な操作は、Project→HardCopy II Utilities→Create/Overwrite
HardCopy II Companion Revision…
です。

(4) set_current_revision des56_hcii
現在のリビジョンを、(3)で作成したHardCopy II コンパニオン・リビジョンをdes56_hcii に変更します。example1.tcl では、このコマンドでHardCopy II コンパニオン・リビジョンのdes56_hcii に変更しています。
set_current_revision では、現在のリビジョンを指定したリビジョンに変更することが出来ます。

(5) execute_flow -compile

HardCopy II コンパニオン・リビジョンでフルコンパイルを実行します。

(6) execute_hardcopyii –compare
Stratix II リビジョンとHardCopy II コンパニオン・リビジョンの比較を行います。

GUI上の等価な操作は、Project →HardCopy II Utilities → Compare HardCopy IICompanion Revisions です。

execute_hardcopyii は、flow パッケージに入っているコマンドです。使用する場合は、load_package コマンドでflow パッケージをロードする必要があります。

(7) execute_hardcopyii –handoff_report
HardCopy II コンパニオン・リビジョンのハンドオフ・レポートを作成します。

GUI上の等価な操作は、Project→HardCopy II Utilities→Genrate HardCopy II Handoff
Report
です。

(8) execute_hardcopyii –archive des56_hcii_handoff.qar
HardCopy II コンパニオン・リビジョンのハンドオフ・アーカイブを作成します。作成されるアーカイブファイル名はdes56_hcii_handoff.qar です。

execute_hardcopyii コマンドの-archive オプションでは、指定した名前のハンドオフ・
アーカイブを作成します。

GUI 上の等価な操作は、Project→HardCopy II Utilities→Archive HardCopy II Handoff Files…です。

次回からは、Quartus II Tcl API のさまざまな機能を使い、より洗練されたスクリプトを記述できることを説明します。

拍手[2回]

[Quartus] Quartus II Tcl API を使用したHardCopy II フローの自動化 (2)

昨日書いた第1回のTclコマンドをexample1.tclとして保存し、Tcl Consoleからsource example1.tclと入力すると、一連のTclコマンドを実行できます。sourceコマンドは、指定したTcl スクリプトファイルを読み込み、実行するコマンドです。
hcii_fig5.PNG









example1.tcl を実行すると、Stratix II リビジョンのコンパイル後、HardCopy II コンパニオン・リビジョンを作成してコンパイルし、HardCopy II ハンドオフ・アーカイブの作成までを自動で行います。実行終了後にポップアップ・ウィンドウは表示されませんが、TclConsole 上でプロンプト#が表示されます。example1.tcl の実行終了後、プロジェクト・ディレクトリにHardCopy II ハンドオフ・アーカイブ(des56_hcii_handoff.qar)が作成されていること、リビジョンがdes56からdes56_hcii に変わっていることを確認してください。
hcii_fig6.PNG

Quartus II のTcl API を使用することで、Stratix II ファースト・フローを1 つのコマンドで実行することができるようになりました。




拍手[0回]

カレンダー

12 2025/01 02
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

フリーエリア

最新CM

[04/11 なつたん]

最新TB

プロフィール

HN:
aston_martin
性別:
非公開

ブログ内検索

カウンター

アクセス解析