SystemVerilogの機能紹介

SystemVerilogの機能についての紹介です。
4
Vengineer@ @Vengineer

#systemverilog には、Exterm Modules というのもありますが、#aldec ではサポートしていません。

2011-12-03 11:52:49
Vengineer@ @Vengineer

ポートの型には、typedefで定義したものも使えます。 #systemverilog #aldec

2011-12-03 11:53:43
Vengineer@ @Vengineer

Ports Mapping は非常に便利な機能です。名前とサイズが同じなら、ポートに信号をつなげなくてもOK #systemverilog #aldec

2011-12-03 11:55:18
Vengineer@ @Vengineer

.* というワイルドカードも使えます。#systemverilog #aldec

2011-12-03 11:56:07
Vengineer@ @Vengineer

SystemVerilog スタートアップのあたしの担当部分には、interface, Ports Mapping, DPI-C など、#systemverilog の新しい機能の例題を説明しています。 是非、買ってください。#aldec

2011-12-03 11:57:03
Vengineer@ @Vengineer

timeprecision 1ps; timeunit 1ns; なる記述で時間の単位を指定できます。`timescale 1ns/1psよりはるかに便利です。 #systemverilog 2009では、timeunit 1ns/1ps ;にも対応したようです。#aldec

2011-12-03 11:59:19
Vengineer@ @Vengineer

program も#systemverilog での新機能です。 基本的には、module と同じですが、always が使えません。 ちなみに、program はテストベンチを書くためのものです。#aldec ModelSim では、program は使えません。

2011-12-03 12:02:59
Vengineer@ @Vengineer

#systemverilog では、#5ps とか、時間を指定して遅延をつけることができます。 #aldec

2011-12-03 12:03:32
Vengineer@ @Vengineer

program は、module内にインスタンスとしても置けます。 一般的には、トップ階層として使います。 #systemverilog #aldec

2011-12-03 12:04:15
Vengineer@ @Vengineer

$stop ではなく、$exit があります。#systemverilog #aldec

2011-12-03 12:05:20
Vengineer@ @Vengineer

clocking を使えば、同期インターフェースの信号をまとめて扱えます。 便利です。 #systemverilog #aldec

2011-12-03 12:06:13
Vengineer@ @Vengineer

Clocking では、Input/Output Skewも定義できます。#systemverilog #aldec

2011-12-03 12:07:05
Vengineer@ @Vengineer

昼食の時間になりましたので、午前の授業は終了します。お疲れ様でした。#systemverilog #aldec

2011-12-03 12:07:35
Vengineer@ @Vengineer

夕食前の忙しい時なのに、DPI-Cの利点をツイート。#SystemVerilog #DPI デザインはVerilog HDL/VHDLどちらでもいいのですが、いや、Cベース設計なら、そんなのどうでもいいのですが、検証側はSystemVerilogを使えば、超便利。

2011-12-24 18:21:49
Vengineer@ @Vengineer

テストベンチ構築には、#SystemVerilog の各種機能が使えます。 DUT との接続には、interface を使えば、記述量が少ないのでコードが見易いです。interface をライブラリ化すれば、次に使うときやチーム間でも共有できます。

2011-12-24 18:25:14
Vengineer@ @Vengineer

#SystemVerilog制約付きランダム生成を使えば、いろいろなパターンを自動的に生成できます。そして、coverage を定義すれば、どのぐらいテストができているかも確認できます。

2011-12-24 18:26:46
Vengineer@ @Vengineer

アサーションとして、#SystemVerilog Assertion が使えます。#SystemVerilog では、デザイン、テストベンチ、制約付きランダム生成、アサーションと全ての機能が1つの言語で利用できるので、シミュレータも1つの言語だけなので、高速に実行できます。

2011-12-24 18:28:26
Vengineer@ @Vengineer

検証言語(検証環境)である、e/SpecMan では、デザインはサポートしていないので、どうしてもデザイン側の言語のシミュレータとのコシミュレーションになります。 ただし、ケイデンスのシミュレータでももしかしたら内部でダイレクト接続しているかもしれません。

2011-12-24 18:31:04
Vengineer@ @Vengineer

#SystemVerilog であれば、3大EDAベンダーのシミュレータでとりあえず、動きます。他のベンダーのシミュレータでも動きます。#SystemVerilog

2011-12-24 19:03:37
Vengineer@ @Vengineer

テストベンチは、#SystemVerilog で書きますが、個々のテストプログラムは #SystemVerilog ではなく、C/C++で書けます。いや、あたしは書いています。是非、皆さんも書きましょう!

2011-12-24 19:09:16
Vengineer@ @Vengineer

なぜ、C/C++言語でテストプログラムを書くのか?それは、ハードウェア(実機)をテストするのは、ソフトウェアであり、それはC言語がほとんどだからです。検証におけるテストプログラムをC/C++言語で書くということは、自然の流れなのです。#SystemVerilog

2011-12-24 19:10:58
Vengineer@ @Vengineer

#SystemVerilogC/C++言語を使うための機能が #DPI です。

2011-12-24 19:14:20
Vengineer@ @Vengineer

では、どうして検証エンジニアがC/C++言語でプログラムを書かないのか?それは、ハードウェアを制御するためのソフトウェアを書いたことが無いからです。 ある人なら、何で後でやらなくちゃいけないもののために、#SystemVerilogで記述したテストプログラムを書きたいでしょうか

2011-12-24 19:21:15
Vengineer@ @Vengineer

検証エンジニアはソフトウェアエンジニアが向いていると言われていますが、そのソフトウェアエンジニアって、ハードウェアの制御プログラムを書いたことがあるとは限りません。そこんところがテストプログラムにC/C++言語を使わない理由です。 #SystemVerilog

2011-12-24 19:23:05
Vengineer@ @Vengineer

あたしは自分で作るハードウェアは自分でソフトウェア書いてテストしますので、 検証においてもソフトウェアを使って、テストプログラムが書きたかったのです。 そして、自作のツールにてそのような環境を作って、利用していました。 #SystemVerilog では、それが超簡単にできます。

2011-12-24 19:33:36