信号強度

Verilog HDLでは、信号に対して8つのレベルの強さが設定できるようになっています。
異なる値をもつ複数の信号が衝突した際に、どの信号が勝つか。
つまり、0,1,X,Z のどの値になるかを決めるために。

では、そのレベルとは何でしょう?

以下の表をご覧ください。
一番強いレベル7は、supply0/1 ・・・ これは電源のことです。
少し弱いレベル5には、pull0/1 ・・・ これはプルアップ/ダウンのことです。
一番弱いレベル0は、highz0/1 ・・・ これはハイインピーダンス(Hi-Z)のことです。

もうお気づきですね。・・・そう電位です。

では、同じ強度(レベル)の0と1が衝突したらどうなるでしょうか?
答えは、同じ強度(レベル)のXです。

では、strong0(レベル6)とpull1(レベル5)が衝突したらどうなるでしょうか?
答えは、・・・そうstrong0ですね。

まあ、そのような感じで勝敗が決まります。

なお、表の記号は、$displayなどで%vを指定した場合に出力される略記号です。
また、0,1以外に、X,Z,L,Hなどとの組み合わせもあります。

記述記号(%v)説明レベル
supply0Su0電源/ドライブ7
strong0St0強/ドライブ6
pull0 Pu0プル/ドライブ5
large0 La0大/容量4
weak0 We0弱/ドライブ3
medium0Me0中/容量2
small0 Sm0小/容量1
highz0 Hi0Hi-Z0
highz1 Hi1Hi-Z0
small1 Sm1小/容量1
medium1Me1中/容量2
weak1 We1弱/ドライブ3
large1 La1大/容量4
pull1 Pu1プル/ドライブ5
strong1St1強/ドライブ6
supply1Su1電源/ドライブ7

信号強度とプリミティブの関係

信号強度には、先ほど説明した信号が衝突する際の関係以外にも、
プリミティブを通過する際に信号強度が低下するという関係を持っています。

まず、nmos, pmos, cmos, tran, tranif0/1の各プリミティブは、
supply0/1がstrong0/1に低下し、それ以外では低下しないという関係を持っています。

その他の(抵抗)プリミティブ、rnmos, rpmos, rcmos, rtran, rtranif0/1は、
下表の通り信号強度が低下するという関係を持っています。

入力出力
supply0/1pull0/1
strong0/1pull0/1
pull0/1 weak0/1
large0/1 medium0/1
weak0/1 medium0/1
medium0/1small0/1
small0/1 small0/1
highz0/1 highz0/1