2017-11-28 10 views
0

は、だから私は、イベントがトリガされたときに、いくつかのハードワイヤード確率でベクター中でいくつかのビットを設定したかったので、私はこれでした:

always @(some_event) begin 
    err_byte[0] = ($urandom()&65535 < 85) ? 1'b1 : 1'b0; 
    err_byte[1] = ($urandom()&65535 < 85) ? 1'b1 : 1'b0; 
    //....etc 

と私のerr_byteは常に持っていたがこのコードが数千回トリガされたとしても(少なくとも1ビットを1に設定するのに十分であったはずです)、8'h00の値を返します。私は整数rndvを宣言し、これをした:

rndv = $urandom()&65535; 
err_byte[0] = (rndv < 85) ? 1'b1 : 1'b0; 
rndv = $urandom()&65535; 
err_byte[1] = (rndv < 85) ? 1'b1 : 1'b0; 
//etc... 

それは突然動作します。今質問:ここで何が起こっている?条件式の中でシステムタスクを呼び出せないのですか?

答えて

3

オペレータの優先順位。 <&の前にあるので、最初の例は次のように書くことができます。

err_byte[0] = ($urandom() & (65535 < 85)) ? 1'b1 : 1'b0; 

今すぐ表示しますか?

+0

確かにそれを理解して、私自身の質問に答えたいと思っていました.D ty – artemonster

関連する問題