忍者ブログ

EDA Blog

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

[PR]

×

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

微分積分 あと少し

線形代数は予定通り完了し、微分積分もやさしく学べる微分積分を順調にこなしています。
今日中に2変数の微分を終わらせて、来週いっぱいで2変数の積分を完了して微分積分は完了する見込みです。
1変数の微分積分は高校で学んだ内容の復習に近いものだったので、予定よりも大幅に早く終わりそうです。

微分積分の次は、すぐわかる複素解析なっとくする複素関数の2冊で複素関数に取り掛かる予定です。
複素関数は1ヵ月半程度かける予定なので、4月下旬に終わらせる予定です。

拍手[0回]

PR

アナログCMOS回路設計技術講座

妻の許可が下りたので、平成22年度アナログCMOS回路設計技術講座を受講することに決めました。
講義全12回+演習2回のフルコースで、約29万円かかりますが、それだけのお金を投下するからには、アナログCMOSの基礎を身につけたいと思います。
本当は今年一年で数学と電磁気の復習をして、来年電気電子回路の学習をするつもりでしたが、今年はアナログCMOS回路も並行して学習することにしました。

拍手[0回]

[Quartus II] HardCopyリビジョンまで一気にコンパイルする方法

HardCopyをターゲットとする場合、Quartus IIのGUIを使用している場合には下記の手順を踏むことになり、FPGAリビジョンでのコンパイル後に手作業でHardCopyリビジョンを作成するという操作が必要になってしまいます。
  1. FPGAリビジョンのコンパイル
  2. HardCopyリビジョンの作成
  3. HardCopyリビジョンに移行
  4. HardCopyリビジョンのコンパイル


下記のTclスクリプトを使うと、上記の作業を自動化できます。

なお、Tclスクリプト実行時にプロジェクトを開いてあり、カレントリビジョンはFPGAリビジョンになっている必要があります。

load_package flow

set fpga_revision [get_current_revision] ;# FPGAリビジョン名
set hc_revision "${fpga_revision}_hc" ;# HardCopyリビジョン名

execute_flow -compile ;# FPGAリビジョンのコンパイル
execute_hc -create_companion $hc_revision ;# HardCopyリビジョンの作成
set_current_revision $hc_revision ;# HardCopyリビジョンをカレントリビジョンに設定
execute_flow -compile ;# HardCopyリビジョンの設定

拍手[0回]

線形代数 あと少し

演習 線形代数の例題を少しづつ解いていますが、もう少しで「固有値と2次形式」が終わるところまで来ました。
今までは行列の計算を手で行っていたのですが、面倒になってきたのでScilabをダウロードして、Scilabで計算させました。
固有値の計算は λ が入ってくるので計算に時間がかかっていたのですが、Scilabで一気に楽になりました。
今週ジョルダン標準形を学んで、線形代数は予定通り終了する予定です。

来週からは、微分積分に移ります。
やさしく学べる微分積分をメインに、理工系の基礎数学<1> 微分積分を読んでいく予定です。

拍手[0回]

数学の復習

2010年は1月~9月で電気電子で必要となる数学を復習して、10月~12月で電磁気を復習しようという計画を立てました。
だいたいこんなスケジュールを考えています。
自分の弱い電子工学とか電磁気が理解できるレベルの数学の基礎を身につけるのが目的です。
  • 1月~2月中旬: 線形代数
  • 2月中旬~3月: 微分積分
  • 4月~5月中旬: 複素数
  • 5月中旬~6月: ベクトル解析
  • 7月~8月中旬: フーリエ解析
  • 8月中旬~9月: 微分方程式
  • 10月~12月: 電磁気学
現在は線形代数の復習中ですが、今のところ順調で、固有値と2次形式のところを学習しています。
使用しているのは演習 線形代数と、キーポイント 線形代数です。
キーポイント 線形代数は、amazonでも評価が高いですが、確かに分かりやすいと思います。

拍手[0回]

Static Timing Analysis for Nanometer Designs: A Practical Approachが届いた

先週注文したStatic Timing Analysis for Nanometer Designs: A Practical Approachが届きました。
amazon.comでは11/2配送予定でしたが、大幅に早く届きました。

今週の平日は時間がなさそうなので、今週末から読みたいと思います。

拍手[0回]

Static Timing Analysis for Nanometer Designs: A Practical Approach

仕事でF/Fのタイミングパラメータの定義について検索しているときに、Static Timing Analysis for Nanometer Designs: A Practical Approachという本を見つけた。
今年発売になった本のようだ。

STA(Static Timing Analysis)に関わる仕事をしているが、体系的な知識を持ち合わせていないので、amazon.comから購入した。
送料込みで\14,000弱。
最近のamazon.comでは、US$ではなく日本円で表示してくれるようになっていて便利だ。

送料をケチったので、到着は8日~16日後。

拍手[0回]

[SystemVerilog] SystemVerilog for Verification

一昨年購入したSystemVerilog for Verificationを読んでいます。

Chapter 6: Randomizationを読みながら、ModelSim-Alteraでサンプルコードを試してみたのですが、残念ながらModelSimではランダム機能はサポートされていません。
下記のワーニングが出力されてしまいます。
** Warning: pp144.v(15): (vlog-2186) SystemVerilog testbench feature
(randomization, coverage or assertion) detected in the design.
These features are only supported in Questasim.
ランダム、カバレッジ、アサーションはQuestaでのみサポートされているそうです。
趣味程度の検証ではこれらの機能は使わないとは思いますが、SystemVerilogで強化された検証機能を体験したかっただけに残念です。

拍手[0回]

[Verilog] ModelSimでDPIを使う

ほとんどModelSimのユーザーマニュアルに書かれている例そのままですが、ModelSimでSystemVerilogのDPIを使用する例です。

Cのソースコード(hello_c.c)を用意します。
この例では、Hello from c_task()と表示した後、Verilog内で定義されているタスクverilog_taskを呼び出します。
最後に、渡された変数iの値を2倍にします。

ヘッダーファイルのうち、svdpi.hはModelSimに付属しています。
dpiheader.hvlogコマンドで作成します。

#include "svdpi.h"
#include "dpiheader.h"

int c_task(int i, int *o) {
printf("Hello from c_task()\n");
verilog_task(i, o);
*o = 2 * i;
return (0);
}


Verilogのソースコード(hello_top.v)です。
export "DPI-C"宣言で、タスクverilog_taskがC言語から呼び出せるようにエクスポートしています。
import "DPI-C"宣言で、先ほどhello_c.cで宣言した関数c_taskを呼び出せるようにしています。

module hello_top;
int ret;
export "DPI-C" task verilog_task;
task verilog_task(input int i, output int o);
#10;
$display("Hello from verilog_task()");
endtask // verilog_task
import "DPI-C" context task c_task(input int i, output int o);
initial begin
c_task(1, ret);
$display("ret=%d", ret);
end
endmodule // hello_top


コンパイルとリンクの手順は下記のとおりです。
$(MODELSIM)は、ModelSimをインストールしたディレクトリです。
  1. vlog -sv -dpiheader dpiheader.h hello.v

  2. vsim -dpiexportobj exportobj hello_top

  3. gcc -c -I $(MODELSIM)/include hello_c.c

  4. gcc -shared -Bsymbolic -o hello_c.dll hello_c.o exportobj.obj -L $(MODELSIM)win32aloem -lmtipli

  5. vsim -c -sv_lib hello_c -do "run -all; quit" hello_top



実行すると下記のように表示されます。。

# Hello from c_task()
# Hello from verilog_task()
# ret= 2

拍手[1回]

[OpenCores] アカウント登録

OpenCoresのサイトが新しくなったというメールが来たので、久しぶりにサイトを訪れてみました。
今まではCVSで管理していたのを、Subversionに変えたようです。

ついでに、アカウントも登録してみました。
ログインのところにRegisterというボタンがあるので、それをクリックして必要な情報を入力すれば登録できます。
アカウントを作成すると、下記のことができるようになります。
  1. e-mailのエイリアス。アカウント名@opencores.orgというアドレスです。
  2. 新規プロジェクトの作成
  3. SVNレポジトリへのアクセス
  4. ニュースや記事の投稿

拍手[1回]

カレンダー

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
性別:
非公開

ブログ内検索

カウンター

アクセス解析