OVM2.1.1を使って74163カウンタの検証環境を作ってみた。
4bitのカウンターごときにOVMなんてと思われるかも知れないが。。
作った回路にOVMテストベンチをつけろと言うのは上司だけでなく
客先も言ってくる日はもう目の前だ、理由はそのうちにね。。
作った回路にOVMテストベンチをつけろと言うのは上司だけでなく
客先も言ってくる日はもう目の前だ、理由はそのうちにね。。
OVMテストベンチはそれなりの構成でsequencerやenvを備えた。下記に説明と行数を入れた。
久しぶりに作ったので調べ調べで1日ぐらいかかった。
感想は割とすぐに出来たな。。4bitカウンターのTBで1日も掛けるのかと
思うだろうが拡張性が有ってランダム検証付きのTBを久しぶりに、だから
こんなもんだろうと私は思うぜ。。
1 | counter_item | データ | 20line |
2 | counter_sequence | ランダム生成 | 18line |
3 | counter_sequencer | シーケンサ | 9line |
4 | counter_driver | ドライバ | 34line |
5 | counter_env | 環境 | 36line |
6 | counter_tb | topモジュール | 37line |
久しぶりに作ったので調べ調べで1日ぐらいかかった。
感想は割とすぐに出来たな。。4bitカウンターのTBで1日も掛けるのかと
思うだろうが拡張性が有ってランダム検証付きのTBを久しぶりに、だから
こんなもんだろうと私は思うぜ。。
いまさらOVMの簡単なサンプルをと思われるが良いネタを思いつかないので。。
少しずつblogへ載せてゆきましょ。今回は counter_item.sv ライセンスはApache2としておくぜ。。
少しずつblogへ載せてゆきましょ。今回は counter_item.sv ライセンスはApache2としておくぜ。。
// 74163 counter test bench class counter_item extends ovm_sequence_item ; rand int unsigned data ; rand int unsigned enable ; rand int unsigned interval ; constraint c_data0 {data < 4'hf ;} constraint c_enable0 {enable < 4'hf ;} constraint c_interval0 {interval < 4'h3 ;} `ovm_object_utils_begin(counter_item) `ovm_field_int(data, OVM_ALL_ON) `ovm_field_int(enable, OVM_ALL_ON) `ovm_field_int(interval, OVM_ALL_ON) `ovm_object_utils_end function new(string name="counter_item") ; super.new(name) ; endfunction : new endclass : counter_item
dataはカウンターのロード値をenableはカウンター動作時間、intervalは動作間隔。。
TLMなので細かな制御情報は送る必要はない。
今回からはfullスペックのsystemVerilogを使えるRiviera-PRO(アルデック)なので
乱数の生成範囲を制約で書く、これが楽ちんなんだな。。プログラミングで生成範囲を
書くのはやはり面倒うだね!!
TLMなので細かな制御情報は送る必要はない。
今回からはfullスペックのsystemVerilogを使えるRiviera-PRO(アルデック)なので
乱数の生成範囲を制約で書く、これが楽ちんなんだな。。プログラミングで生成範囲を
書くのはやはり面倒うだね!!
OVM systemVerilog IEEE 1800-2009
>>トピック
74163ロード付き4bitカウンターを知っている人はもう居ないか。。
うん十年前は
この頃のaltera-AHDLで
そこでカウンター論理の理解が必要であった。
xilinxに至っては、合成器が無くて論理式を手書きする、
この時に例のxilinx-5入力cellの制約で74163で使われているキャリーを
分離して伝搬を理解する必要があった。。
でも今では不要不要。。特別速い回路はハードマクロを使うのが正解です。。
74163ロード付き4bitカウンターを知っている人はもう居ないか。。
うん十年前は
FPGAのチューニング == このカウンター内部論理を理解し応用すると言う時代が有ったのだが。。
この頃のaltera-AHDLで
count <= count + 1 ;を合成するとゲロが出そうなネットを出していたね。。
そこでカウンター論理の理解が必要であった。
xilinxに至っては、合成器が無くて論理式を手書きする、
この時に例のxilinx-5入力cellの制約で74163で使われているキャリーを
分離して伝搬を理解する必要があった。。
でも今では不要不要。。特別速い回路はハードマクロを使うのが正解です。。