1.簡単な説明
私は2か月間雇用されており、検証にはSystemVerilogを使用しています。Verilogで直接テストベンチを作成する前に、この期間にsvを使用した後、検証のためにsvに切り替える必要があることがわかりました。
2.ボディ
1)データ型
の種類 | 説明 | シンボル |
---|---|---|
論理 | Verilogregおよびwire関数に相当する4つの状態 | |
ビット | デュアルステート、カスタムビット幅 | デフォルトでは符号なし |
int | デュアルステート、32ビット | 手話 |
バイト | デュアルステート、8ビット | 手話 |
shortint | デュアルステート、16ビット | 手話 |
longint | デュアルステート、64ビット | 手話 |
整数 | 4つの状態、32ビット | 手話 |
時間 | 4つの状態、64ビット | 符号なし |
リアル | デュアルステート、64ビット | 倍精度浮動小数点、doubleに相当 |
shortreal | デュアルステート、32ビット | フロートに相当 |
注意:
- 4つの状態は0、1、x、およびzであり、二重の状態は0、1です。
- Verilogでは、regタイプのデータはalwaysでのみ割り当てることができ、wireタイプを使用するように割り当てることができます。svでは、ロジックをalwaysで割り当てるか、assignで使用できますが、複数の場所で駆動することはできません。
2)固定幅配列
int array0[0:15]; //16个整数
int array1[16]; //16个整数
int array2[0:7][0:3]; //二维数组
int array3[8][4]; //二维数组
array3[5][2]=1; //数组赋值
bit [7:0] unpack[3]; //非合并数组,分配三个字空间,但只存放低字节
int ascend[4]=`{0,1,2,3};//常量数组前面加 “ ` ”
3)配列操作
initial begin
bit [31:0] src[5],dst[5];
for(int i=0;i<$size(src);i++)
src[i] = i;
foreach(dst[j])
dst[j]=src[j]*2;
end