我試圖將一些SystemVerilog代碼移植到C++/SystemC,並且在一些行中我看到奇怪的數組索引。這是我看到的簡化版本。索引操作對SystemVerilog中的整數類型做什麼?
typedef enum bit [2:0] {enu_red, enu_blue, enu_green} typ_enum;
typedef struct packed {
bit [3:0] field1;
bit [3:0] field2;
} typ_struct;
...
var int arr_ints[typ_struct];
var int que_ints[$];
typ_struct obj_struct;
typ_enum obj_enum;
int i = 3;
// assume all the declared variables hold valid values at this point
// also assume que_ints[i] is valid
if ((!arr_ints[obj_struct][1]) // these two lines are the problem
&& (que_ints[i][obj_struct])
)
begin
// do something
end
現在經過我這個端口的代碼,我得到一些編譯器錯誤,我完全理解,因爲原來的代碼不完全看我的權利。在if語句的第一行中,它看起來像試圖用布爾值來索引整數類型。在第二個,它看起來像試圖索引一個枚舉值的整數類型。然而,這個代碼顯然是有效的。有人可以解釋它在做什麼嗎?
什麼是'true'定義爲? – dwikle
我將true替換爲1.在實際代碼中,它是一個用作true/false布爾值的函數,但實現爲一位。我被混淆了與C++等價物,實際上使用bool類型 – Rich