Top / VeriLog

VeriLog

Verilog書いてて失敗した事のメモ VerilogLog,略してVeriLog

全般

  • ISE Project Navigator下段のErrorコンソールはエラーメッセージが結構 はしょられてるので,よくわからんときは必ずView Synthesis Reportを 見ること
  • initial beginは面倒がらずにしっかり書く! 初期値がないものはインクリメントできないぞ.

合成用ファイル(dc_topo.scr)

  • いらんファイルを除外
    set RTL_FILE "[glob rtl/*.v]"
    regsub {rtl/ctrl_b12n8_1.v} $RTL_FILE {} RTL_FILE
    regsub {rtl/ctrl_b12n8_2.v} $RTL_FILE {} RTL_FILE
    :

set行の下に,regsubで削除したいファイル行を続ける.

  • sedでTOP_MODULEを変更 シェルスクリプトと組み合わせてレッツ自動化
    sed 's/set TOP_MODULE ".*"/set TOP_MODULE "とっぷもじゅーる"/' module.scr
  • シェルスクリプトに合成したいトップモジュールをつらつら書く こんなかんじで,どうだい
    top_modules=("nsmb8_0" "smb8_0"
                 "nsmb12_0")
    for tm in "${top_modules[@]}"
    do
        eval "sed 's/set TOP_MODULE ".*"/set TOP_MODULE \"${tm}\"/' sedsample.txt"
    done 

合成結果レポートファイルの処理

TiminigInfo..やAreaInfo..をまとめるのめどい

cp /home/kam/vhd/rep2csv.rb /home/じぶんち/vhd/プロジェクト名

で,

ruby ./rep2csv.rb

とするとrepディレクトリ以下のレポートファイルをてきとうにパーズして csv形式で面積と遅延時間を出力します.csv形式なんでOooとかexcelでどうぞ. ご意見あればどうぞ.

信号の複数ドライブ

別のalways文で同じ信号をドライブしないこと. 当たり前だけど,multiple driver うんぬん言われて シミュレーションできても合成できなくなるぞう

design_vision-xgで合成するとき

readで回路記述を読み込んだ後

source scr/typ_lib_starc90nm.scr

する.

つぎに

set_max_delay 5 -to [all_outputs]
set_max_area 5

などとして時間,面積制約を加えた後

Design -> Compile Ultra

このとき,"No auto ungroup"にチェックしたほうが速い場合がある. (独自設計の場合など)

栗ティカルパス

Select -> Path from/through/to 

で,何も入力せずに[OK]とすると最長経路を選択できる(delay type が max?). createPathSchematicOfSelection.png

さらに

Create PathSchematic of Selection (3つ並びのアイコンの右側)

で,その経路図を抽出できる.

遅延時間は

Timing -> Report Timing Path

ISEの使い方など

出力

参考

http://www.tokudenkairo.co.jp/sp6/column.html

ISim

コマンドでシミュレーション

準備

環境変数を設定する. $Xilinx/ver/ISE_DS/settings[32|64].bat を実行する.ちなみに,ver13.1では,実行した結果として以下の変数が設定された.

set PATH=c:\Xilinx\13.1\ISE_DS\ISE\bin\nt64;%PATH%
set PATH=c:\Xilinx\13.1\ISE_DS\ISE\lib\nt64;%PATH%

set XILINX=c:\Xilinx\13.1\ISE_DS\ISE
set XILINX_DSP=c:\Xilinx\13.1\ISE_DS\ISE
set XILINX_EDK=c:\Xilinx\13.1\ISE_DS\EDK
set XILINX_PLANAHEAD=c:\Xilinx\13.1\ISE_DS\PlanAhead

プロジェクトファイルを作成する

プロジェクトファイルは,テキストで記述する.

verilog test_AlphaMac5_lib "src/AlphaMac5.v"
verilog test_AlphaMac5_lib "src/test/test_AlphaMac5.v"
  • verilog Verilog-HDLファイルであることを示す.
  • test_AlphaMac5_lib ライブラリ名を示す.
  • "src/*.v" ファイルのパスを示す.

コンパイル

"fuse.exe"コマンドでコンパイルする.以下,例.

fuse.exe
  test_AlphaMac5_lib.test_AlphaMac5 ^
  -prj test_AlphaMac5.prj ^
  -L test_AlphaMac5_lib=./isim/test_AlphaMac5_lib/ ^
  -o test_AlphaMac5.exe 

一般化するとこんな感じ.

fuse.exe ^
  <lib_name>.<top_module>  ^
  -prj <project file> ^
  -L <library_name>=<path> ^
  -o <outputfilename>

実行

上記<outputfilename>を実行する.

  • -guiオプションで,波形ウィンドウを表示する.
  • tclプロンプトが表示されたら,run all
  • tclスクリプトの読み込みについては,今後書くよてい.

添付ファイル: filecreatePathSchematicOfSelection.png 364件 [詳細]
Link: MenuBar(152d) ,
Site admin: kam1610, PukiWiki 1.4.7 Copyright © 2001-2006 PukiWiki Developers Team. License is GPL.
Based on "PukiWiki" 1.3 by yu-ji. Powered by PHP 5.2.17.