diff --git a/src/V3Task.cpp b/src/V3Task.cpp index aaa20eb54..87dcee4e8 100644 --- a/src/V3Task.cpp +++ b/src/V3Task.cpp @@ -910,7 +910,7 @@ class TaskVisitor final : public VNVisitor { if (portp->isNonOutput()) { std::string frName = portp->isInout() && portp->basicp()->isDpiPrimitive() - && portp->dtypep()->skipRefp()->arrayUnpackedElements() == 1 + && portp->dtypep()->skipRefp()->dimensions(false).second == 0 ? "*" : ""; frName += portp->name(); diff --git a/test_regress/t/t_dpi_arg_inout_unpack.cpp b/test_regress/t/t_dpi_arg_inout_unpack.cpp index 4c3ffdc7f..9b15a52f9 100644 --- a/test_regress/t/t_dpi_arg_inout_unpack.cpp +++ b/test_regress/t/t_dpi_arg_inout_unpack.cpp @@ -147,7 +147,6 @@ bool update_0d(T* v) { ++(*v); return true; } - template bool update_1d(T* v) { if (!compare(v[0], 43)) return false; @@ -156,7 +155,6 @@ bool update_1d(T* v) { ++v[1]; return true; } - template bool update_2d(T* v) { if (!compare(v[0 * 2 + 1], 45)) return false; @@ -167,7 +165,6 @@ bool update_2d(T* v) { ++v[2 * 2 + 1]; return true; } - template bool update_3d(T* v) { if (!compare(v[(0 * 3 + 0) * 2 + 0], 48)) return false; @@ -180,6 +177,24 @@ bool update_3d(T* v) { ++v[(3 * 3 + 0) * 2 + 0]; return true; } +template +bool update_1d1(T* v) { + if (!compare(v[0], 52)) return false; + ++v[0]; + return true; +} +template +bool update_2d1(T* v) { + if (!compare(v[0], 53)) return false; + ++v[0]; + return true; +} +template +bool update_3d1(T* v) { + if (!compare(v[0], 54)) return false; + ++v[0]; + return true; +} bool update_0d_scalar(svScalar* v) { if (!compare_scalar(v[0], sv_0)) return false; @@ -213,6 +228,21 @@ bool update_3d_scalar(svScalar* v) { v[(3 * 3 + 0) * 2 + 0] = sv_0; return true; } +bool update_1d1_scalar(svScalar* v) { + if (!compare_scalar(v[0], sv_0)) return false; + v[0] = sv_1; + return true; +} +bool update_2d1_scalar(svScalar* v) { + if (!compare_scalar(v[0], sv_1)) return false; + v[0] = sv_0; + return true; +} +bool update_3d1_scalar(svScalar* v) { + if (!compare_scalar(v[0], sv_0)) return false; + v[0] = sv_1; + return true; +} template bool update_0d(T* v, int bitwidth) { @@ -253,6 +283,27 @@ bool update_3d(T* v, int bitwidth) { set_uint(v + unit * ((3 * 3 + 0) * 2 + 0), 52, bitwidth); return true; } +template +bool update_1d1(T* v, int bitwidth) { + const int unit = (bitwidth + 31) / 32; + if (!compare(v, 52, bitwidth)) return false; + set_uint(v, 53, bitwidth); + return true; +} +template +bool update_2d1(T* v, int bitwidth) { + const int unit = (bitwidth + 31) / 32; + if (!compare(v, 53, bitwidth)) return false; + set_uint(v, 54, bitwidth); + return true; +} +template +bool update_3d1(T* v, int bitwidth) { + const int unit = (bitwidth + 31) / 32; + if (!compare(v, 54, bitwidth)) return false; + set_uint(v, 55, bitwidth); + return true; +} template void set_values(T (&v)[4][3][2]) { @@ -305,6 +356,18 @@ bool check_3d(const T (&v)[4][3][2]) { return compare(v[0][0][0], 49) && compare(v[1][0][0], 50) && compare(v[2][0][0], 51) && compare(v[3][0][0], 52); } +template +bool check_1d1(const T (&v)[1]) { + return compare(v[0], 53); +} +template +bool check_2d1(const T (&v)[1][1]) { + return compare(v[0][0], 54); +} +template +bool check_3d1(const T (&v)[1][1][1]) { + return compare(v[0][0][0], 55); +} template bool check_0d(const T (&v)[N], unsigned int bitwidth) { @@ -324,6 +387,18 @@ bool check_3d(const T (&v)[4][3][2][N], unsigned int bitwidth) { return compare(v[0][0][0], 49, bitwidth) && compare(v[1][0][0], 50, bitwidth) && compare(v[2][0][0], 51, bitwidth) && compare(v[3][0][0], 52, bitwidth); } +template +bool check_1d1(const T (&v)[1][N], unsigned int bitwidth) { + return compare(v[0], 53, bitwidth); +} +template +bool check_2d1(const T (&v)[1][1][N], unsigned int bitwidth) { + return compare(v[0][0], 54, bitwidth); +} +template +bool check_3d1(const T (&v)[1][1][1][N], unsigned int bitwidth) { + return compare(v[0][0][0], 55, bitwidth); +} } // unnamed namespace @@ -344,6 +419,15 @@ void i_byte_2d(char* v) { void i_byte_3d(char* v) { if (!update_3d(v)) stop(); } +void i_byte_1d1(char* v) { + if (!update_1d1(v)) stop(); +} +void i_byte_2d1(char* v) { + if (!update_2d1(v)) stop(); +} +void i_byte_3d1(char* v) { + if (!update_3d1(v)) stop(); +} void i_byte_unsigned_0d(unsigned char* v) { if (!update_0d(v)) stop(); @@ -357,6 +441,15 @@ void i_byte_unsigned_2d(unsigned char* v) { void i_byte_unsigned_3d(unsigned char* v) { if (!update_3d(v)) stop(); } +void i_byte_unsigned_1d1(unsigned char* v) { + if (!update_1d1(v)) stop(); +} +void i_byte_unsigned_2d1(unsigned char* v) { + if (!update_2d1(v)) stop(); +} +void i_byte_unsigned_3d1(unsigned char* v) { + if (!update_3d1(v)) stop(); +} void i_shortint_0d(short* v) { if (!update_0d(v)) stop(); @@ -370,6 +463,15 @@ void i_shortint_2d(short* v) { void i_shortint_3d(short* v) { if (!update_3d(v)) stop(); } +void i_shortint_1d1(short* v) { + if (!update_1d1(v)) stop(); +} +void i_shortint_2d1(short* v) { + if (!update_2d1(v)) stop(); +} +void i_shortint_3d1(short* v) { + if (!update_3d1(v)) stop(); +} void i_shortint_unsigned_0d(unsigned short* v) { if (!update_0d(v)) stop(); @@ -383,6 +485,15 @@ void i_shortint_unsigned_2d(unsigned short* v) { void i_shortint_unsigned_3d(unsigned short* v) { if (!update_3d(v)) stop(); } +void i_shortint_unsigned_1d1(unsigned short* v) { + if (!update_1d1(v)) stop(); +} +void i_shortint_unsigned_2d1(unsigned short* v) { + if (!update_2d1(v)) stop(); +} +void i_shortint_unsigned_3d1(unsigned short* v) { + if (!update_3d1(v)) stop(); +} void i_int_0d(int* v) { if (!update_0d(v)) stop(); @@ -396,6 +507,15 @@ void i_int_2d(int* v) { void i_int_3d(int* v) { if (!update_3d(v)) stop(); } +void i_int_1d1(int* v) { + if (!update_1d1(v)) stop(); +} +void i_int_2d1(int* v) { + if (!update_2d1(v)) stop(); +} +void i_int_3d1(int* v) { + if (!update_3d1(v)) stop(); +} void i_int_unsigned_0d(unsigned int* v) { if (!update_0d(v)) stop(); @@ -409,6 +529,15 @@ void i_int_unsigned_2d(unsigned int* v) { void i_int_unsigned_3d(unsigned int* v) { if (!update_3d(v)) stop(); } +void i_int_unsigned_1d1(unsigned int* v) { + if (!update_1d1(v)) stop(); +} +void i_int_unsigned_2d1(unsigned int* v) { + if (!update_2d1(v)) stop(); +} +void i_int_unsigned_3d1(unsigned int* v) { + if (!update_3d1(v)) stop(); +} void i_longint_0d(sv_longint_t* v) { if (!update_0d(v)) stop(); @@ -422,6 +551,15 @@ void i_longint_2d(sv_longint_t* v) { void i_longint_3d(sv_longint_t* v) { if (!update_3d(v)) stop(); } +void i_longint_1d1(sv_longint_t* v) { + if (!update_1d1(v)) stop(); +} +void i_longint_2d1(sv_longint_t* v) { + if (!update_2d1(v)) stop(); +} +void i_longint_3d1(sv_longint_t* v) { + if (!update_3d1(v)) stop(); +} void i_longint_unsigned_0d(sv_longint_unsigned_t* v) { if (!update_0d(v)) stop(); @@ -435,6 +573,15 @@ void i_longint_unsigned_2d(sv_longint_unsigned_t* v) { void i_longint_unsigned_3d(sv_longint_unsigned_t* v) { if (!update_3d(v)) stop(); } +void i_longint_unsigned_1d1(sv_longint_unsigned_t* v) { + if (!update_1d1(v)) stop(); +} +void i_longint_unsigned_2d1(sv_longint_unsigned_t* v) { + if (!update_2d1(v)) stop(); +} +void i_longint_unsigned_3d1(sv_longint_unsigned_t* v) { + if (!update_3d1(v)) stop(); +} #ifndef NO_TIME void i_time_0d(svLogicVecVal* v) { @@ -449,6 +596,15 @@ void i_time_2d(svLogicVecVal* v) { void i_time_3d(svLogicVecVal* v) { if (!update_3d(v, 64)) stop(); } +void i_time_1d1(svLogicVecVal* v) { + if (!update_1d1(v, 64)) stop(); +} +void i_time_2d1(svLogicVecVal* v) { + if (!update_2d1(v, 64)) stop(); +} +void i_time_3d1(svLogicVecVal* v) { + if (!update_3d1(v, 64)) stop(); +} #endif #ifndef NO_INTEGER @@ -464,18 +620,33 @@ void i_integer_2d(svLogicVecVal* v) { void i_integer_3d(svLogicVecVal* v) { if (!update_3d(v, 32)) stop(); } +void i_integer_1d1(svLogicVecVal* v) { + if (!update_1d1(v, 32)) stop(); +} +void i_integer_2d1(svLogicVecVal* v) { + if (!update_2d1(v, 32)) stop(); +} +void i_integer_3d1(svLogicVecVal* v) { + if (!update_3d1(v, 32)) stop(); +} #endif void i_real_0d(double* v) { update_0d(v); } void i_real_1d(double* v) { update_1d(v); } void i_real_2d(double* v) { update_2d(v); } void i_real_3d(double* v) { update_3d(v); } +void i_real_1d1(double* v) { update_1d1(v); } +void i_real_2d1(double* v) { update_2d1(v); } +void i_real_3d1(double* v) { update_3d1(v); } #ifndef NO_SHORTREAL void i_shortreal_0d(float* v) { update_0d(v); } void i_shortreal_1d(float* v) { update_1d(v); } void i_shortreal_2d(float* v) { update_2d(v); } void i_shortreal_3d(float* v) { update_3d(v); } +void i_shortreal_1d1(float* v) { update_1d1(v); } +void i_shortreal_2d1(float* v) { update_2d1(v); } +void i_shortreal_3d1(float* v) { update_3d1(v); } #endif void i_chandle_0d(void** v) { @@ -506,6 +677,18 @@ void i_chandle_3d(void** v) { v[(2 * 3 + 0) * 2 + 0] = get_non_null(); v[(3 * 3 + 0) * 2 + 0] = get_non_null(); } +void i_chandle_1d1(void** v) { + if (v[0]) stop(); + v[0] = get_non_null(); +} +void i_chandle_2d1(void** v) { + if (v[0]) stop(); + v[0] = get_non_null(); +} +void i_chandle_3d1(void** v) { + if (v[0]) stop(); + v[0] = get_non_null(); +} void i_string_0d(const char** v) { static const char s[] = "43"; @@ -545,41 +728,77 @@ void i_string_3d(const char** v) { v[(2 * 3 + 0) * 2 + 0] = s2; v[(3 * 3 + 0) * 2 + 0] = s3; } +void i_string_1d1(const char** v) { + static const char s0[] = "53"; + if (!compare(v[0], "52")) stop(); + v[0] = s0; +} +void i_string_2d1(const char** v) { + static const char s0[] = "54"; + if (!compare(v[0], "53")) stop(); + v[0] = s0; +} +void i_string_3d1(const char** v) { + static const char s0[] = "55"; + if (!compare(v[0], "54")) stop(); + v[0] = s0; +} void i_bit1_0d(svBit* v) { update_0d_scalar(v); } void i_bit1_1d(svBit* v) { update_1d_scalar(v); } void i_bit1_2d(svBit* v) { update_2d_scalar(v); } void i_bit1_3d(svBit* v) { update_3d_scalar(v); } +void i_bit1_1d1(svBit* v) { update_1d1_scalar(v); } +void i_bit1_2d1(svBit* v) { update_2d1_scalar(v); } +void i_bit1_3d1(svBit* v) { update_3d1_scalar(v); } void i_bit7_0d(svBitVecVal* v) { update_0d(v, 7); } void i_bit7_1d(svBitVecVal* v) { update_1d(v, 7); } void i_bit7_2d(svBitVecVal* v) { update_2d(v, 7); } void i_bit7_3d(svBitVecVal* v) { update_3d(v, 7); } +void i_bit7_1d1(svBitVecVal* v) { update_1d1(v, 7); } +void i_bit7_2d1(svBitVecVal* v) { update_2d1(v, 7); } +void i_bit7_3d1(svBitVecVal* v) { update_3d1(v, 7); } void i_bit121_0d(svBitVecVal* v) { update_0d(v, 121); } void i_bit121_1d(svBitVecVal* v) { update_1d(v, 121); } void i_bit121_2d(svBitVecVal* v) { update_2d(v, 121); } void i_bit121_3d(svBitVecVal* v) { update_3d(v, 121); } +void i_bit121_1d1(svBitVecVal* v) { update_1d1(v, 121); } +void i_bit121_2d1(svBitVecVal* v) { update_2d1(v, 121); } +void i_bit121_3d1(svBitVecVal* v) { update_3d1(v, 121); } void i_logic1_0d(svLogic* v) { update_0d_scalar(v); } void i_logic1_1d(svLogic* v) { update_1d_scalar(v); } void i_logic1_2d(svLogic* v) { update_2d_scalar(v); } void i_logic1_3d(svLogic* v) { update_3d_scalar(v); } +void i_logic1_1d1(svLogic* v) { update_1d1_scalar(v); } +void i_logic1_2d1(svLogic* v) { update_2d1_scalar(v); } +void i_logic1_3d1(svLogic* v) { update_3d1_scalar(v); } void i_logic7_0d(svLogicVecVal* v) { update_0d(v, 7); } void i_logic7_1d(svLogicVecVal* v) { update_1d(v, 7); } void i_logic7_2d(svLogicVecVal* v) { update_2d(v, 7); } void i_logic7_3d(svLogicVecVal* v) { update_3d(v, 7); } +void i_logic7_1d1(svLogicVecVal* v) { update_1d1(v, 7); } +void i_logic7_2d1(svLogicVecVal* v) { update_2d1(v, 7); } +void i_logic7_3d1(svLogicVecVal* v) { update_3d1(v, 7); } void i_logic121_0d(svLogicVecVal* v) { update_0d(v, 121); } void i_logic121_1d(svLogicVecVal* v) { update_1d(v, 121); } void i_logic121_2d(svLogicVecVal* v) { update_2d(v, 121); } void i_logic121_3d(svLogicVecVal* v) { update_3d(v, 121); } +void i_logic121_1d1(svLogicVecVal* v) { update_1d1(v, 121); } +void i_logic121_2d1(svLogicVecVal* v) { update_2d1(v, 121); } +void i_logic121_3d1(svLogicVecVal* v) { update_3d1(v, 121); } void i_pack_struct_0d(svLogicVecVal* v) { update_0d(v, 7); } void i_pack_struct_1d(svLogicVecVal* v) { update_1d(v, 7); } void i_pack_struct_2d(svLogicVecVal* v) { update_2d(v, 7); } void i_pack_struct_3d(svLogicVecVal* v) { update_3d(v, 7); } +void i_pack_struct_1d1(svLogicVecVal* v) { update_1d1(v, 7); } +void i_pack_struct_2d1(svLogicVecVal* v) { update_2d1(v, 7); } +void i_pack_struct_3d1(svLogicVecVal* v) { update_3d1(v, 7); } #ifndef NO_UNPACK_STRUCT void i_unpack_struct_0d(unpack_struct_t* v) { @@ -610,326 +829,576 @@ void i_unpack_struct_3d(unpack_struct_t* v) { set_uint(v[(2 * 3 + 0) * 2 + 0].val, 51, 121); set_uint(v[(3 * 3 + 0) * 2 + 0].val, 52, 121); } +void i_unpack_struct_1d1(unpack_struct_t* v) { + if (!compare(v[0].val, 52, 121)) stop(); + set_uint(v[0].val, 53, 121); +} +void i_unpack_struct_2d(unpack_struct_t* v) { + if (!compare(v[0].val, 53, 121)) stop(); + set_uint(v[0].val, 54, 121); +} +void i_unpack_struct_3d(unpack_struct_t* v) { + if (!compare(v[0].val, 54, 121)) stop(); + set_uint(v[0].val, 55, 121); #endif -void check_exports() { - { - char byte_array[4][3][2]; - set_values(byte_array); - e_byte_0d(&byte_array[3][2][1]); - if (!check_0d(byte_array[3][2][1])) stop(); - e_byte_1d(&byte_array[2][1][0]); - if (!check_1d(byte_array[2][1])) stop(); - e_byte_2d(&byte_array[1][0][0]); - if (!check_2d(byte_array[1])) stop(); - e_byte_3d(&byte_array[0][0][0]); - if (!check_3d(byte_array)) stop(); - } - { - unsigned char byte_unsigned_array[4][3][2]; - set_values(byte_unsigned_array); - e_byte_unsigned_0d(&byte_unsigned_array[3][2][1]); - if (!check_0d(byte_unsigned_array[3][2][1])) stop(); - e_byte_unsigned_1d(&byte_unsigned_array[2][1][0]); - if (!check_1d(byte_unsigned_array[2][1])) stop(); - e_byte_unsigned_2d(&byte_unsigned_array[1][0][0]); - if (!check_2d(byte_unsigned_array[1])) stop(); - e_byte_unsigned_3d(&byte_unsigned_array[0][0][0]); - if (!check_3d(byte_unsigned_array)) stop(); - } - { - short shortint_array[4][3][2]; - set_values(shortint_array); - e_shortint_0d(&shortint_array[3][2][1]); - if (!check_0d(shortint_array[3][2][1])) stop(); - e_shortint_1d(&shortint_array[2][1][0]); - if (!check_1d(shortint_array[2][1])) stop(); - e_shortint_2d(&shortint_array[1][0][0]); - if (!check_2d(shortint_array[1])) stop(); - e_shortint_3d(&shortint_array[0][0][0]); - if (!check_3d(shortint_array)) stop(); - } - { - unsigned short shortint_unsigned_array[4][3][2]; - set_values(shortint_unsigned_array); - e_shortint_unsigned_0d(&shortint_unsigned_array[3][2][1]); - if (!check_0d(shortint_unsigned_array[3][2][1])) stop(); - e_shortint_unsigned_1d(&shortint_unsigned_array[2][1][0]); - if (!check_1d(shortint_unsigned_array[2][1])) stop(); - e_shortint_unsigned_2d(&shortint_unsigned_array[1][0][0]); - if (!check_2d(shortint_unsigned_array[1])) stop(); - e_shortint_unsigned_3d(&shortint_unsigned_array[0][0][0]); - if (!check_3d(shortint_unsigned_array)) stop(); - } + void check_exports() { + { + char byte_array[4][3][2]; + set_values(byte_array); + e_byte_0d(&byte_array[3][2][1]); + if (!check_0d(byte_array[3][2][1])) stop(); + e_byte_1d(&byte_array[2][1][0]); + if (!check_1d(byte_array[2][1])) stop(); + e_byte_2d(&byte_array[1][0][0]); + if (!check_2d(byte_array[1])) stop(); + e_byte_3d(&byte_array[0][0][0]); + if (!check_3d(byte_array)) stop(); + } + { + char array[1][1][1]; + array[0][0][0] = 52; + e_byte_1d1(&array[0][0][0]); + if (!check_1d1(array[0][0])) stop(); + array[0][0][0] = 53; + e_byte_2d1(&array[0][0][0]); + if (!check_2d1(array[0])) stop(); + array[0][0][0] = 54; + e_byte_3d1(&array[0][0][0]); + if (!check_3d1(array)) stop(); + } + { + unsigned char byte_unsigned_array[4][3][2]; + set_values(byte_unsigned_array); + e_byte_unsigned_0d(&byte_unsigned_array[3][2][1]); + if (!check_0d(byte_unsigned_array[3][2][1])) stop(); + e_byte_unsigned_1d(&byte_unsigned_array[2][1][0]); + if (!check_1d(byte_unsigned_array[2][1])) stop(); + e_byte_unsigned_2d(&byte_unsigned_array[1][0][0]); + if (!check_2d(byte_unsigned_array[1])) stop(); + e_byte_unsigned_3d(&byte_unsigned_array[0][0][0]); + if (!check_3d(byte_unsigned_array)) stop(); + } + { + unsigned char array[1][1][1]; + array[0][0][0] = 52; + e_byte_unsigned_1d1(&array[0][0][0]); + if (!check_1d1(array[0][0])) stop(); + array[0][0][0] = 53; + e_byte_unsigned_2d1(&array[0][0][0]); + if (!check_2d1(array[0])) stop(); + array[0][0][0] = 54; + e_byte_unsigned_3d1(&array[0][0][0]); + if (!check_3d1(array)) stop(); + } + { + short shortint_array[4][3][2]; + set_values(shortint_array); + e_shortint_0d(&shortint_array[3][2][1]); + if (!check_0d(shortint_array[3][2][1])) stop(); + e_shortint_1d(&shortint_array[2][1][0]); + if (!check_1d(shortint_array[2][1])) stop(); + e_shortint_2d(&shortint_array[1][0][0]); + if (!check_2d(shortint_array[1])) stop(); + e_shortint_3d(&shortint_array[0][0][0]); + if (!check_3d(shortint_array)) stop(); + } + { + short array[1][1][1]; + array[0][0][0] = 52; + e_shortint_1d1(&array[0][0][0]); + if (!check_1d1(array[0][0])) stop(); + array[0][0][0] = 53; + e_shortint_2d1(&array[0][0][0]); + if (!check_2d1(array[0])) stop(); + array[0][0][0] = 54; + e_shortint_3d1(&array[0][0][0]); + if (!check_3d1(array)) stop(); + } + { + unsigned short shortint_unsigned_array[4][3][2]; + set_values(shortint_unsigned_array); + e_shortint_unsigned_0d(&shortint_unsigned_array[3][2][1]); + if (!check_0d(shortint_unsigned_array[3][2][1])) stop(); + e_shortint_unsigned_1d(&shortint_unsigned_array[2][1][0]); + if (!check_1d(shortint_unsigned_array[2][1])) stop(); + e_shortint_unsigned_2d(&shortint_unsigned_array[1][0][0]); + if (!check_2d(shortint_unsigned_array[1])) stop(); + e_shortint_unsigned_3d(&shortint_unsigned_array[0][0][0]); + if (!check_3d(shortint_unsigned_array)) stop(); + } + { + unsigned short array[1][1][1]; + array[0][0][0] = 52; + e_shortint_unsigned_1d1(&array[0][0][0]); + if (!check_1d1(array[0][0])) stop(); + array[0][0][0] = 53; + e_shortint_unsigned_2d1(&array[0][0][0]); + if (!check_2d1(array[0])) stop(); + array[0][0][0] = 54; + e_shortint_unsigned_3d1(&array[0][0][0]); + if (!check_3d1(array)) stop(); + } - { - int int_array[4][3][2]; - set_values(int_array); - e_int_0d(&int_array[3][2][1]); - if (!check_0d(int_array[3][2][1])) stop(); - e_int_1d(&int_array[2][1][0]); - if (!check_1d(int_array[2][1])) stop(); - e_int_2d(&int_array[1][0][0]); - if (!check_2d(int_array[1])) stop(); - e_int_3d(&int_array[0][0][0]); - if (!check_3d(int_array)) stop(); - } - { - unsigned int int_unsigned_array[4][3][2]; - set_values(int_unsigned_array); - e_int_unsigned_0d(&int_unsigned_array[3][2][1]); - if (!check_0d(int_unsigned_array[3][2][1])) stop(); - e_int_unsigned_1d(&int_unsigned_array[2][1][0]); - if (!check_1d(int_unsigned_array[2][1])) stop(); - e_int_unsigned_2d(&int_unsigned_array[1][0][0]); - if (!check_2d(int_unsigned_array[1])) stop(); - e_int_unsigned_3d(&int_unsigned_array[0][0][0]); - if (!check_3d(int_unsigned_array)) stop(); - } - - { - sv_longint_t longint_array[4][3][2]; - set_values(longint_array); - e_longint_0d(&longint_array[3][2][1]); - if (!check_0d(longint_array[3][2][1])) stop(); - e_longint_1d(&longint_array[2][1][0]); - if (!check_1d(longint_array[2][1])) stop(); - e_longint_2d(&longint_array[1][0][0]); - if (!check_2d(longint_array[1])) stop(); - e_longint_3d(&longint_array[0][0][0]); - if (!check_3d(longint_array)) stop(); - } - { - sv_longint_unsigned_t longint_unsigned_array[4][3][2]; - set_values(longint_unsigned_array); - e_longint_unsigned_0d(&longint_unsigned_array[3][2][1]); - if (!check_0d(longint_unsigned_array[3][2][1])) stop(); - e_longint_unsigned_1d(&longint_unsigned_array[2][1][0]); - if (!check_1d(longint_unsigned_array[2][1])) stop(); - e_longint_unsigned_2d(&longint_unsigned_array[1][0][0]); - if (!check_2d(longint_unsigned_array[1])) stop(); - e_longint_unsigned_3d(&longint_unsigned_array[0][0][0]); - if (!check_3d(longint_unsigned_array)) stop(); - } + { + int int_array[4][3][2]; + set_values(int_array); + e_int_0d(&int_array[3][2][1]); + if (!check_0d(int_array[3][2][1])) stop(); + e_int_1d(&int_array[2][1][0]); + if (!check_1d(int_array[2][1])) stop(); + e_int_2d(&int_array[1][0][0]); + if (!check_2d(int_array[1])) stop(); + e_int_3d(&int_array[0][0][0]); + if (!check_3d(int_array)) stop(); + } + { + int array[1][1][1]; + array[0][0][0] = 52; + e_int_1d1(&array[0][0][0]); + if (!check_1d1(array[0][0])) stop(); + array[0][0][0] = 53; + e_int_2d1(&array[0][0][0]); + if (!check_2d1(array[0])) stop(); + array[0][0][0] = 54; + e_int_3d1(&array[0][0][0]); + if (!check_3d1(array)) stop(); + } + { + unsigned int int_unsigned_array[4][3][2]; + set_values(int_unsigned_array); + e_int_unsigned_0d(&int_unsigned_array[3][2][1]); + if (!check_0d(int_unsigned_array[3][2][1])) stop(); + e_int_unsigned_1d(&int_unsigned_array[2][1][0]); + if (!check_1d(int_unsigned_array[2][1])) stop(); + e_int_unsigned_2d(&int_unsigned_array[1][0][0]); + if (!check_2d(int_unsigned_array[1])) stop(); + e_int_unsigned_3d(&int_unsigned_array[0][0][0]); + if (!check_3d(int_unsigned_array)) stop(); + } + { + unsigned int array[1][1][1]; + array[0][0][0] = 52; + e_int_unsigned_1d1(&array[0][0][0]); + if (!check_1d1(array[0][0])) stop(); + array[0][0][0] = 53; + e_int_unsigned_2d1(&array[0][0][0]); + if (!check_2d1(array[0])) stop(); + array[0][0][0] = 54; + e_int_unsigned_3d1(&array[0][0][0]); + if (!check_3d1(array)) stop(); + } + { + sv_longint_t longint_array[4][3][2]; + set_values(longint_array); + e_longint_0d(&longint_array[3][2][1]); + if (!check_0d(longint_array[3][2][1])) stop(); + e_longint_1d(&longint_array[2][1][0]); + if (!check_1d(longint_array[2][1])) stop(); + e_longint_2d(&longint_array[1][0][0]); + if (!check_2d(longint_array[1])) stop(); + e_longint_3d(&longint_array[0][0][0]); + if (!check_3d(longint_array)) stop(); + } + { + sv_longint_t array[1][1][1]; + array[0][0][0] = 52; + e_longint_1d1(&array[0][0][0]); + if (!check_1d1(array[0][0])) stop(); + array[0][0][0] = 53; + e_longint_2d1(&array[0][0][0]); + if (!check_2d1(array[0])) stop(); + array[0][0][0] = 54; + e_longint_3d1(&array[0][0][0]); + if (!check_3d1(array)) stop(); + } + { + sv_longint_unsigned_t longint_unsigned_array[4][3][2]; + set_values(longint_unsigned_array); + e_longint_unsigned_0d(&longint_unsigned_array[3][2][1]); + if (!check_0d(longint_unsigned_array[3][2][1])) stop(); + e_longint_unsigned_1d(&longint_unsigned_array[2][1][0]); + if (!check_1d(longint_unsigned_array[2][1])) stop(); + e_longint_unsigned_2d(&longint_unsigned_array[1][0][0]); + if (!check_2d(longint_unsigned_array[1])) stop(); + e_longint_unsigned_3d(&longint_unsigned_array[0][0][0]); + if (!check_3d(longint_unsigned_array)) stop(); + } + { + sv_longint_unsigned_t array[1][1][1]; + array[0][0][0] = 52; + e_longint_unsigned_1d1(&array[0][0][0]); + if (!check_1d1(array[0][0])) stop(); + array[0][0][0] = 53; + e_longint_unsigned_2d1(&array[0][0][0]); + if (!check_2d1(array[0])) stop(); + array[0][0][0] = 54; + e_longint_unsigned_3d1(&array[0][0][0]); + if (!check_3d1(array)) stop(); + } #ifndef NO_TIME - { - svLogicVecVal time_array[4][3][2][2]; - set_values(time_array, 64); - e_time_0d(time_array[3][2][1]); - if (!check_0d(time_array[3][2][1], 64)) stop(); - e_time_1d(time_array[2][1][0]); - if (!check_1d(time_array[2][1], 64)) stop(); - e_time_2d(time_array[1][0][0]); - if (!check_2d(time_array[1], 64)) stop(); - e_time_3d(time_array[0][0][0]); - if (!check_3d(time_array, 64)) stop(); - } + { + svLogicVecVal time_array[4][3][2][2]; + set_values(time_array, 64); + e_time_0d(time_array[3][2][1]); + if (!check_0d(time_array[3][2][1], 64)) stop(); + e_time_1d(time_array[2][1][0]); + if (!check_1d(time_array[2][1], 64)) stop(); + e_time_2d(time_array[1][0][0]); + if (!check_2d(time_array[1], 64)) stop(); + e_time_3d(time_array[0][0][0]); + if (!check_3d(time_array, 64)) stop(); + } + { + svLogicVecVal array[1][1][1][2]; + set_uint(array[0][0][0], 52, 64); + e_time_1d1(array[0][0][0]); + if (!check_1d1(array[0][0], 64)) stop(); + set_uint(array[0][0][0], 53, 64); + e_time_2d1(array[0][0][0]); + if (!check_2d1(array[0], 64)) stop(); + set_uint(array[0][0][0], 54, 64); + e_time_3d1(array[0][0][0]); + if (!check_3d1(array, 64)) stop(); + } #endif #ifndef NO_INTEGER - { - svLogicVecVal integer_array[4][3][2][1]; - set_values(integer_array, 32); - e_integer_0d(integer_array[3][2][1]); - if (!check_0d(integer_array[3][2][1], 32)) stop(); - e_integer_1d(integer_array[2][1][0]); - if (!check_1d(integer_array[2][1], 32)) stop(); - e_integer_2d(integer_array[1][0][0]); - if (!check_2d(integer_array[1], 32)) stop(); - e_integer_3d(integer_array[0][0][0]); - if (!check_3d(integer_array, 32)) stop(); - } + { + svLogicVecVal integer_array[4][3][2][1]; + set_values(integer_array, 32); + e_integer_0d(integer_array[3][2][1]); + if (!check_0d(integer_array[3][2][1], 32)) stop(); + e_integer_1d(integer_array[2][1][0]); + if (!check_1d(integer_array[2][1], 32)) stop(); + e_integer_2d(integer_array[1][0][0]); + if (!check_2d(integer_array[1], 32)) stop(); + e_integer_3d(integer_array[0][0][0]); + if (!check_3d(integer_array, 32)) stop(); + } + { + svLogicVecVal array[1][1][1][1]; + set_uint(array[0][0][0], 52, 22); + e_integer_1d1(array[0][0][0]); + if (!check_1d1(array[0][0], 32)) stop(); + set_uint(array[0][0][0], 53, 32); + e_integer_2d1(array[0][0][0]); + if (!check_2d1(array[0], 32)) stop(); + set_uint(array[0][0][0], 54, 32); + e_integer_3d1(array[0][0][0]); + if (!check_3d1(array, 32)) stop(); + } #endif - { - double real_array[4][3][2]; - set_values(real_array); - e_real_0d(&real_array[3][2][1]); - if (!check_0d(real_array[3][2][1])) stop(); - e_real_1d(&real_array[2][1][0]); - if (!check_1d(real_array[2][1])) stop(); - e_real_2d(&real_array[1][0][0]); - if (!check_2d(real_array[1])) stop(); - e_real_3d(&real_array[0][0][0]); - if (!check_3d(real_array)) stop(); - } + { + double real_array[4][3][2]; + set_values(real_array); + e_real_0d(&real_array[3][2][1]); + if (!check_0d(real_array[3][2][1])) stop(); + e_real_1d(&real_array[2][1][0]); + if (!check_1d(real_array[2][1])) stop(); + e_real_2d(&real_array[1][0][0]); + if (!check_2d(real_array[1])) stop(); + e_real_3d(&real_array[0][0][0]); + if (!check_3d(real_array)) stop(); + } + { + double array[1][1][1]; + array[0][0][0] = 52; + e_real_1d1(&array[0][0][0]); + if (!check_1d1(array[0][0])) stop(); + array[0][0][0] = 53; + e_real_2d1(&array[0][0][0]); + if (!check_2d1(array[0])) stop(); + array[0][0][0] = 54; + e_real_3d1(&array[0][0][0]); + if (!check_3d1(array)) stop(); + } #ifndef NO_SHORTREAL - { - float shortreal_array[4][3][2]; - set_values(shortreal_array); - e_shortreal_0d(&shortreal_array[3][2][1]); - if (!check_0d(shortreal_array[3][2][1])) stop(); - e_shortreal_1d(&shortreal_array[2][1][0]); - if (!check_1d(shortreal_array[2][1])) stop(); - e_shortreal_2d(&shortreal_array[1][0][0]); - if (!check_2d(shortreal_array[1])) stop(); - e_shortreal_3d(&shortreal_array[0][0][0]); - if (!check_3d(shortreal_array)) stop(); - } + { + float shortreal_array[4][3][2]; + set_values(shortreal_array); + e_shortreal_0d(&shortreal_array[3][2][1]); + if (!check_0d(shortreal_array[3][2][1])) stop(); + e_shortreal_1d(&shortreal_array[2][1][0]); + if (!check_1d(shortreal_array[2][1])) stop(); + e_shortreal_2d(&shortreal_array[1][0][0]); + if (!check_2d(shortreal_array[1])) stop(); + e_shortreal_3d(&shortreal_array[0][0][0]); + if (!check_3d(shortreal_array)) stop(); + } + { + float array[1][1][1]; + array[0][0][0] = 52; + e_shortreal_1d1(&array[0][0][0]); + if (!check_1d1(array[0][0])) stop(); + array[0][0][0] = 53; + e_shortreal_2d1(&array[0][0][0]); + if (!check_2d1(array[0])) stop(); + array[0][0][0] = 54; + e_shortreal_3d1(&array[0][0][0]); + if (!check_3d1(array)) stop(); + } #endif - { - void* chandle_array[4][3][2]; - for (int i = 0; i < 4; ++i) - for (int j = 0; j < 3; ++j) - for (int k = 0; k < 2; ++k) chandle_array[i][j][k] = NULL; - chandle_array[3][2][1] = get_non_null(); - e_chandle_0d(&chandle_array[3][2][1]); - if (chandle_array[3][2][1]) stop(); + { + void* chandle_array[4][3][2]; + for (int i = 0; i < 4; ++i) + for (int j = 0; j < 3; ++j) + for (int k = 0; k < 2; ++k) chandle_array[i][j][k] = NULL; + chandle_array[3][2][1] = get_non_null(); + e_chandle_0d(&chandle_array[3][2][1]); + if (chandle_array[3][2][1]) stop(); - chandle_array[2][1][0] = get_non_null(); - chandle_array[2][1][1] = get_non_null(); - e_chandle_1d(&chandle_array[2][1][0]); - if (chandle_array[2][1][0]) stop(); - if (chandle_array[2][1][1]) stop(); + chandle_array[2][1][0] = get_non_null(); + chandle_array[2][1][1] = get_non_null(); + e_chandle_1d(&chandle_array[2][1][0]); + if (chandle_array[2][1][0]) stop(); + if (chandle_array[2][1][1]) stop(); - chandle_array[1][0][1] = get_non_null(); - chandle_array[1][1][1] = get_non_null(); - chandle_array[1][2][1] = get_non_null(); - e_chandle_2d(&chandle_array[1][0][0]); - if (chandle_array[1][0][1]) stop(); - if (chandle_array[1][1][1]) stop(); - if (chandle_array[1][2][1]) stop(); + chandle_array[1][0][1] = get_non_null(); + chandle_array[1][1][1] = get_non_null(); + chandle_array[1][2][1] = get_non_null(); + e_chandle_2d(&chandle_array[1][0][0]); + if (chandle_array[1][0][1]) stop(); + if (chandle_array[1][1][1]) stop(); + if (chandle_array[1][2][1]) stop(); - chandle_array[0][0][0] = get_non_null(); - chandle_array[1][0][0] = get_non_null(); - chandle_array[2][0][0] = get_non_null(); - chandle_array[3][0][0] = get_non_null(); - e_chandle_3d(&chandle_array[0][0][0]); - if (chandle_array[0][0][0]) stop(); - if (chandle_array[1][0][0]) stop(); - if (chandle_array[2][0][0]) stop(); - if (chandle_array[3][0][0]) stop(); - } + chandle_array[0][0][0] = get_non_null(); + chandle_array[1][0][0] = get_non_null(); + chandle_array[2][0][0] = get_non_null(); + chandle_array[3][0][0] = get_non_null(); + e_chandle_3d(&chandle_array[0][0][0]); + if (chandle_array[0][0][0]) stop(); + if (chandle_array[1][0][0]) stop(); + if (chandle_array[2][0][0]) stop(); + if (chandle_array[3][0][0]) stop(); + } + { + void* array[1][1][1]; + array[0][0][0] = get_non_null(); + e_chandle_1d1(&array[0][0][0]); + if (array[0][0][0]) stop(); + array[0][0][0] = get_non_null(); + e_chandle_2d1(&array[0][0][0]); + if (array[0][0][0]) stop(); + array[0][0][0] = get_non_null(); + e_chandle_3d1(&array[0][0][0]); + if (array[0][0][0]) stop(); + } - { - const char* string_array[4][3][2]; - for (int i = 0; i < 4; ++i) - for (int j = 0; j < 3; ++j) - for (int k = 0; k < 2; ++k) string_array[i][j][k] = ""; - string_array[3][2][1] = "42"; - e_string_0d(&string_array[3][2][1]); - if (!compare(string_array[3][2][1], "43")) stop(); + { + const char* string_array[4][3][2]; + for (int i = 0; i < 4; ++i) + for (int j = 0; j < 3; ++j) + for (int k = 0; k < 2; ++k) string_array[i][j][k] = ""; + string_array[3][2][1] = "42"; + e_string_0d(&string_array[3][2][1]); + if (!compare(string_array[3][2][1], "43")) stop(); - string_array[2][1][0] = "43"; - string_array[2][1][1] = "44"; - e_string_1d(&string_array[2][1][0]); - if (!compare(string_array[2][1][0], "44")) stop(); - if (!compare(string_array[2][1][1], "45")) stop(); + string_array[2][1][0] = "43"; + string_array[2][1][1] = "44"; + e_string_1d(&string_array[2][1][0]); + if (!compare(string_array[2][1][0], "44")) stop(); + if (!compare(string_array[2][1][1], "45")) stop(); - string_array[1][0][1] = "45"; - string_array[1][1][1] = "46"; - string_array[1][2][1] = "47"; - e_string_2d(&string_array[1][0][0]); - if (!compare(string_array[1][0][1], "46")) stop(); - if (!compare(string_array[1][1][1], "47")) stop(); - if (!compare(string_array[1][2][1], "48")) stop(); + string_array[1][0][1] = "45"; + string_array[1][1][1] = "46"; + string_array[1][2][1] = "47"; + e_string_2d(&string_array[1][0][0]); + if (!compare(string_array[1][0][1], "46")) stop(); + if (!compare(string_array[1][1][1], "47")) stop(); + if (!compare(string_array[1][2][1], "48")) stop(); - string_array[0][0][0] = "48"; - string_array[1][0][0] = "49"; - string_array[2][0][0] = "50"; - string_array[3][0][0] = "51"; - e_string_3d(&string_array[0][0][0]); - if (!compare(string_array[0][0][0], "49")) stop(); - if (!compare(string_array[1][0][0], "50")) stop(); - if (!compare(string_array[2][0][0], "51")) stop(); - if (!compare(string_array[3][0][0], "52")) stop(); - } + string_array[0][0][0] = "48"; + string_array[1][0][0] = "49"; + string_array[2][0][0] = "50"; + string_array[3][0][0] = "51"; + e_string_3d(&string_array[0][0][0]); + if (!compare(string_array[0][0][0], "49")) stop(); + if (!compare(string_array[1][0][0], "50")) stop(); + if (!compare(string_array[2][0][0], "51")) stop(); + if (!compare(string_array[3][0][0], "52")) stop(); + } + { + const char* array[1][1][1]; + array[0][0][0] = "52"; + e_string_1d1(&array[0][0][0]); + if (!compare(array[0][0][0], "53")) stop(); + array[0][0][0] = "53"; + e_string_2d1(&array[0][0][0]); + if (!compare(array[0][0][0], "54")) stop(); + array[0][0][0] = "54"; + e_string_3d1(&array[0][0][0]); + if (!compare(array[0][0][0], "55")) stop(); + } - { - svBitVecVal bit7_array[4][3][2][1]; - set_values(bit7_array, 7); - e_bit7_0d(bit7_array[3][2][1]); - if (!check_0d(bit7_array[3][2][1], 7)) stop(); - e_bit7_1d(bit7_array[2][1][0]); - if (!check_1d(bit7_array[2][1], 7)) stop(); - e_bit7_2d(bit7_array[1][0][0]); - if (!check_2d(bit7_array[1], 7)) stop(); - e_bit7_3d(bit7_array[0][0][0]); - if (!check_3d(bit7_array, 7)) stop(); - } - { - svBitVecVal bit121_array[4][3][2][4]; - set_values(bit121_array, 121); - e_bit121_0d(bit121_array[3][2][1]); - if (!check_0d(bit121_array[3][2][1], 121)) stop(); - e_bit121_1d(bit121_array[2][1][0]); - if (!check_1d(bit121_array[2][1], 121)) stop(); - e_bit121_2d(bit121_array[1][0][0]); - if (!check_2d(bit121_array[1], 121)) stop(); - e_bit121_3d(bit121_array[0][0][0]); - if (!check_3d(bit121_array, 121)) stop(); - } + { + svBitVecVal bit7_array[4][3][2][1]; + set_values(bit7_array, 7); + e_bit7_0d(bit7_array[3][2][1]); + if (!check_0d(bit7_array[3][2][1], 7)) stop(); + e_bit7_1d(bit7_array[2][1][0]); + if (!check_1d(bit7_array[2][1], 7)) stop(); + e_bit7_2d(bit7_array[1][0][0]); + if (!check_2d(bit7_array[1], 7)) stop(); + e_bit7_3d(bit7_array[0][0][0]); + if (!check_3d(bit7_array, 7)) stop(); + } + { + svBitVecVal array[1][1][1][1]; + set_uint(array[0][0][0], 52, 7); + e_bit7_1d1(array[0][0][0]); + if (!check_1d1(array[0][0], 7)) stop(); + set_uint(array[0][0][0], 53, 7); + e_bit7_2d1(array[0][0][0]); + if (!check_2d1(array[0], 7)) stop(); + set_uint(array[0][0][0], 54, 7); + e_bit7_3d1(array[0][0][0]); + if (!check_3d1(array, 7)) stop(); + } + { + svBitVecVal bit121_array[4][3][2][4]; + set_values(bit121_array, 121); + e_bit121_0d(bit121_array[3][2][1]); + if (!check_0d(bit121_array[3][2][1], 121)) stop(); + e_bit121_1d(bit121_array[2][1][0]); + if (!check_1d(bit121_array[2][1], 121)) stop(); + e_bit121_2d(bit121_array[1][0][0]); + if (!check_2d(bit121_array[1], 121)) stop(); + e_bit121_3d(bit121_array[0][0][0]); + if (!check_3d(bit121_array, 121)) stop(); + } + { + svBitVecVal array[1][1][1][4]; + set_uint(array[0][0][0], 52, 121); + e_bit121_1d1(array[0][0][0]); + if (!check_1d1(array[0][0], 121)) stop(); + set_uint(array[0][0][0], 53, 121); + e_bit121_2d1(array[0][0][0]); + if (!check_2d1(array[0], 121)) stop(); + set_uint(array[0][0][0], 54, 121); + e_bit121_3d1(array[0][0][0]); + if (!check_3d1(array, 121)) stop(); + } - { - svLogicVecVal logic7_array[4][3][2][1]; - set_values(logic7_array, 7); - e_logic7_0d(logic7_array[3][2][1]); - if (!check_0d(logic7_array[3][2][1], 7)) stop(); - e_logic7_1d(logic7_array[2][1][0]); - if (!check_1d(logic7_array[2][1], 7)) stop(); - e_logic7_2d(logic7_array[1][0][0]); - if (!check_2d(logic7_array[1], 7)) stop(); - e_logic7_3d(logic7_array[0][0][0]); - if (!check_3d(logic7_array, 7)) stop(); - } - { - svLogicVecVal logic121_array[4][3][2][4]; - set_values(logic121_array, 121); - e_logic121_0d(logic121_array[3][2][1]); - if (!check_0d(logic121_array[3][2][1], 121)) stop(); - e_logic121_1d(logic121_array[2][1][0]); - if (!check_1d(logic121_array[2][1], 121)) stop(); - e_logic121_2d(logic121_array[1][0][0]); - if (!check_2d(logic121_array[1], 121)) stop(); - e_logic121_3d(logic121_array[0][0][0]); - if (!check_3d(logic121_array, 121)) stop(); - } + { + svLogicVecVal logic7_array[4][3][2][1]; + set_values(logic7_array, 7); + e_logic7_0d(logic7_array[3][2][1]); + if (!check_0d(logic7_array[3][2][1], 7)) stop(); + e_logic7_1d(logic7_array[2][1][0]); + if (!check_1d(logic7_array[2][1], 7)) stop(); + e_logic7_2d(logic7_array[1][0][0]); + if (!check_2d(logic7_array[1], 7)) stop(); + e_logic7_3d(logic7_array[0][0][0]); + if (!check_3d(logic7_array, 7)) stop(); + } + { + svLogicVecVal array[1][1][1][1]; + set_uint(array[0][0][0], 52, 7); + e_logic7_1d1(array[0][0][0]); + if (!check_1d1(array[0][0], 7)) stop(); + set_uint(array[0][0][0], 53, 7); + e_logic7_2d1(array[0][0][0]); + if (!check_2d1(array[0], 7)) stop(); + set_uint(array[0][0][0], 54, 7); + e_logic7_3d1(array[0][0][0]); + if (!check_3d1(array, 7)) stop(); + } + { + svLogicVecVal logic121_array[4][3][2][4]; + set_values(logic121_array, 121); + e_logic121_0d(logic121_array[3][2][1]); + if (!check_0d(logic121_array[3][2][1], 121)) stop(); + e_logic121_1d(logic121_array[2][1][0]); + if (!check_1d(logic121_array[2][1], 121)) stop(); + e_logic121_2d(logic121_array[1][0][0]); + if (!check_2d(logic121_array[1], 121)) stop(); + e_logic121_3d(logic121_array[0][0][0]); + if (!check_3d(logic121_array, 121)) stop(); + } + { + svLogicVecVal array[1][1][1][4]; + set_uint(array[0][0][0], 52, 121); + e_logic121_1d1(array[0][0][0]); + if (!check_1d1(array[0][0], 121)) stop(); + set_uint(array[0][0][0], 53, 121); + e_logic121_2d1(array[0][0][0]); + if (!check_2d1(array[0], 121)) stop(); + set_uint(array[0][0][0], 54, 121); + e_logic121_3d1(array[0][0][0]); + if (!check_3d1(array, 121)) stop(); + } - { - svLogicVecVal pack_struct_array[4][3][2][1]; - set_values(pack_struct_array, 7); - e_pack_struct_0d(pack_struct_array[3][2][1]); - if (!check_0d(pack_struct_array[3][2][1], 7)) stop(); - e_pack_struct_1d(pack_struct_array[2][1][0]); - if (!check_1d(pack_struct_array[2][1], 7)) stop(); - e_pack_struct_2d(pack_struct_array[1][0][0]); - if (!check_2d(pack_struct_array[1], 7)) stop(); - e_pack_struct_3d(pack_struct_array[0][0][0]); - if (!check_3d(pack_struct_array, 7)) stop(); - } + { + svLogicVecVal pack_struct_array[4][3][2][1]; + set_values(pack_struct_array, 7); + e_pack_struct_0d(pack_struct_array[3][2][1]); + if (!check_0d(pack_struct_array[3][2][1], 7)) stop(); + e_pack_struct_1d(pack_struct_array[2][1][0]); + if (!check_1d(pack_struct_array[2][1], 7)) stop(); + e_pack_struct_2d(pack_struct_array[1][0][0]); + if (!check_2d(pack_struct_array[1], 7)) stop(); + e_pack_struct_3d(pack_struct_array[0][0][0]); + if (!check_3d(pack_struct_array, 7)) stop(); + } + { + svLogicVecVal array[1][1][1][1]; + set_uint(array[0][0][0], 52, 7); + e_pack_struct_1d1(array[0][0][0]); + if (!check_1d1(array[0][0], 7)) stop(); + set_uint(array[0][0][0], 53, 7); + e_pack_struct_2d1(array[0][0][0]); + if (!check_2d1(array[0], 7)) stop(); + set_uint(array[0][0][0], 54, 7); + e_pack_struct_3d1(array[0][0][0]); + if (!check_3d1(array, 7)) stop(); + } #ifndef NO_UNPACK_STRUCT - { - unpack_struct_t unpack_struct_array[4][3][2]; - set_uint(unpack_struct_array[3][2][1].val, 42, 121); - e_unpack_struct_0d(&unpack_struct_array[3][2][1]); - if (!compare(unpack_struct_array[3][2][1].val, 43, 121)) stop(); + { + unpack_struct_t unpack_struct_array[4][3][2]; + set_uint(unpack_struct_array[3][2][1].val, 42, 121); + e_unpack_struct_0d(&unpack_struct_array[3][2][1]); + if (!compare(unpack_struct_array[3][2][1].val, 43, 121)) stop(); - set_uint(unpack_struct_array[2][1][0].val, 43, 121); - set_uint(unpack_struct_array[2][1][1].val, 44, 121); - e_unpack_struct_1d(&unpack_struct_array[2][1][0]); - if (!compare(unpack_struct_array[2][1][0].val, 44, 121)) stop(); - if (!compare(unpack_struct_array[2][1][1].val, 45, 121)) stop(); + set_uint(unpack_struct_array[2][1][0].val, 43, 121); + set_uint(unpack_struct_array[2][1][1].val, 44, 121); + e_unpack_struct_1d(&unpack_struct_array[2][1][0]); + if (!compare(unpack_struct_array[2][1][0].val, 44, 121)) stop(); + if (!compare(unpack_struct_array[2][1][1].val, 45, 121)) stop(); - set_uint(unpack_struct_array[1][0][1].val, 45, 121); - set_uint(unpack_struct_array[1][1][1].val, 46, 121); - set_uint(unpack_struct_array[1][2][1].val, 47, 121); - e_unpack_struct_2d(&unpack_struct_array[1][0][0]); - if (!compare(unpack_struct_array[1][0][1].val, 46, 121)) stop(); - if (!compare(unpack_struct_array[1][1][1].val, 47, 121)) stop(); - if (!compare(unpack_struct_array[1][2][1].val, 48, 121)) stop(); + set_uint(unpack_struct_array[1][0][1].val, 45, 121); + set_uint(unpack_struct_array[1][1][1].val, 46, 121); + set_uint(unpack_struct_array[1][2][1].val, 47, 121); + e_unpack_struct_2d(&unpack_struct_array[1][0][0]); + if (!compare(unpack_struct_array[1][0][1].val, 46, 121)) stop(); + if (!compare(unpack_struct_array[1][1][1].val, 47, 121)) stop(); + if (!compare(unpack_struct_array[1][2][1].val, 48, 121)) stop(); - set_uint(unpack_struct_array[0][0][0].val, 48, 121); - set_uint(unpack_struct_array[1][0][0].val, 49, 121); - set_uint(unpack_struct_array[2][0][0].val, 50, 121); - set_uint(unpack_struct_array[3][0][0].val, 51, 121); - e_unpack_struct_3d(&unpack_struct_array[0][0][0]); - if (!compare(unpack_struct_array[0][0][0].val, 49, 121)) stop(); - if (!compare(unpack_struct_array[1][0][0].val, 50, 121)) stop(); - if (!compare(unpack_struct_array[2][0][0].val, 51, 121)) stop(); - if (!compare(unpack_struct_array[3][0][0].val, 52, 121)) stop(); - } + set_uint(unpack_struct_array[0][0][0].val, 48, 121); + set_uint(unpack_struct_array[1][0][0].val, 49, 121); + set_uint(unpack_struct_array[2][0][0].val, 50, 121); + set_uint(unpack_struct_array[3][0][0].val, 51, 121); + e_unpack_struct_3d(&unpack_struct_array[0][0][0]); + if (!compare(unpack_struct_array[0][0][0].val, 49, 121)) stop(); + if (!compare(unpack_struct_array[1][0][0].val, 50, 121)) stop(); + if (!compare(unpack_struct_array[2][0][0].val, 51, 121)) stop(); + if (!compare(unpack_struct_array[3][0][0].val, 52, 121)) stop(); + } + { + unpack_struct_t array[1][1][1]; + set_uint(array[0][0][0].val, 52, 121); + e_unpack_struct_1d1(&array[0][0][0]); + if (!compare(array[0][0][0].val, 53, 121)) stop(); + set_uint(array[0][0][0].val, 53, 121); + e_unpack_struct_2d1(&array[0][0][0]); + if (!compare(array[0][0][0].val, 53, 121)) stop(); + set_uint(array[0][0][0].val, 53, 121); + e_unpack_struct_3d1(&array[0][0][0]); + if (!compare(array[0][0][0].val, 53, 121)) stop(); + } #endif -} + } diff --git a/test_regress/t/t_dpi_arg_inout_unpack.v b/test_regress/t/t_dpi_arg_inout_unpack.v index 9306f90f4..db24bdc37 100644 --- a/test_regress/t/t_dpi_arg_inout_unpack.v +++ b/test_regress/t/t_dpi_arg_inout_unpack.v @@ -57,26 +57,51 @@ end `define UPDATE_VAL(var, val) `CHECK_VAL(var, val); var += 1 -`define UPDATE_0D(val) `UPDATE_VAL(val, 42) -`define UPDATE_1D(val) `UPDATE_VAL(val[0], 43); \ -`UPDATE_VAL(val[1], 44) -`define UPDATE_2D(val) `UPDATE_VAL(val[0][1], 45); \ -`UPDATE_VAL(val[1][1], 46); \ -`UPDATE_VAL(val[2][1], 47) -`define UPDATE_3D(val) `UPDATE_VAL(val[0][0][0], 48); \ -`UPDATE_VAL(val[1][0][0], 49); \ -`UPDATE_VAL(val[2][0][0], 50); \ -`UPDATE_VAL(val[3][0][0], 51) -`define CHECK_0D(val) `CHECK_VAL((val), 43) -`define CHECK_1D(val) `CHECK_VAL(val[0], 44); \ -`CHECK_VAL(val[1], 45) -`define CHECK_2D(val) `CHECK_VAL(val[0][1], 46); \ -`CHECK_VAL(val[1][1], 47); `CHECK_VAL(val[2][1], 48) -`define CHECK_3D(val) `CHECK_VAL(val[0][0][0], 49); \ -`CHECK_VAL(val[1][0][0], 50); \ -`CHECK_VAL(val[2][0][0], 51); \ -`CHECK_VAL(val[3][0][0], 52) +`define UPDATE_0D(val) \ + `UPDATE_VAL(val, 42) +`define UPDATE_1D(val) \ + `UPDATE_VAL(val[0], 43); \ + `UPDATE_VAL(val[1], 44) +`define UPDATE_2D(val) \ + `UPDATE_VAL(val[0][1], 45); \ + `UPDATE_VAL(val[1][1], 46); \ + `UPDATE_VAL(val[2][1], 47) +`define UPDATE_3D(val) \ + `UPDATE_VAL(val[0][0][0], 48); \ + `UPDATE_VAL(val[1][0][0], 49); \ + `UPDATE_VAL(val[2][0][0], 50); \ + `UPDATE_VAL(val[3][0][0], 51) + +`define UPDATE_1D1(val) \ + `UPDATE_VAL(val[0], 52) +`define UPDATE_2D1(val) \ + `UPDATE_VAL(val[0][0], 53) +`define UPDATE_3D1(val) \ + `UPDATE_VAL(val[0][0][0], 54) + + +`define CHECK_0D(val) \ + `CHECK_VAL((val), 43) +`define CHECK_1D(val) \ + `CHECK_VAL(val[0], 44); \ + `CHECK_VAL(val[1], 45) +`define CHECK_2D(val) \ + `CHECK_VAL(val[0][1], 46); \ + `CHECK_VAL(val[1][1], 47); \ + `CHECK_VAL(val[2][1], 48) +`define CHECK_3D(val) \ + `CHECK_VAL(val[0][0][0], 49); \ + `CHECK_VAL(val[1][0][0], 50); \ + `CHECK_VAL(val[2][0][0], 51); \ + `CHECK_VAL(val[3][0][0], 52) + +`define CHECK_1D1(val) \ + `CHECK_VAL(val[0], 53) +`define CHECK_2D1(val) \ + `CHECK_VAL(val[0][0], 54) +`define CHECK_3D1(val) \ + `CHECK_VAL(val[0][0][0], 55) `define CHECK_DOUBLE_VAL(act, exp) if ((act) == (exp)) begin \ if (ENABLE_VERBOSE_MESSAGE)$display("%s:%f as expected", `"act`", (act)); \ @@ -85,36 +110,60 @@ $stop; \ end -`define CHECK_DOUBLE_0D(val) `CHECK_DOUBLE_VAL((val), 43.0) -`define CHECK_DOUBLE_1D(val) `CHECK_DOUBLE_VAL(val[0], 44.0); \ -`CHECK_DOUBLE_VAL(val[1], 45.0) -`define CHECK_DOUBLE_2D(val) `CHECK_DOUBLE_VAL(val[0][1], 46.0); \ -`CHECK_DOUBLE_VAL(val[1][1], 47.0); \ -`CHECK_DOUBLE_VAL(val[2][1], 48.0) -`define CHECK_DOUBLE_3D(val) `CHECK_DOUBLE_VAL(val[0][0][0], 49.0); \ -`CHECK_DOUBLE_VAL(val[1][0][0], 50.0); \ -`CHECK_DOUBLE_VAL(val[2][0][0], 51.0); \ -`CHECK_DOUBLE_VAL(val[3][0][0], 52.0) +`define CHECK_DOUBLE_0D(val) \ + `CHECK_DOUBLE_VAL((val), 43.0) +`define CHECK_DOUBLE_1D(val) \ + `CHECK_DOUBLE_VAL(val[0], 44.0); \ + `CHECK_DOUBLE_VAL(val[1], 45.0) +`define CHECK_DOUBLE_2D(val) \ + `CHECK_DOUBLE_VAL(val[0][1], 46.0); \ + `CHECK_DOUBLE_VAL(val[1][1], 47.0); \ + `CHECK_DOUBLE_VAL(val[2][1], 48.0) +`define CHECK_DOUBLE_3D(val) \ + `CHECK_DOUBLE_VAL(val[0][0][0], 49.0); \ + `CHECK_DOUBLE_VAL(val[1][0][0], 50.0); \ + `CHECK_DOUBLE_VAL(val[2][0][0], 51.0); \ + `CHECK_DOUBLE_VAL(val[3][0][0], 52.0) + +`define CHECK_DOUBLE_1D1(val) \ + `CHECK_DOUBLE_VAL(val[0], 53.0) +`define CHECK_DOUBLE_2D1(val) \ + `CHECK_DOUBLE_VAL(val[0][0], 54.0) +`define CHECK_DOUBLE_3D1(val) \ + `CHECK_DOUBLE_VAL(val[0][0][0], 55.0) `define SET_VALUE_0D(val) \ -/*verilator lint_off WIDTH */ \ -val = 42 -/*verilator lint_on WIDTH */ + /*verilator lint_off WIDTH */ \ + val = 42 \ + /*verilator lint_on WIDTH */ `define SET_VALUE_1D(val) \ -/*verilator lint_off WIDTH */ \ -val[0] = 43; val[1] = 44 \ -/*verilator lint_on WIDTH */ + /*verilator lint_off WIDTH */ \ + val[0] = 43; val[1] = 44 \ + /*verilator lint_on WIDTH */ `define SET_VALUE_2D(val) \ -/*verilator lint_off WIDTH */ \ -val[0][1] = 45; val[1][1] = 46; val[2][1] = 47 \ -/*verilator lint_on WIDTH */ -`define SET_VALUES(val) \ -/*verilator lint_off WIDTH */ \ -val[3][2][1] = 42; \ -val[2][1][0] = 43; val[2][1][1] = 44; \ -val[1][0][1] = 45; val[1][1][1] = 46; val[1][2][1] = 47; \ -val[0][0][0] = 48; val[1][0][0] = 49; val[2][0][0] = 50; val[3][0][0] = 51 \ -/*verilator lint_on WIDTH */ + /*verilator lint_off WIDTH */ \ + val[0][1] = 45; val[1][1] = 46; val[2][1] = 47 \ + /*verilator lint_on WIDTH */ +`define SET_VALUE_3D(val) \ + /*verilator lint_off WIDTH */ \ + val[3][2][1] = 42; \ + val[2][1][0] = 43; val[2][1][1] = 44; \ + val[1][0][1] = 45; val[1][1][1] = 46; val[1][2][1] = 47; \ + val[0][0][0] = 48; val[1][0][0] = 49; val[2][0][0] = 50; val[3][0][0] = 51 \ + /*verilator lint_on WIDTH */ + +`define SET_VALUE_1D1(val) \ + /*verilator lint_off WIDTH */ \ + val[0] = 52; \ + /*verilator lint_on WIDTH */ +`define SET_VALUE_2D1(val) \ + /*verilator lint_off WIDTH */ \ + val[0][0] = 53; \ + /*verilator lint_on WIDTH */ +`define SET_VALUE_3D1(val) \ + /*verilator lint_off WIDTH */ \ + val[0][0][0] = 54; \ + /*verilator lint_on WIDTH */ module t; @@ -126,62 +175,84 @@ module t; // Type definitions //====================================================================== - typedef byte byte_t; - typedef byte_t byte_array_t[4][3][2]; - typedef byte unsigned byte_unsigned_t; - typedef byte_unsigned_t byte_unsigned_array_t[4][3][2]; - typedef shortint shortint_t; - typedef shortint_t shortint_array_t[4][3][2]; - typedef shortint unsigned shortint_unsigned_t; - typedef shortint_unsigned_t shortint_unsigned_array_t[4][3][2]; - typedef int int_t; - typedef int_t int_array_t[4][3][2]; - typedef int unsigned int_unsigned_t; - typedef int_unsigned_t int_unsigned_array_t[4][3][2]; - typedef longint longint_t; - typedef longint_t longint_array_t[4][3][2]; - typedef longint unsigned longint_unsigned_t; - typedef longint_unsigned_t longint_unsigned_array_t[4][3][2]; + typedef byte byte_t; + typedef byte_t byte_array_t[4][3][2]; + typedef byte_t byte_array1_t[1][1][1]; + typedef byte unsigned byte_unsigned_t; + typedef byte_unsigned_t byte_unsigned_array_t[4][3][2]; + typedef byte_unsigned_t byte_unsigned_array1_t[1][1][1]; + typedef shortint shortint_t; + typedef shortint_t shortint_array_t[4][3][2]; + typedef shortint_t shortint_array1_t[1][1][1]; + typedef shortint unsigned shortint_unsigned_t; + typedef shortint_unsigned_t shortint_unsigned_array_t[4][3][2]; + typedef shortint_unsigned_t shortint_unsigned_array1_t[1][1][1]; + typedef int int_t; + typedef int_t int_array_t[4][3][2]; + typedef int_t int_array1_t[1][1][1]; + typedef int unsigned int_unsigned_t; + typedef int_unsigned_t int_unsigned_array_t[4][3][2]; + typedef int_unsigned_t int_unsigned_array1_t[1][1][1]; + typedef longint longint_t; + typedef longint_t longint_array_t[4][3][2]; + typedef longint_t longint_array1_t[1][1][1]; + typedef longint unsigned longint_unsigned_t; + typedef longint_unsigned_t longint_unsigned_array_t[4][3][2]; + typedef longint_unsigned_t longint_unsigned_array1_t[1][1][1]; `ifndef NO_TIME typedef time time_t; typedef time_t time_array_t[4][3][2]; + typedef time_t time_array1_t[1][1][1]; `endif `ifndef NO_INTEGER typedef integer integer_t; typedef integer_t integer_array_t[4][3][2]; + typedef integer_t integer_array1_t[1][1][1]; `endif typedef real real_t; typedef real_t real_array_t[4][3][2]; + typedef real_t real_array1_t[1][1][1]; `ifndef NO_SHORTREAL typedef shortreal shortreal_t; typedef shortreal_t shortreal_array_t[4][3][2]; + typedef shortreal_t shortreal_array1_t[1][1][1]; `endif typedef chandle chandle_t; typedef chandle_t chandle_array_t[4][3][2]; + typedef chandle_t chandle_array1_t[1][1][1]; typedef string string_t; typedef string_t string_array_t[4][3][2]; + typedef string_t string_array1_t[1][1][1]; typedef bit bit1_t; typedef bit1_t bit1_array_t[4][3][2]; + typedef bit1_t bit1_array1_t[1][1][1]; typedef bit [6:0] bit7_t; typedef bit7_t bit7_array_t[4][3][2]; + typedef bit7_t bit7_array1_t[1][1][1]; typedef bit [120:0] bit121_t; typedef bit121_t bit121_array_t[4][3][2]; + typedef bit121_t bit121_array1_t[1][1][1]; typedef logic logic1_t; - typedef logic1_t logic1_array_t[4][3][2]; + typedef logic1_t logic1_array_t[4][3][2]; + typedef logic1_t logic1_array1_t[1][1][1]; typedef logic [6:0] logic7_t; typedef logic7_t logic7_array_t[4][3][2]; + typedef logic7_t logic7_array1_t[1][1][1]; typedef logic [120:0] logic121_t; typedef logic121_t logic121_array_t[4][3][2]; + typedef logic121_t logic121_array1_t[1][1][1]; typedef struct packed { logic [6:0] val; } pack_struct_t; - typedef pack_struct_t pack_struct_array_t[4][3][2]; + typedef pack_struct_t pack_struct_array_t[4][3][2]; + typedef pack_struct_t pack_struct_array1_t[1][1][1]; `ifndef NO_UNPACK_STRUCT typedef struct { logic [120:0] val; } unpack_struct_t; - typedef unpack_struct_t unpack_struct_array_t[4][3][2]; + typedef unpack_struct_t unpack_struct_array_t[4][3][2]; + typedef unpack_struct_t unpack_struct_array1_t[1][1][1]; `endif //====================================================================== @@ -195,47 +266,74 @@ module t; import "DPI-C" function void i_byte_1d(inout byte_t val[2]); import "DPI-C" function void i_byte_2d(inout byte_t val[3][2]); import "DPI-C" function void i_byte_3d(inout byte_array_t val); + import "DPI-C" function void i_byte_1d1(inout byte_t val[1]); + import "DPI-C" function void i_byte_2d1(inout byte_t val[1][1]); + import "DPI-C" function void i_byte_3d1(inout byte_array1_t val); import "DPI-C" function void i_byte_unsigned_0d(inout byte unsigned val); import "DPI-C" function void i_byte_unsigned_1d(inout byte unsigned val[2]); import "DPI-C" function void i_byte_unsigned_2d(inout byte unsigned val[3][2]); import "DPI-C" function void i_byte_unsigned_3d(inout byte_unsigned_array_t val); + import "DPI-C" function void i_byte_unsigned_1d1(inout byte unsigned val[1]); + import "DPI-C" function void i_byte_unsigned_2d1(inout byte unsigned val[1][1]); + import "DPI-C" function void i_byte_unsigned_3d1(inout byte_unsigned_array1_t val); import "DPI-C" function void i_shortint_0d(inout shortint val); import "DPI-C" function void i_shortint_1d(inout shortint val[2]); import "DPI-C" function void i_shortint_2d(inout shortint val[3][2]); import "DPI-C" function void i_shortint_3d(inout shortint_array_t val); + import "DPI-C" function void i_shortint_1d1(inout shortint val[1]); + import "DPI-C" function void i_shortint_2d1(inout shortint val[1][1]); + import "DPI-C" function void i_shortint_3d1(inout shortint_array1_t val); import "DPI-C" function void i_shortint_unsigned_0d(inout shortint unsigned val); import "DPI-C" function void i_shortint_unsigned_1d(inout shortint unsigned val[2]); import "DPI-C" function void i_shortint_unsigned_2d(inout shortint unsigned val[3][2]); import "DPI-C" function void i_shortint_unsigned_3d(inout shortint_unsigned_array_t val); + import "DPI-C" function void i_shortint_unsigned_1d1(inout shortint unsigned val[1]); + import "DPI-C" function void i_shortint_unsigned_2d1(inout shortint unsigned val[1][1]); + import "DPI-C" function void i_shortint_unsigned_3d1(inout shortint_unsigned_array1_t val); import "DPI-C" function void i_int_0d(inout int val); import "DPI-C" function void i_int_1d(inout int val[2]); import "DPI-C" function void i_int_2d(inout int val[3][2]); import "DPI-C" function void i_int_3d(inout int_array_t val); + import "DPI-C" function void i_int_1d1(inout int val[1]); + import "DPI-C" function void i_int_2d1(inout int val[1][1]); + import "DPI-C" function void i_int_3d1(inout int_array1_t val); import "DPI-C" function void i_int_unsigned_0d(inout int unsigned val); import "DPI-C" function void i_int_unsigned_1d(inout int unsigned val[2]); import "DPI-C" function void i_int_unsigned_2d(inout int unsigned val[3][2]); import "DPI-C" function void i_int_unsigned_3d(inout int_unsigned_array_t val); + import "DPI-C" function void i_int_unsigned_1d1(inout int unsigned val[1]); + import "DPI-C" function void i_int_unsigned_2d1(inout int unsigned val[1][1]); + import "DPI-C" function void i_int_unsigned_3d1(inout int_unsigned_array1_t val); import "DPI-C" function void i_longint_0d(inout longint val); import "DPI-C" function void i_longint_1d(inout longint val[2]); import "DPI-C" function void i_longint_2d(inout longint val[3][2]); import "DPI-C" function void i_longint_3d(inout longint_array_t val); + import "DPI-C" function void i_longint_1d1(inout longint val[1]); + import "DPI-C" function void i_longint_2d1(inout longint val[1][1]); + import "DPI-C" function void i_longint_3d1(inout longint_array1_t val); import "DPI-C" function void i_longint_unsigned_0d(inout longint unsigned val); import "DPI-C" function void i_longint_unsigned_1d(inout longint unsigned val[2]); import "DPI-C" function void i_longint_unsigned_2d(inout longint unsigned val[3][2]); import "DPI-C" function void i_longint_unsigned_3d(inout longint_unsigned_array_t val); + import "DPI-C" function void i_longint_unsigned_1d1(inout longint unsigned val[1]); + import "DPI-C" function void i_longint_unsigned_2d1(inout longint unsigned val[1][1]); + import "DPI-C" function void i_longint_unsigned_3d1(inout longint_unsigned_array1_t val); `ifndef NO_TIME import "DPI-C" function void i_time_0d(inout time val); import "DPI-C" function void i_time_1d(inout time val[2]); import "DPI-C" function void i_time_2d(inout time val[3][2]); import "DPI-C" function void i_time_3d(inout time_array_t val); + import "DPI-C" function void i_time_1d1(inout time val[1]); + import "DPI-C" function void i_time_2d1(inout time val[1][1]); + import "DPI-C" function void i_time_3d1(inout time_array1_t val); `endif `ifndef NO_INTEGER @@ -243,70 +341,109 @@ module t; import "DPI-C" function void i_integer_1d(inout integer val[2]); import "DPI-C" function void i_integer_2d(inout integer val[3][2]); import "DPI-C" function void i_integer_3d(inout integer_array_t val); + import "DPI-C" function void i_integer_1d1(inout integer val[1]); + import "DPI-C" function void i_integer_2d1(inout integer val[1][1]); + import "DPI-C" function void i_integer_3d1(inout integer_array1_t val); `endif import "DPI-C" function void i_real_0d(inout real val); import "DPI-C" function void i_real_1d(inout real val[2]); import "DPI-C" function void i_real_2d(inout real val[3][2]); import "DPI-C" function void i_real_3d(inout real_array_t val); + import "DPI-C" function void i_real_1d1(inout real val[1]); + import "DPI-C" function void i_real_2d1(inout real val[1][1]); + import "DPI-C" function void i_real_3d1(inout real_array1_t val); `ifndef NO_SHORTREAL import "DPI-C" function void i_shortreal_0d(inout shortreal val); import "DPI-C" function void i_shortreal_1d(inout shortreal val[2]); import "DPI-C" function void i_shortreal_2d(inout shortreal val[3][2]); import "DPI-C" function void i_shortreal_3d(inout shortreal_array_t val); + import "DPI-C" function void i_shortreal_1d1(inout shortreal val[1]); + import "DPI-C" function void i_shortreal_2d1(inout shortreal val[1][1]); + import "DPI-C" function void i_shortreal_3d1(inout shortreal_array1_t val); `endif import "DPI-C" function void i_chandle_0d(inout chandle val); import "DPI-C" function void i_chandle_1d(inout chandle val[2]); import "DPI-C" function void i_chandle_2d(inout chandle val[3][2]); import "DPI-C" function void i_chandle_3d(inout chandle_array_t val); + import "DPI-C" function void i_chandle_1d1(inout chandle val[1]); + import "DPI-C" function void i_chandle_2d1(inout chandle val[1][1]); + import "DPI-C" function void i_chandle_3d1(inout chandle_array1_t val); import "DPI-C" function void i_string_0d(inout string val); import "DPI-C" function void i_string_1d(inout string val[2]); import "DPI-C" function void i_string_2d(inout string val[3][2]); import "DPI-C" function void i_string_3d(inout string_array_t val); + import "DPI-C" function void i_string_1d1(inout string val[1]); + import "DPI-C" function void i_string_2d1(inout string val[1][1]); + import "DPI-C" function void i_string_3d1(inout string_array1_t val); import "DPI-C" function void i_bit1_0d(inout bit val); import "DPI-C" function void i_bit1_1d(inout bit val[2]); import "DPI-C" function void i_bit1_2d(inout bit val[3][2]); import "DPI-C" function void i_bit1_3d(inout bit1_array_t val); + import "DPI-C" function void i_bit1_1d1(inout bit val[1]); + import "DPI-C" function void i_bit1_2d1(inout bit val[1][1]); + import "DPI-C" function void i_bit1_3d1(inout bit1_array1_t val); import "DPI-C" function void i_bit7_0d(inout bit[6:0] val); import "DPI-C" function void i_bit7_1d(inout bit[6:0] val[2]); import "DPI-C" function void i_bit7_2d(inout bit[6:0] val[3][2]); import "DPI-C" function void i_bit7_3d(inout bit7_array_t val); + import "DPI-C" function void i_bit7_1d1(inout bit[6:0] val[1]); + import "DPI-C" function void i_bit7_2d1(inout bit[6:0] val[1][1]); + import "DPI-C" function void i_bit7_3d1(inout bit7_array1_t val); import "DPI-C" function void i_bit121_0d(inout bit[120:0] val); import "DPI-C" function void i_bit121_1d(inout bit[120:0] val[2]); import "DPI-C" function void i_bit121_2d(inout bit[120:0] val[3][2]); import "DPI-C" function void i_bit121_3d(inout bit121_array_t val); + import "DPI-C" function void i_bit121_1d1(inout bit[120:0] val[1]); + import "DPI-C" function void i_bit121_2d1(inout bit[120:0] val[1][1]); + import "DPI-C" function void i_bit121_3d1(inout bit121_array1_t val); import "DPI-C" function void i_logic1_0d(inout logic val); import "DPI-C" function void i_logic1_1d(inout logic val[2]); import "DPI-C" function void i_logic1_2d(inout logic val[3][2]); import "DPI-C" function void i_logic1_3d(inout logic1_array_t val); + import "DPI-C" function void i_logic1_1d1(inout logic val[1]); + import "DPI-C" function void i_logic1_2d1(inout logic val[1][1]); + import "DPI-C" function void i_logic1_3d1(inout logic1_array1_t val); import "DPI-C" function void i_logic7_0d(inout logic[6:0] val); import "DPI-C" function void i_logic7_1d(inout logic[6:0] val[2]); import "DPI-C" function void i_logic7_2d(inout logic[6:0] val[3][2]); import "DPI-C" function void i_logic7_3d(inout logic7_array_t val); + import "DPI-C" function void i_logic7_1d1(inout logic[6:0] val[1]); + import "DPI-C" function void i_logic7_2d1(inout logic[6:0] val[1][1]); + import "DPI-C" function void i_logic7_3d1(inout logic7_array1_t val); import "DPI-C" function void i_logic121_0d(inout logic[120:0] val); import "DPI-C" function void i_logic121_1d(inout logic[120:0] val[2]); import "DPI-C" function void i_logic121_2d(inout logic[120:0] val[3][2]); import "DPI-C" function void i_logic121_3d(inout logic121_array_t val); + import "DPI-C" function void i_logic121_1d1(inout logic[120:0] val[1]); + import "DPI-C" function void i_logic121_2d1(inout logic[120:0] val[1][1]); + import "DPI-C" function void i_logic121_3d1(inout logic121_array1_t val); import "DPI-C" function void i_pack_struct_0d(inout pack_struct_t val); import "DPI-C" function void i_pack_struct_1d(inout pack_struct_t val[2]); import "DPI-C" function void i_pack_struct_2d(inout pack_struct_t val[3][2]); import "DPI-C" function void i_pack_struct_3d(inout pack_struct_array_t val); + import "DPI-C" function void i_pack_struct_1d1(inout pack_struct_t val[1]); + import "DPI-C" function void i_pack_struct_2d1(inout pack_struct_t val[1][1]); + import "DPI-C" function void i_pack_struct_3d1(inout pack_struct_array1_t val); `ifndef NO_UNPACK_STRUCT import "DPI-C" function void i_unpack_struct_0d(inout unpack_struct_t val); import "DPI-C" function void i_unpack_struct_1d(inout unpack_struct_t val[2]); import "DPI-C" function void i_unpack_struct_2d(inout unpack_struct_t val[3][2]); import "DPI-C" function void i_unpack_struct_3d(inout unpack_struct_array_t val); + import "DPI-C" function void i_unpack_struct_1d1(inout unpack_struct_t val[1]); + import "DPI-C" function void i_unpack_struct_2d1(inout unpack_struct_t val[1][1]); + import "DPI-C" function void i_unpack_struct_3d1(inout unpack_struct_array1_t val); `endif //====================================================================== @@ -316,47 +453,74 @@ module t; export "DPI-C" function e_byte_1d; export "DPI-C" function e_byte_2d; export "DPI-C" function e_byte_3d; + export "DPI-C" function e_byte_1d1; + export "DPI-C" function e_byte_2d1; + export "DPI-C" function e_byte_3d1; export "DPI-C" function e_byte_unsigned_0d; export "DPI-C" function e_byte_unsigned_1d; export "DPI-C" function e_byte_unsigned_2d; export "DPI-C" function e_byte_unsigned_3d; + export "DPI-C" function e_byte_unsigned_1d1; + export "DPI-C" function e_byte_unsigned_2d1; + export "DPI-C" function e_byte_unsigned_3d1; export "DPI-C" function e_shortint_0d; export "DPI-C" function e_shortint_1d; export "DPI-C" function e_shortint_2d; export "DPI-C" function e_shortint_3d; + export "DPI-C" function e_shortint_1d1; + export "DPI-C" function e_shortint_2d1; + export "DPI-C" function e_shortint_3d1; export "DPI-C" function e_shortint_unsigned_0d; export "DPI-C" function e_shortint_unsigned_1d; export "DPI-C" function e_shortint_unsigned_2d; export "DPI-C" function e_shortint_unsigned_3d; + export "DPI-C" function e_shortint_unsigned_1d1; + export "DPI-C" function e_shortint_unsigned_2d1; + export "DPI-C" function e_shortint_unsigned_3d1; export "DPI-C" function e_int_0d; export "DPI-C" function e_int_1d; export "DPI-C" function e_int_2d; export "DPI-C" function e_int_3d; + export "DPI-C" function e_int_1d1; + export "DPI-C" function e_int_2d1; + export "DPI-C" function e_int_3d1; export "DPI-C" function e_int_unsigned_0d; export "DPI-C" function e_int_unsigned_1d; export "DPI-C" function e_int_unsigned_2d; export "DPI-C" function e_int_unsigned_3d; + export "DPI-C" function e_int_unsigned_1d1; + export "DPI-C" function e_int_unsigned_2d1; + export "DPI-C" function e_int_unsigned_3d1; export "DPI-C" function e_longint_0d; export "DPI-C" function e_longint_1d; export "DPI-C" function e_longint_2d; export "DPI-C" function e_longint_3d; + export "DPI-C" function e_longint_1d1; + export "DPI-C" function e_longint_2d1; + export "DPI-C" function e_longint_3d1; export "DPI-C" function e_longint_unsigned_0d; export "DPI-C" function e_longint_unsigned_1d; export "DPI-C" function e_longint_unsigned_2d; export "DPI-C" function e_longint_unsigned_3d; + export "DPI-C" function e_longint_unsigned_1d1; + export "DPI-C" function e_longint_unsigned_2d1; + export "DPI-C" function e_longint_unsigned_3d1; `ifndef NO_TIME export "DPI-C" function e_time_0d; export "DPI-C" function e_time_1d; export "DPI-C" function e_time_2d; export "DPI-C" function e_time_3d; + export "DPI-C" function e_time_1d1; + export "DPI-C" function e_time_2d1; + export "DPI-C" function e_time_3d1; `endif `ifndef NO_INTEGER @@ -364,70 +528,109 @@ module t; export "DPI-C" function e_integer_1d; export "DPI-C" function e_integer_2d; export "DPI-C" function e_integer_3d; + export "DPI-C" function e_integer_1d1; + export "DPI-C" function e_integer_2d1; + export "DPI-C" function e_integer_3d1; `endif export "DPI-C" function e_real_0d; export "DPI-C" function e_real_1d; export "DPI-C" function e_real_2d; export "DPI-C" function e_real_3d; + export "DPI-C" function e_real_1d1; + export "DPI-C" function e_real_2d1; + export "DPI-C" function e_real_3d1; `ifndef NO_SHORTREAL export "DPI-C" function e_shortreal_0d; export "DPI-C" function e_shortreal_1d; export "DPI-C" function e_shortreal_2d; export "DPI-C" function e_shortreal_3d; + export "DPI-C" function e_shortreal_1d1; + export "DPI-C" function e_shortreal_2d1; + export "DPI-C" function e_shortreal_3d1; `endif export "DPI-C" function e_chandle_0d; export "DPI-C" function e_chandle_1d; export "DPI-C" function e_chandle_2d; export "DPI-C" function e_chandle_3d; + export "DPI-C" function e_chandle_1d1; + export "DPI-C" function e_chandle_2d1; + export "DPI-C" function e_chandle_3d1; export "DPI-C" function e_string_0d; export "DPI-C" function e_string_1d; export "DPI-C" function e_string_2d; export "DPI-C" function e_string_3d; + export "DPI-C" function e_string_1d1; + export "DPI-C" function e_string_2d1; + export "DPI-C" function e_string_3d1; export "DPI-C" function e_bit1_0d; export "DPI-C" function e_bit1_1d; export "DPI-C" function e_bit1_2d; export "DPI-C" function e_bit1_3d; + export "DPI-C" function e_bit1_1d1; + export "DPI-C" function e_bit1_2d1; + export "DPI-C" function e_bit1_3d1; export "DPI-C" function e_bit7_0d; export "DPI-C" function e_bit7_1d; export "DPI-C" function e_bit7_2d; export "DPI-C" function e_bit7_3d; + export "DPI-C" function e_bit7_1d1; + export "DPI-C" function e_bit7_2d1; + export "DPI-C" function e_bit7_3d1; export "DPI-C" function e_bit121_0d; export "DPI-C" function e_bit121_1d; export "DPI-C" function e_bit121_2d; export "DPI-C" function e_bit121_3d; + export "DPI-C" function e_bit121_1d1; + export "DPI-C" function e_bit121_2d1; + export "DPI-C" function e_bit121_3d1; export "DPI-C" function e_logic1_0d; export "DPI-C" function e_logic1_1d; export "DPI-C" function e_logic1_2d; export "DPI-C" function e_logic1_3d; + export "DPI-C" function e_logic1_1d1; + export "DPI-C" function e_logic1_2d1; + export "DPI-C" function e_logic1_3d1; export "DPI-C" function e_logic7_0d; export "DPI-C" function e_logic7_1d; export "DPI-C" function e_logic7_2d; export "DPI-C" function e_logic7_3d; + export "DPI-C" function e_logic7_1d1; + export "DPI-C" function e_logic7_2d1; + export "DPI-C" function e_logic7_3d1; export "DPI-C" function e_logic121_0d; export "DPI-C" function e_logic121_1d; export "DPI-C" function e_logic121_2d; export "DPI-C" function e_logic121_3d; + export "DPI-C" function e_logic121_1d1; + export "DPI-C" function e_logic121_2d1; + export "DPI-C" function e_logic121_3d1; export "DPI-C" function e_pack_struct_0d; export "DPI-C" function e_pack_struct_1d; export "DPI-C" function e_pack_struct_2d; export "DPI-C" function e_pack_struct_3d; + export "DPI-C" function e_pack_struct_1d1; + export "DPI-C" function e_pack_struct_2d1; + export "DPI-C" function e_pack_struct_3d1; `ifndef NO_UNPACK_STRUCT export "DPI-C" function e_unpack_struct_0d; export "DPI-C" function e_unpack_struct_1d; export "DPI-C" function e_unpack_struct_2d; export "DPI-C" function e_unpack_struct_3d; + export "DPI-C" function e_unpack_struct_1d1; + export "DPI-C" function e_unpack_struct_2d1; + export "DPI-C" function e_unpack_struct_3d1; `endif //====================================================================== // Definitions of exported functions @@ -437,50 +640,74 @@ module t; function void e_byte_1d(inout byte val[2]); `UPDATE_1D(val); endfunction function void e_byte_2d(inout byte val[3][2]); `UPDATE_2D(val); endfunction function void e_byte_3d(inout byte_array_t val); `UPDATE_3D(val); endfunction + function void e_byte_1d1(inout byte val[1]); `UPDATE_1D1(val); endfunction + function void e_byte_2d1(inout byte val[1][1]); `UPDATE_2D1(val); endfunction + function void e_byte_3d1(inout byte_array1_t val); `UPDATE_3D1(val); endfunction function void e_byte_unsigned_0d(inout byte unsigned val); `UPDATE_0D(val); endfunction function void e_byte_unsigned_1d(inout byte unsigned val[2]); `UPDATE_1D(val); endfunction function void e_byte_unsigned_2d(inout byte unsigned val[3][2]); `UPDATE_2D(val); endfunction function void e_byte_unsigned_3d(inout byte_unsigned_array_t val); `UPDATE_3D(val); endfunction + function void e_byte_unsigned_1d1(inout byte unsigned val[1]); `UPDATE_1D1(val); endfunction + function void e_byte_unsigned_2d1(inout byte unsigned val[1][1]); `UPDATE_2D1(val); endfunction + function void e_byte_unsigned_3d1(inout byte_unsigned_array1_t val); `UPDATE_3D1(val); endfunction function void e_shortint_0d(inout shortint val); `UPDATE_0D(val); endfunction function void e_shortint_1d(inout shortint val[2]); `UPDATE_1D(val); endfunction function void e_shortint_2d(inout shortint val[3][2]); `UPDATE_2D(val); endfunction function void e_shortint_3d(inout shortint_array_t val); `UPDATE_3D(val); endfunction + function void e_shortint_1d1(inout shortint val[1]); `UPDATE_1D1(val); endfunction + function void e_shortint_2d1(inout shortint val[1][1]); `UPDATE_2D1(val); endfunction + function void e_shortint_3d1(inout shortint_array1_t val); `UPDATE_3D1(val); endfunction function void e_shortint_unsigned_0d(inout shortint unsigned val); `UPDATE_0D(val); endfunction function void e_shortint_unsigned_1d(inout shortint unsigned val[2]); `UPDATE_1D(val); endfunction function void e_shortint_unsigned_2d(inout shortint unsigned val[3][2]); `UPDATE_2D(val); endfunction function void e_shortint_unsigned_3d(inout shortint_unsigned_array_t val); `UPDATE_3D(val); endfunction - + function void e_shortint_unsigned_1d1(inout shortint unsigned val[1]); `UPDATE_1D1(val); endfunction + function void e_shortint_unsigned_2d1(inout shortint unsigned val[1][1]); `UPDATE_2D1(val); endfunction + function void e_shortint_unsigned_3d1(inout shortint_unsigned_array1_t val); `UPDATE_3D1(val); endfunction function void e_int_0d(inout int val); `UPDATE_0D(val); endfunction function void e_int_1d(inout int val[2]); `UPDATE_1D(val); endfunction function void e_int_2d(inout int val[3][2]); `UPDATE_2D(val); endfunction function void e_int_3d(inout int_array_t val); `UPDATE_3D(val); endfunction + function void e_int_1d1(inout int val[1]); `UPDATE_1D1(val); endfunction + function void e_int_2d1(inout int val[1][1]); `UPDATE_2D1(val); endfunction + function void e_int_3d1(inout int_array1_t val); `UPDATE_3D1(val); endfunction function void e_int_unsigned_0d(inout int unsigned val); `UPDATE_0D(val); endfunction function void e_int_unsigned_1d(inout int unsigned val[2]); `UPDATE_1D(val); endfunction function void e_int_unsigned_2d(inout int unsigned val[3][2]); `UPDATE_2D(val); endfunction function void e_int_unsigned_3d(inout int_unsigned_array_t val); `UPDATE_3D(val); endfunction - - + function void e_int_unsigned_1d1(inout int unsigned val[1]); `UPDATE_1D1(val); endfunction + function void e_int_unsigned_2d1(inout int unsigned val[1][1]); `UPDATE_2D1(val); endfunction + function void e_int_unsigned_3d1(inout int_unsigned_array1_t val); `UPDATE_3D1(val); endfunction function void e_longint_0d(inout longint val); `UPDATE_0D(val); endfunction function void e_longint_1d(inout longint val[2]); `UPDATE_1D(val); endfunction function void e_longint_2d(inout longint val[3][2]); `UPDATE_2D(val); endfunction function void e_longint_3d(inout longint_array_t val); `UPDATE_3D(val); endfunction + function void e_longint_1d1(inout longint val[1]); `UPDATE_1D1(val); endfunction + function void e_longint_2d1(inout longint val[1][1]); `UPDATE_2D1(val); endfunction + function void e_longint_3d1(inout longint_array1_t val); `UPDATE_3D1(val); endfunction function void e_longint_unsigned_0d(inout longint unsigned val); `UPDATE_0D(val); endfunction function void e_longint_unsigned_1d(inout longint unsigned val[2]); `UPDATE_1D(val); endfunction function void e_longint_unsigned_2d(inout longint unsigned val[3][2]); `UPDATE_2D(val); endfunction function void e_longint_unsigned_3d(inout longint_unsigned_array_t val); `UPDATE_3D(val); endfunction + function void e_longint_unsigned_1d1(inout longint unsigned val[1]); `UPDATE_1D1(val); endfunction + function void e_longint_unsigned_2d1(inout longint unsigned val[1][1]); `UPDATE_2D1(val); endfunction + function void e_longint_unsigned_3d1(inout longint_unsigned_array1_t val); `UPDATE_3D1(val); endfunction `ifndef NO_TIME function void e_time_0d(inout time val); `UPDATE_0D(val); endfunction function void e_time_1d(inout time val[2]); `UPDATE_1D(val); endfunction function void e_time_2d(inout time val[3][2]); `UPDATE_2D(val); endfunction function void e_time_3d(inout time_array_t val); `UPDATE_3D(val); endfunction + function void e_time_1d1(inout time val[1]); `UPDATE_1D1(val); endfunction + function void e_time_2d1(inout time val[1][1]); `UPDATE_2D1(val); endfunction + function void e_time_3d1(inout time_array1_t val); `UPDATE_3D1(val); endfunction `endif `ifndef NO_INTEGER @@ -488,21 +715,29 @@ module t; function void e_integer_1d(inout integer val[2]); `UPDATE_1D(val); endfunction function void e_integer_2d(inout integer val[3][2]); `UPDATE_2D(val); endfunction function void e_integer_3d(inout integer_array_t val); `UPDATE_3D(val); endfunction + function void e_integer_1d1(inout integer val[1]); `UPDATE_1D1(val); endfunction + function void e_integer_2d1(inout integer val[1][1]); `UPDATE_2D1(val); endfunction + function void e_integer_3d1(inout integer_array1_t val); `UPDATE_3D1(val); endfunction `endif function void e_real_0d(inout real val); `UPDATE_0D(val); endfunction function void e_real_1d(inout real val[2]); `UPDATE_1D(val); endfunction function void e_real_2d(inout real val[3][2]); `UPDATE_2D(val); endfunction function void e_real_3d(inout real_array_t val); `UPDATE_3D(val); endfunction + function void e_real_1d1(inout real val[1]); `UPDATE_1D1(val); endfunction + function void e_real_2d1(inout real val[1][1]); `UPDATE_2D1(val); endfunction + function void e_real_3d1(inout real_array1_t val); `UPDATE_3D1(val); endfunction `ifndef NO_SHORTREAL function void e_shortreal_0d(inout shortreal val); `UPDATE_0D(val); endfunction function void e_shortreal_1d(inout shortreal val[2]); `UPDATE_1D(val); endfunction function void e_shortreal_2d(inout shortreal val[3][2]); `UPDATE_2D(val); endfunction function void e_shortreal_3d(inout shortreal_array_t val); `UPDATE_3D(val); endfunction + function void e_shortreal_1d1(inout shortreal val[1]); `UPDATE_1D1(val); endfunction + function void e_shortreal_2d1(inout shortreal val[1][1]); `UPDATE_2D1(val); endfunction + function void e_shortreal_3d1(inout shortreal_array1_t val); `UPDATE_3D1(val); endfunction `endif - function void e_chandle_0d(inout chandle val); `CHECK_CHANDLE_VAL(val, get_non_null()); val = null; @@ -531,7 +766,18 @@ module t; val[2][0][0] = null; val[3][0][0] = null; endfunction - + function void e_chandle_1d1(inout chandle val[1]); + `CHECK_CHANDLE_VAL(val[0], get_non_null()); + val[0] = null; + endfunction + function void e_chandle_2d1(inout chandle val[1][1]); + `CHECK_CHANDLE_VAL(val[0][0], get_non_null()); + val[0][0] = null; + endfunction + function void e_chandle_3d1(inout chandle_array1_t val); + `CHECK_CHANDLE_VAL(val[0][0][0], get_non_null()); + val[0][0][0] = null; + endfunction function void e_string_0d(inout string val); `CHECK_STRING_VAL(val, "42"); @@ -561,41 +807,74 @@ module t; val[2][0][0] = "51"; val[3][0][0] = "52"; endfunction + function void e_string_1d1(inout string val[1]); + `CHECK_STRING_VAL(val[0], "52"); + val[0] = "53"; + endfunction + function void e_string_2d1(inout string val[1][1]); + `CHECK_STRING_VAL(val[0][0], "53"); + val[0][0] = "54"; + endfunction + function void e_string_3d1(inout string_array1_t val); + `CHECK_STRING_VAL(val[0][0][0], "54"); + val[0][0][0] = "55"; + endfunction function void e_bit1_0d(inout bit val); `UPDATE_0D(val); endfunction function void e_bit1_1d(inout bit val[2]); `UPDATE_1D(val); endfunction function void e_bit1_2d(inout bit val[3][2]); `UPDATE_2D(val); endfunction function void e_bit1_3d(inout bit1_array_t val); `UPDATE_3D(val); endfunction + function void e_bit1_1d1(inout bit val[1]); `UPDATE_1D1(val); endfunction + function void e_bit1_2d1(inout bit val[1][1]); `UPDATE_2D1(val); endfunction + function void e_bit1_3d1(inout bit1_array1_t val); `UPDATE_3D1(val); endfunction function void e_bit7_0d(inout bit[6:0] val); `UPDATE_0D(val); endfunction function void e_bit7_1d(inout bit[6:0] val[2]); `UPDATE_1D(val); endfunction function void e_bit7_2d(inout bit[6:0] val[3][2]); `UPDATE_2D(val); endfunction function void e_bit7_3d(inout bit7_array_t val); `UPDATE_3D(val); endfunction + function void e_bit7_1d1(inout bit[6:0] val[1]); `UPDATE_1D1(val); endfunction + function void e_bit7_2d1(inout bit[6:0] val[1][1]); `UPDATE_2D1(val); endfunction + function void e_bit7_3d1(inout bit7_array1_t val); `UPDATE_3D1(val); endfunction function void e_bit121_0d(inout bit[120:0] val); `UPDATE_0D(val); endfunction function void e_bit121_1d(inout bit[120:0] val[2]); `UPDATE_1D(val); endfunction function void e_bit121_2d(inout bit[120:0] val[3][2]); `UPDATE_2D(val); endfunction function void e_bit121_3d(inout bit121_array_t val); `UPDATE_3D(val); endfunction + function void e_bit121_1d1(inout bit[120:0] val[1]); `UPDATE_1D1(val); endfunction + function void e_bit121_2d1(inout bit[120:0] val[1][1]); `UPDATE_2D1(val); endfunction + function void e_bit121_3d1(inout bit121_array1_t val); `UPDATE_3D1(val); endfunction function void e_logic1_0d(inout logic val); `UPDATE_0D(val); endfunction function void e_logic1_1d(inout logic val[2]); `UPDATE_1D(val); endfunction function void e_logic1_2d(inout logic val[3][2]); `UPDATE_2D(val); endfunction function void e_logic1_3d(inout logic1_array_t val); `UPDATE_3D(val); endfunction + function void e_logic1_1d1(inout logic val[1]); `UPDATE_1D1(val); endfunction + function void e_logic1_2d1(inout logic val[1][1]); `UPDATE_2D1(val); endfunction + function void e_logic1_3d1(inout logic1_array1_t val); `UPDATE_3D1(val); endfunction function void e_logic7_0d(inout logic[6:0] val); `UPDATE_0D(val); endfunction function void e_logic7_1d(inout logic[6:0] val[2]); `UPDATE_1D(val); endfunction function void e_logic7_2d(inout logic[6:0] val[3][2]); `UPDATE_2D(val); endfunction function void e_logic7_3d(inout logic7_array_t val); `UPDATE_3D(val); endfunction + function void e_logic7_1d1(inout logic[6:0] val[1]); `UPDATE_1D1(val); endfunction + function void e_logic7_2d1(inout logic[6:0] val[1][1]); `UPDATE_2D1(val); endfunction + function void e_logic7_3d1(inout logic7_array1_t val); `UPDATE_3D1(val); endfunction function void e_logic121_0d(inout logic[120:0] val); `UPDATE_0D(val); endfunction function void e_logic121_1d(inout logic[120:0] val[2]); `UPDATE_1D(val); endfunction function void e_logic121_2d(inout logic[120:0] val[3][2]); `UPDATE_2D(val); endfunction function void e_logic121_3d(inout logic121_array_t val); `UPDATE_3D(val); endfunction + function void e_logic121_1d1(inout logic[120:0] val[1]); `UPDATE_1D1(val); endfunction + function void e_logic121_2d1(inout logic[120:0] val[1][1]); `UPDATE_2D1(val); endfunction + function void e_logic121_3d1(inout logic121_array1_t val); `UPDATE_3D1(val); endfunction function void e_pack_struct_0d(inout pack_struct_t val); `UPDATE_0D(val); endfunction function void e_pack_struct_1d(inout pack_struct_t val[2]); `UPDATE_1D(val); endfunction function void e_pack_struct_2d(inout pack_struct_t val[3][2]); `UPDATE_2D(val); endfunction function void e_pack_struct_3d(inout pack_struct_array_t val); `UPDATE_3D(val); endfunction + function void e_pack_struct_1d1(inout pack_struct_t val[1]); `UPDATE_1D1(val); endfunction + function void e_pack_struct_2d1(inout pack_struct_t val[1][1]); `UPDATE_2D1(val); endfunction + function void e_pack_struct_3d1(inout pack_struct_array1_t val); `UPDATE_3D1(val); endfunction `ifndef NO_UNPACK_STRUCT function void e_unpack_struct_0d(inout unpack_struct_t val); @@ -626,6 +905,18 @@ module t; val[2][0][0].val = 51; val[3][0][0].val = 52; endfunction + function void e_unpack_struct_1d1(inout unpack_struct_t val[1]); + `CHECK_VAL(val[0].val, 52); + val[0].val = 53; + endfunction + function void e_unpack_struct_2d1(inout unpack_struct_t val[1][1]); + `CHECK_VAL(val[0][0].val, 53); + val[0][0].val = 54; + endfunction + function void e_unpack_struct_3d1(inout unpack_struct_array1_t val); + `CHECK_VAL(val[0][0][0].val, 54); + val[0][0][0].val = 55; + endfunction `endif //====================================================================== @@ -637,120 +928,193 @@ module t; byte_t byte_array_0d; byte_t byte_array_1d[2]; byte_t byte_array_2d[3][2]; - byte_array_t byte_array; + byte_array_t byte_array_3d; + byte_t byte_array_1d1[1]; + byte_t byte_array_2d1[1][1]; + byte_array1_t byte_array_3d1; + byte_unsigned_t byte_unsigned_array_0d; byte_unsigned_t byte_unsigned_array_1d[2]; byte_unsigned_t byte_unsigned_array_2d[3][2]; - byte_unsigned_array_t byte_unsigned_array; + byte_unsigned_array_t byte_unsigned_array_3d; + byte_unsigned_t byte_unsigned_array_1d1[1]; + byte_unsigned_t byte_unsigned_array_2d1[1][1]; + byte_unsigned_array1_t byte_unsigned_array_3d1; + shortint_t shortint_array_0d; shortint_t shortint_array_1d[2]; shortint_t shortint_array_2d[3][2]; - shortint_array_t shortint_array; + shortint_array_t shortint_array_3d; + shortint_t shortint_array_1d1[1]; + shortint_t shortint_array_2d1[1][1]; + shortint_array1_t shortint_array_3d1; + shortint_unsigned_t shortint_unsigned_array_0d; shortint_unsigned_t shortint_unsigned_array_1d[2]; shortint_unsigned_t shortint_unsigned_array_2d[3][2]; - shortint_unsigned_array_t shortint_unsigned_array; + shortint_unsigned_array_t shortint_unsigned_array_3d; + shortint_unsigned_t shortint_unsigned_array_1d1[1]; + shortint_unsigned_t shortint_unsigned_array_2d1[1][1]; + shortint_unsigned_array1_t shortint_unsigned_array_3d1; + int_t int_array_0d; int_t int_array_1d[2]; int_t int_array_2d[3][2]; - int_array_t int_array; + int_array_t int_array_3d; + int_t int_array_1d1[1]; + int_t int_array_2d1[1][1]; + int_array1_t int_array_3d1; + int_unsigned_t int_unsigned_array_0d; int_unsigned_t int_unsigned_array_1d[2]; int_unsigned_t int_unsigned_array_2d[3][2]; - int_unsigned_array_t int_unsigned_array; + int_unsigned_array_t int_unsigned_array_3d; + int_unsigned_t int_unsigned_array_1d1[1]; + int_unsigned_t int_unsigned_array_2d1[1][1]; + int_unsigned_array1_t int_unsigned_array_3d1; + longint_t longint_array_0d; longint_t longint_array_1d[2]; longint_t longint_array_2d[3][2]; - longint_array_t longint_array; + longint_array_t longint_array_3d; + longint_t longint_array_1d1[1]; + longint_t longint_array_2d1[1][1]; + longint_array1_t longint_array_3d1; + longint_unsigned_t longint_unsigned_array_0d; longint_unsigned_t longint_unsigned_array_1d[2]; longint_unsigned_t longint_unsigned_array_2d[3][2]; - longint_unsigned_array_t longint_unsigned_array; + longint_unsigned_array_t longint_unsigned_array_3d; + longint_unsigned_t longint_unsigned_array_1d1[1]; + longint_unsigned_t longint_unsigned_array_2d1[1][1]; + longint_unsigned_array1_t longint_unsigned_array_3d1; + `ifndef NO_TIME time_t time_array_0d; time_t time_array_1d[2]; time_t time_array_2d[3][2]; - time_array_t time_array; + time_array_t time_array_3d; + time_t time_array_1d1[1]; + time_t time_array_2d1[1][1]; + time_array1_t time_array_3d1; `endif + `ifndef NO_INTEGER integer_t integer_array_0d; integer_t integer_array_1d[2]; integer_t integer_array_2d[3][2]; - integer_array_t integer_array; + integer_array_t integer_array_3d; + integer_t integer_array_1d1[1]; + integer_t integer_array_2d1[1][1]; + integer_array1_t integer_array_3d1; `endif + real_t real_array_0d; real_t real_array_1d[2]; real_t real_array_2d[3][2]; - real_array_t real_array; + real_array_t real_array_3d; + real_t real_array_1d1[1]; + real_t real_array_2d1[1][1]; + real_array1_t real_array_3d1; + `ifndef NO_SHORTREAL shortreal_t shortreal_array_0d; shortreal_t shortreal_array_1d[2]; shortreal_t shortreal_array_2d[3][2]; - shortreal_array_t shortreal_array; + shortreal_array_t shortreal_array_3d; + shortreal_t shortreal_array_1d1[1]; + shortreal_t shortreal_array_2d1[1][1]; + shortreal_array1_t shortreal_array_3d1; `endif + chandle_t chandle_array_0d; chandle_t chandle_array_1d[2]; chandle_t chandle_array_2d[3][2]; - chandle_array_t chandle_array; + chandle_array_t chandle_array_3d; + chandle_t chandle_array_1d1[1]; + chandle_t chandle_array_2d1[1][1]; + chandle_array1_t chandle_array_3d1; string_t string_array_0d; string_t string_array_1d[2]; string_t string_array_2d[3][2]; - string_array_t string_array; + string_array_t string_array_3d; + string_t string_array_1d1[1]; + string_t string_array_2d1[1][1]; + string_array1_t string_array_3d1; bit1_t bit1_array_0d; bit1_t bit1_array_1d[2]; bit1_t bit1_array_2d[3][2]; - bit1_array_t bit1_array; + bit1_array_t bit1_array_3d; + bit1_t bit1_array_1d1[1]; + bit1_t bit1_array_2d1[1][1]; + bit1_array1_t bit1_array_3d1; bit7_t bit7_array_0d; bit7_t bit7_array_1d[2]; bit7_t bit7_array_2d[3][2]; - bit7_array_t bit7_array; + bit7_array_t bit7_array_3d; + bit7_t bit7_array_1d1[1]; + bit7_t bit7_array_2d1[1][1]; + bit7_array1_t bit7_array_3d1; bit121_t bit121_array_0d; bit121_t bit121_array_1d[2]; bit121_t bit121_array_2d[3][2]; - bit121_array_t bit121_array; + bit121_array_t bit121_array_3d; + bit121_t bit121_array_1d1[1]; + bit121_t bit121_array_2d1[1][1]; + bit121_array1_t bit121_array_3d1; logic1_t logic1_array_0d; logic1_t logic1_array_1d[2]; logic1_t logic1_array_2d[3][2]; - logic1_array_t logic1_array; + logic1_array_t logic1_array_3d; + logic1_t logic1_array_1d1[1]; + logic1_t logic1_array_2d1[1][1]; + logic1_array1_t logic1_array_3d1; logic7_t logic7_array_0d; logic7_t logic7_array_1d[2]; logic7_t logic7_array_2d[3][2]; - logic7_array_t logic7_array; + logic7_array_t logic7_array_3d; + logic7_t logic7_array_1d1[1]; + logic7_t logic7_array_2d1[1][1]; + logic7_array1_t logic7_array_3d1; logic121_t logic121_array_0d; logic121_t logic121_array_1d[2]; logic121_t logic121_array_2d[3][2]; - logic121_array_t logic121_array; + logic121_array_t logic121_array_3d; + logic121_t logic121_array_1d1[1]; + logic121_t logic121_array_2d1[1][1]; + logic121_array1_t logic121_array_3d1; pack_struct_t pack_struct_array_0d; pack_struct_t pack_struct_array_1d[2]; pack_struct_t pack_struct_array_2d[3][2]; - pack_struct_array_t pack_struct_array; + pack_struct_array_t pack_struct_array_3d; + pack_struct_t pack_struct_array_1d1[1]; + pack_struct_t pack_struct_array_2d1[1][1]; + pack_struct_array1_t pack_struct_array_3d1; `ifndef NO_UNPACK_STRUCT - unpack_struct_t unpack_struct_array_0d; - unpack_struct_t unpack_struct_array_1d[2]; - unpack_struct_t unpack_struct_array_2d[3][2]; - unpack_struct_array_t unpack_struct_array; + unpack_struct_array_t unpack_struct_array_3d; + unpack_struct_array1_t unpack_struct_array_3d1; `endif - `SET_VALUES(byte_array); `SET_VALUE_0D(byte_array_0d); `SET_VALUE_1D(byte_array_1d); `SET_VALUE_2D(byte_array_2d); + `SET_VALUE_3D(byte_array_3d); `ifndef NO_INOUT_COMPLEX_TYPE - i_byte_0d(byte_array[3][2][1]); - `CHECK_0D(byte_array[3][2][1]); - i_byte_1d(byte_array[2][1]); - `CHECK_1D(byte_array[2][1]); - i_byte_2d(byte_array[1]); - `CHECK_2D(byte_array[1]); + i_byte_0d(byte_array_3d[3][2][1]); + `CHECK_0D(byte_array_3d[3][2][1]); + i_byte_1d(byte_array_3d[2][1]); + `CHECK_1D(byte_array_3d[2][1]); + i_byte_2d(byte_array_3d[1]); + `CHECK_2D(byte_array_3d[1]); `endif i_byte_0d(byte_array_0d); `CHECK_0D(byte_array_0d); @@ -758,20 +1122,30 @@ module t; `CHECK_1D(byte_array_1d); i_byte_2d(byte_array_2d); `CHECK_2D(byte_array_2d); - i_byte_3d(byte_array); - `CHECK_3D(byte_array); + i_byte_3d(byte_array_3d); + `CHECK_3D(byte_array_3d); + + `SET_VALUE_1D1(byte_array_1d1); + `SET_VALUE_2D1(byte_array_2d1); + `SET_VALUE_3D1(byte_array_3d1); + i_byte_1d1(byte_array_1d1); + `CHECK_1D1(byte_array_1d1); + i_byte_2d1(byte_array_2d1); + `CHECK_2D1(byte_array_2d1); + i_byte_3d1(byte_array_3d1); + `CHECK_3D1(byte_array_3d1); - `SET_VALUES(byte_unsigned_array); `SET_VALUE_0D(byte_unsigned_array_0d); `SET_VALUE_1D(byte_unsigned_array_1d); `SET_VALUE_2D(byte_unsigned_array_2d); + `SET_VALUE_3D(byte_unsigned_array_3d); `ifndef NO_INOUT_COMPLEX_TYPE - i_byte_unsigned_0d(byte_unsigned_array[3][2][1]); - `CHECK_0D(byte_unsigned_array[3][2][1]); - i_byte_unsigned_1d(byte_unsigned_array[2][1]); - `CHECK_1D(byte_unsigned_array[2][1]); - i_byte_unsigned_2d(byte_unsigned_array[1]); - `CHECK_2D(byte_unsigned_array[1]); + i_byte_unsigned_0d(byte_unsigned_array_3d[3][2][1]); + `CHECK_0D(byte_unsigned_array_3d[3][2][1]); + i_byte_unsigned_1d(byte_unsigned_array_3d[2][1]); + `CHECK_1D(byte_unsigned_array_3d[2][1]); + i_byte_unsigned_2d(byte_unsigned_array_3d[1]); + `CHECK_2D(byte_unsigned_array_3d[1]); `endif i_byte_unsigned_0d(byte_unsigned_array_0d); `CHECK_0D(byte_unsigned_array_0d); @@ -779,20 +1153,30 @@ module t; `CHECK_1D(byte_unsigned_array_1d); i_byte_unsigned_2d(byte_unsigned_array_2d); `CHECK_2D(byte_unsigned_array_2d); - i_byte_unsigned_3d(byte_unsigned_array); - `CHECK_3D(byte_unsigned_array); + i_byte_unsigned_3d(byte_unsigned_array_3d); + `CHECK_3D(byte_unsigned_array_3d); + + `SET_VALUE_1D1(byte_unsigned_array_1d1); + `SET_VALUE_2D1(byte_unsigned_array_2d1); + `SET_VALUE_3D1(byte_unsigned_array_3d1); + i_byte_unsigned_1d1(byte_unsigned_array_1d1); + `CHECK_1D1(byte_unsigned_array_1d1); + i_byte_unsigned_2d1(byte_unsigned_array_2d1); + `CHECK_2D1(byte_unsigned_array_2d1); + i_byte_unsigned_3d1(byte_unsigned_array_3d1); + `CHECK_3D1(byte_unsigned_array_3d1); - `SET_VALUES(shortint_array); `SET_VALUE_0D(shortint_array_0d); `SET_VALUE_1D(shortint_array_1d); `SET_VALUE_2D(shortint_array_2d); + `SET_VALUE_3D(shortint_array_3d); `ifndef NO_INOUT_COMPLEX_TYPE - i_shortint_0d(shortint_array[3][2][1]); - `CHECK_0D(shortint_array[3][2][1]); - i_shortint_1d(shortint_array[2][1]); - `CHECK_1D(shortint_array[2][1]); - i_shortint_2d(shortint_array[1]); - `CHECK_2D(shortint_array[1]); + i_shortint_0d(shortint_array_3d[3][2][1]); + `CHECK_0D(shortint_array_3d[3][2][1]); + i_shortint_1d(shortint_array_3d[2][1]); + `CHECK_1D(shortint_array_3d[2][1]); + i_shortint_2d(shortint_array_3d[1]); + `CHECK_2D(shortint_array_3d[1]); `endif i_shortint_0d(shortint_array_0d); `CHECK_0D(shortint_array_0d); @@ -800,20 +1184,30 @@ module t; `CHECK_1D(shortint_array_1d); i_shortint_2d(shortint_array_2d); `CHECK_2D(shortint_array_2d); - i_shortint_3d(shortint_array); - `CHECK_3D(shortint_array); + i_shortint_3d(shortint_array_3d); + `CHECK_3D(shortint_array_3d); + + `SET_VALUE_1D1(shortint_array_1d1); + `SET_VALUE_2D1(shortint_array_2d1); + `SET_VALUE_3D1(shortint_array_3d1); + i_shortint_1d1(shortint_array_1d1); + `CHECK_1D1(shortint_array_1d1); + i_shortint_2d1(shortint_array_2d1); + `CHECK_2D1(shortint_array_2d1); + i_shortint_3d1(shortint_array_3d1); + `CHECK_3D1(shortint_array_3d1); - `SET_VALUES(shortint_unsigned_array); `SET_VALUE_0D(shortint_unsigned_array_0d); `SET_VALUE_1D(shortint_unsigned_array_1d); `SET_VALUE_2D(shortint_unsigned_array_2d); + `SET_VALUE_3D(shortint_unsigned_array_3d); `ifndef NO_INOUT_COMPLEX_TYPE - i_shortint_unsigned_0d(shortint_unsigned_array[3][2][1]); - `CHECK_0D(shortint_unsigned_array[3][2][1]); - i_shortint_unsigned_1d(shortint_unsigned_array[2][1]); - `CHECK_1D(shortint_unsigned_array[2][1]); - i_shortint_unsigned_2d(shortint_unsigned_array[1]); - `CHECK_2D(shortint_unsigned_array[1]); + i_shortint_unsigned_0d(shortint_unsigned_array_3d[3][2][1]); + `CHECK_0D(shortint_unsigned_array_3d[3][2][1]); + i_shortint_unsigned_1d(shortint_unsigned_array_3d[2][1]); + `CHECK_1D(shortint_unsigned_array_3d[2][1]); + i_shortint_unsigned_2d(shortint_unsigned_array_3d[1]); + `CHECK_2D(shortint_unsigned_array_3d[1]); `endif i_shortint_unsigned_0d(shortint_unsigned_array_0d); `CHECK_0D(shortint_unsigned_array_0d); @@ -821,20 +1215,30 @@ module t; `CHECK_1D(shortint_unsigned_array_1d); i_shortint_unsigned_2d(shortint_unsigned_array_2d); `CHECK_2D(shortint_unsigned_array_2d); - i_shortint_unsigned_3d(shortint_unsigned_array); - `CHECK_3D(shortint_unsigned_array); + i_shortint_unsigned_3d(shortint_unsigned_array_3d); + `CHECK_3D(shortint_unsigned_array_3d); + + `SET_VALUE_1D1(shortint_unsigned_array_1d1); + `SET_VALUE_2D1(shortint_unsigned_array_2d1); + `SET_VALUE_3D1(shortint_unsigned_array_3d1); + i_shortint_unsigned_1d1(shortint_unsigned_array_1d1); + `CHECK_1D1(shortint_unsigned_array_1d1); + i_shortint_unsigned_2d1(shortint_unsigned_array_2d1); + `CHECK_2D1(shortint_unsigned_array_2d1); + i_shortint_unsigned_3d1(shortint_unsigned_array_3d1); + `CHECK_3D1(shortint_unsigned_array_3d1); - `SET_VALUES(int_array); `SET_VALUE_0D(int_array_0d); `SET_VALUE_1D(int_array_1d); `SET_VALUE_2D(int_array_2d); + `SET_VALUE_3D(int_array_3d); `ifndef NO_INOUT_COMPLEX_TYPE - i_int_0d(int_array[3][2][1]); - `CHECK_0D(int_array[3][2][1]); - i_int_1d(int_array[2][1]); - `CHECK_1D(int_array[2][1]); - i_int_2d(int_array[1]); - `CHECK_2D(int_array[1]); + i_int_0d(int_array_3d[3][2][1]); + `CHECK_0D(int_array_3d[3][2][1]); + i_int_1d(int_array_3d[2][1]); + `CHECK_1D(int_array_3d[2][1]); + i_int_2d(int_array_3d[1]); + `CHECK_2D(int_array_3d[1]); `endif i_int_0d(int_array_0d); `CHECK_0D(int_array_0d); @@ -842,20 +1246,30 @@ module t; `CHECK_1D(int_array_1d); i_int_2d(int_array_2d); `CHECK_2D(int_array_2d); - i_int_3d(int_array); - `CHECK_3D(int_array); + i_int_3d(int_array_3d); + `CHECK_3D(int_array_3d); + + `SET_VALUE_1D1(int_array_1d1); + `SET_VALUE_2D1(int_array_2d1); + `SET_VALUE_3D1(int_array_3d1); + i_int_1d1(int_array_1d1); + `CHECK_1D1(int_array_1d1); + i_int_2d1(int_array_2d1); + `CHECK_2D1(int_array_2d1); + i_int_3d1(int_array_3d1); + `CHECK_3D1(int_array_3d1); - `SET_VALUES(int_unsigned_array); `SET_VALUE_0D(int_unsigned_array_0d); `SET_VALUE_1D(int_unsigned_array_1d); `SET_VALUE_2D(int_unsigned_array_2d); + `SET_VALUE_3D(int_unsigned_array_3d); `ifndef NO_INOUT_COMPLEX_TYPE - i_int_unsigned_0d(int_unsigned_array[3][2][1]); - `CHECK_0D(int_unsigned_array[3][2][1]); - i_int_unsigned_1d(int_unsigned_array[2][1]); - `CHECK_1D(int_unsigned_array[2][1]); - i_int_unsigned_2d(int_unsigned_array[1]); - `CHECK_2D(int_unsigned_array[1]); + i_int_unsigned_0d(int_unsigned_array_3d[3][2][1]); + `CHECK_0D(int_unsigned_array_3d[3][2][1]); + i_int_unsigned_1d(int_unsigned_array_3d[2][1]); + `CHECK_1D(int_unsigned_array_3d[2][1]); + i_int_unsigned_2d(int_unsigned_array_3d[1]); + `CHECK_2D(int_unsigned_array_3d[1]); `endif i_int_unsigned_0d(int_unsigned_array_0d); `CHECK_0D(int_unsigned_array_0d); @@ -863,20 +1277,30 @@ module t; `CHECK_1D(int_unsigned_array_1d); i_int_unsigned_2d(int_unsigned_array_2d); `CHECK_2D(int_unsigned_array_2d); - i_int_unsigned_3d(int_unsigned_array); - `CHECK_3D(int_unsigned_array); + i_int_unsigned_3d(int_unsigned_array_3d); + `CHECK_3D(int_unsigned_array_3d); + + `SET_VALUE_1D1(int_unsigned_array_1d1); + `SET_VALUE_2D1(int_unsigned_array_2d1); + `SET_VALUE_3D1(int_unsigned_array_3d1); + i_int_unsigned_1d1(int_unsigned_array_1d1); + `CHECK_1D1(int_unsigned_array_1d1); + i_int_unsigned_2d1(int_unsigned_array_2d1); + `CHECK_2D1(int_unsigned_array_2d1); + i_int_unsigned_3d1(int_unsigned_array_3d1); + `CHECK_3D1(int_unsigned_array_3d1); - `SET_VALUES(longint_array); `SET_VALUE_0D(longint_array_0d); `SET_VALUE_1D(longint_array_1d); `SET_VALUE_2D(longint_array_2d); + `SET_VALUE_3D(longint_array_3d); `ifndef NO_INOUT_COMPLEX_TYPE - i_longint_0d(longint_array[3][2][1]); - `CHECK_0D(longint_array[3][2][1]); - i_longint_1d(longint_array[2][1]); - `CHECK_1D(longint_array[2][1]); - i_longint_2d(longint_array[1]); - `CHECK_2D(longint_array[1]); + i_longint_0d(longint_array_3d[3][2][1]); + `CHECK_0D(longint_array_3d[3][2][1]); + i_longint_1d(longint_array_3d[2][1]); + `CHECK_1D(longint_array_3d[2][1]); + i_longint_2d(longint_array_3d[1]); + `CHECK_2D(longint_array_3d[1]); `endif i_longint_0d(longint_array_0d); `CHECK_0D(longint_array_0d); @@ -884,20 +1308,30 @@ module t; `CHECK_1D(longint_array_1d); i_longint_2d(longint_array_2d); `CHECK_2D(longint_array_2d); - i_longint_3d(longint_array); - `CHECK_3D(longint_array); + i_longint_3d(longint_array_3d); + `CHECK_3D(longint_array_3d); + + `SET_VALUE_1D1(longint_array_1d1); + `SET_VALUE_2D1(longint_array_2d1); + `SET_VALUE_3D1(longint_array_3d1); + i_longint_1d1(longint_array_1d1); + `CHECK_1D1(longint_array_1d1); + i_longint_2d1(longint_array_2d1); + `CHECK_2D1(longint_array_2d1); + i_longint_3d1(longint_array_3d1); + `CHECK_3D1(longint_array_3d1); - `SET_VALUES(longint_unsigned_array); `SET_VALUE_0D(longint_unsigned_array_0d); `SET_VALUE_1D(longint_unsigned_array_1d); `SET_VALUE_2D(longint_unsigned_array_2d); + `SET_VALUE_3D(longint_unsigned_array_3d); `ifndef NO_INOUT_COMPLEX_TYPE - i_longint_unsigned_0d(longint_unsigned_array[3][2][1]); - `CHECK_0D(longint_unsigned_array[3][2][1]); - i_longint_unsigned_1d(longint_unsigned_array[2][1]); - `CHECK_1D(longint_unsigned_array[2][1]); - i_longint_unsigned_2d(longint_unsigned_array[1]); - `CHECK_2D(longint_unsigned_array[1]); + i_longint_unsigned_0d(longint_unsigned_array_3d[3][2][1]); + `CHECK_0D(longint_unsigned_array_3d[3][2][1]); + i_longint_unsigned_1d(longint_unsigned_array_3d[2][1]); + `CHECK_1D(longint_unsigned_array_3d[2][1]); + i_longint_unsigned_2d(longint_unsigned_array_3d[1]); + `CHECK_2D(longint_unsigned_array_3d[1]); `endif i_longint_unsigned_0d(longint_unsigned_array_0d); `CHECK_0D(longint_unsigned_array_0d); @@ -905,21 +1339,31 @@ module t; `CHECK_1D(longint_unsigned_array_1d); i_longint_unsigned_2d(longint_unsigned_array_2d); `CHECK_2D(longint_unsigned_array_2d); - i_longint_unsigned_3d(longint_unsigned_array); - `CHECK_3D(longint_unsigned_array); + i_longint_unsigned_3d(longint_unsigned_array_3d); + `CHECK_3D(longint_unsigned_array_3d); + + `SET_VALUE_1D1(longint_unsigned_array_1d1); + `SET_VALUE_2D1(longint_unsigned_array_2d1); + `SET_VALUE_3D1(longint_unsigned_array_3d1); + i_longint_unsigned_1d1(longint_unsigned_array_1d1); + `CHECK_1D1(longint_unsigned_array_1d1); + i_longint_unsigned_2d1(longint_unsigned_array_2d1); + `CHECK_2D1(longint_unsigned_array_2d1); + i_longint_unsigned_3d1(longint_unsigned_array_3d1); + `CHECK_3D1(longint_unsigned_array_3d1); `ifndef NO_TIME - `SET_VALUES(time_array); `SET_VALUE_0D(time_array_0d); `SET_VALUE_1D(time_array_1d); `SET_VALUE_2D(time_array_2d); + `SET_VALUE_3D(time_array_3d); `ifndef NO_INOUT_COMPLEX_TYPE - i_time_0d(time_array[3][2][1]); - `CHECK_0D(time_array[3][2][1]); - i_time_1d(time_array[2][1]); - `CHECK_1D(time_array[2][1]); - i_time_2d(time_array[1]); - `CHECK_2D(time_array[1]); + i_time_0d(time_array_3d[3][2][1]); + `CHECK_0D(time_array_3d[3][2][1]); + i_time_1d(time_array_3d[2][1]); + `CHECK_1D(time_array_3d[2][1]); + i_time_2d(time_array_3d[1]); + `CHECK_2D(time_array_3d[1]); `endif i_time_0d(time_array_0d); `CHECK_0D(time_array_0d); @@ -927,22 +1371,32 @@ module t; `CHECK_1D(time_array_1d); i_time_2d(time_array_2d); `CHECK_2D(time_array_2d); - i_time_3d(time_array); - `CHECK_3D(time_array); + i_time_3d(time_array_3d); + `CHECK_3D(time_array_3d); + + `SET_VALUE_1D1(time_array_1d1); + `SET_VALUE_2D1(time_array_2d1); + `SET_VALUE_3D1(time_array_3d1); + i_time_1d1(time_array_1d1); + `CHECK_1D1(time_array_1d1); + i_time_2d1(time_array_2d1); + `CHECK_2D1(time_array_2d1); + i_time_3d1(time_array_3d1); + `CHECK_3D1(time_array_3d1); `endif `ifndef NO_INTEGER - `SET_VALUES(integer_array); `SET_VALUE_0D(integer_array_0d); `SET_VALUE_1D(integer_array_1d); `SET_VALUE_2D(integer_array_2d); + `SET_VALUE_3D(integer_array_3d); `ifndef NO_INOUT_COMPLEX_TYPE - i_integer_0d(integer_array[3][2][1]); - `CHECK_0D(integer_array[3][2][1]); - i_integer_1d(integer_array[2][1]); - `CHECK_1D(integer_array[2][1]); - i_integer_2d(integer_array[1]); - `CHECK_2D(integer_array[1]); + i_integer_0d(integer_array_3d[3][2][1]); + `CHECK_0D(integer_array_3d[3][2][1]); + i_integer_1d(integer_array_3d[2][1]); + `CHECK_1D(integer_array_3d[2][1]); + i_integer_2d(integer_array_3d[1]); + `CHECK_2D(integer_array_3d[1]); `endif i_integer_0d(integer_array_0d); `CHECK_0D(integer_array_0d); @@ -950,21 +1404,31 @@ module t; `CHECK_1D(integer_array_1d); i_integer_2d(integer_array_2d); `CHECK_2D(integer_array_2d); - i_integer_3d(integer_array); - `CHECK_3D(integer_array); + i_integer_3d(integer_array_3d); + `CHECK_3D(integer_array_3d); + + `SET_VALUE_1D1(integer_array_1d1); + `SET_VALUE_2D1(integer_array_2d1); + `SET_VALUE_3D1(integer_array_3d1); + i_integer_1d1(integer_array_1d1); + `CHECK_1D1(integer_array_1d1); + i_integer_2d1(integer_array_2d1); + `CHECK_2D1(integer_array_2d1); + i_integer_3d1(integer_array_3d1); + `CHECK_3D1(integer_array_3d1); `endif - `SET_VALUES(real_array); `SET_VALUE_0D(real_array_0d); `SET_VALUE_1D(real_array_1d); `SET_VALUE_2D(real_array_2d); + `SET_VALUE_3D(real_array_3d); `ifndef NO_INOUT_COMPLEX_TYPE - i_real_0d(real_array[3][2][1]); - `CHECK_DOUBLE_0D(real_array[3][2][1]); - i_real_1d(real_array[2][1]); - `CHECK_DOUBLE_1D(real_array[2][1]); - i_real_2d(real_array[1]); - `CHECK_DOUBLE_2D(real_array[1]); + i_real_0d(real_array_3d[3][2][1]); + `CHECK_DOUBLE_0D(real_array_3d[3][2][1]); + i_real_1d(real_array_3d[2][1]); + `CHECK_DOUBLE_1D(real_array_3d[2][1]); + i_real_2d(real_array_3d[1]); + `CHECK_DOUBLE_2D(real_array_3d[1]); `endif i_real_0d(real_array_0d); `CHECK_DOUBLE_0D(real_array_0d); @@ -972,21 +1436,31 @@ module t; `CHECK_DOUBLE_1D(real_array_1d); i_real_2d(real_array_2d); `CHECK_DOUBLE_2D(real_array_2d); - i_real_3d(real_array); - `CHECK_DOUBLE_3D(real_array); + i_real_3d(real_array_3d); + `CHECK_DOUBLE_3D(real_array_3d); + + `SET_VALUE_1D1(real_array_1d1); + `SET_VALUE_2D1(real_array_2d1); + `SET_VALUE_3D1(real_array_3d1); + i_real_1d1(real_array_1d1); + `CHECK_1D1(real_array_1d1); + i_real_2d1(real_array_2d1); + `CHECK_2D1(real_array_2d1); + i_real_3d1(real_array_3d1); + `CHECK_3D1(real_array_3d1); `ifndef NO_SHORTREAL - `SET_VALUES(shortreal_array); `SET_VALUE_0D(shortreal_array_0d); `SET_VALUE_1D(shortreal_array_1d); `SET_VALUE_2D(shortreal_array_2d); + `SET_VALUE_3D(shortreal_array_3d); `ifndef NO_INOUT_COMPLEX_TYPE - i_shortreal_0d(shortreal_array[3][2][1]); - `CHECK_DOUBLE_0D(shortreal_array[3][2][1]); - i_shortreal_1d(shortreal_array[2][1]); - `CHECK_DOUBLE_1D(shortreal_array[2][1]); - i_shortreal_2d(shortreal_array[1]); - `CHECK_DOUBLE_2D(shortreal_array[1]); + i_shortreal_0d(shortreal_array_3d[3][2][1]); + `CHECK_DOUBLE_0D(shortreal_array_3d[3][2][1]); + i_shortreal_1d(shortreal_array_3d[2][1]); + `CHECK_DOUBLE_1D(shortreal_array_3d[2][1]); + i_shortreal_2d(shortreal_array_3d[1]); + `CHECK_DOUBLE_2D(shortreal_array_3d[1]); `endif i_shortreal_0d(shortreal_array_0d); `CHECK_DOUBLE_0D(shortreal_array_0d); @@ -994,24 +1468,34 @@ module t; `CHECK_DOUBLE_1D(shortreal_array_1d); i_shortreal_2d(shortreal_array_2d); `CHECK_DOUBLE_2D(shortreal_array_2d); - i_shortreal_3d(shortreal_array); - `CHECK_DOUBLE_3D(shortreal_array); + i_shortreal_3d(shortreal_array_3d); + `CHECK_DOUBLE_3D(shortreal_array_3d); + + `SET_VALUE_1D1(shortreal_array_1d1); + `SET_VALUE_2D1(shortreal_array_2d1); + `SET_VALUE_3D1(shortreal_array_3d1); + i_shortreal_1d1(shortreal_array_1d1); + `CHECK_1D1(shortreal_array_1d1); + i_shortreal_2d1(shortreal_array_2d1); + `CHECK_2D1(shortreal_array_2d1); + i_shortreal_3d1(shortreal_array_3d1); + `CHECK_3D1(shortreal_array_3d1); `endif for (int i = 0; i < 4; ++i) for (int j = 0; j < 3; ++j) for (int k = 0; k < 2; ++k) - chandle_array[i][j][k] = null; + chandle_array_3d[i][j][k] = null; `ifndef NO_INOUT_COMPLEX_TYPE - i_chandle_0d(chandle_array[3][2][1]); - `CHECK_CHANDLE_VAL(chandle_array[3][2][1], get_non_null()); - i_chandle_1d(chandle_array[2][1]); - `CHECK_CHANDLE_VAL(chandle_array[2][1][0], get_non_null()); - `CHECK_CHANDLE_VAL(chandle_array[2][1][1], get_non_null()); - i_chandle_2d(chandle_array[1]); - `CHECK_CHANDLE_VAL(chandle_array[1][0][1], get_non_null()); - `CHECK_CHANDLE_VAL(chandle_array[1][1][1], get_non_null()); - `CHECK_CHANDLE_VAL(chandle_array[1][2][1], get_non_null()); + i_chandle_0d(chandle_array_3d[3][2][1]); + `CHECK_CHANDLE_VAL(chandle_array_3d[3][2][1], get_non_null()); + i_chandle_1d(chandle_array_3d[2][1]); + `CHECK_CHANDLE_VAL(chandle_array_3d[2][1][0], get_non_null()); + `CHECK_CHANDLE_VAL(chandle_array_3d[2][1][1], get_non_null()); + i_chandle_2d(chandle_array_3d[1]); + `CHECK_CHANDLE_VAL(chandle_array_3d[1][0][1], get_non_null()); + `CHECK_CHANDLE_VAL(chandle_array_3d[1][1][1], get_non_null()); + `CHECK_CHANDLE_VAL(chandle_array_3d[1][2][1], get_non_null()); `endif chandle_array_0d = null; i_chandle_0d(chandle_array_0d); @@ -1028,30 +1512,40 @@ module t; `CHECK_CHANDLE_VAL(chandle_array_2d[0][1], get_non_null()); `CHECK_CHANDLE_VAL(chandle_array_2d[1][1], get_non_null()); `CHECK_CHANDLE_VAL(chandle_array_2d[2][1], get_non_null()); - i_chandle_3d(chandle_array); - `CHECK_CHANDLE_VAL(chandle_array[0][0][0], get_non_null()); - `CHECK_CHANDLE_VAL(chandle_array[1][0][0], get_non_null()); - `CHECK_CHANDLE_VAL(chandle_array[2][0][0], get_non_null()); - `CHECK_CHANDLE_VAL(chandle_array[3][0][0], get_non_null()); + i_chandle_3d(chandle_array_3d); + `CHECK_CHANDLE_VAL(chandle_array_3d[0][0][0], get_non_null()); + `CHECK_CHANDLE_VAL(chandle_array_3d[1][0][0], get_non_null()); + `CHECK_CHANDLE_VAL(chandle_array_3d[2][0][0], get_non_null()); + `CHECK_CHANDLE_VAL(chandle_array_3d[3][0][0], get_non_null()); + + chandle_array_1d1[0] = null; + i_chandle_1d1(chandle_array_1d1); + `CHECK_CHANDLE_VAL(chandle_array_1d1[0], get_non_null()); + chandle_array_2d1[0][0] = null; + i_chandle_2d1(chandle_array_2d1); + `CHECK_CHANDLE_VAL(chandle_array_2d1[0][0], get_non_null()); + chandle_array_3d1[0][0][0] = null; + i_chandle_3d1(chandle_array_3d1); + `CHECK_CHANDLE_VAL(chandle_array_3d1[0][0][0], get_non_null()); `ifndef NO_INOUT_COMPLEX_TYPE - string_array[3][2][1] = "42"; - i_string_0d(string_array[3][2][1]); - `CHECK_STRING_VAL(string_array[3][2][1], "43"); + string_array_3d[3][2][1] = "42"; + i_string_0d(string_array_3d[3][2][1]); + `CHECK_STRING_VAL(string_array_3d[3][2][1], "43"); - string_array[2][1][0] = "43"; - string_array[2][1][1] = "44"; - i_string_1d(string_array[2][1]); - `CHECK_STRING_VAL(string_array[2][1][0], "44"); - `CHECK_STRING_VAL(string_array[2][1][1], "45"); + string_array_3d[2][1][0] = "43"; + string_array_3d[2][1][1] = "44"; + i_string_1d(string_array_3d[2][1]); + `CHECK_STRING_VAL(string_array_3d[2][1][0], "44"); + `CHECK_STRING_VAL(string_array_3d[2][1][1], "45"); - string_array[1][0][1] = "45"; - string_array[1][1][1] = "46"; - string_array[1][2][1] = "47"; - i_string_2d(string_array[1]); - `CHECK_STRING_VAL(string_array[1][0][1], "46"); - `CHECK_STRING_VAL(string_array[1][1][1], "47"); - `CHECK_STRING_VAL(string_array[1][2][1], "48"); + string_array_3d[1][0][1] = "45"; + string_array_3d[1][1][1] = "46"; + string_array_3d[1][2][1] = "47"; + i_string_2d(string_array_3d[1]); + `CHECK_STRING_VAL(string_array_3d[1][0][1], "46"); + `CHECK_STRING_VAL(string_array_3d[1][1][1], "47"); + `CHECK_STRING_VAL(string_array_3d[1][2][1], "48"); `endif string_array_0d = "42"; i_string_0d(string_array_0d); @@ -1070,27 +1564,37 @@ module t; `CHECK_STRING_VAL(string_array_2d[1][1], "47"); `CHECK_STRING_VAL(string_array_2d[2][1], "48"); - string_array[0][0][0] = "48"; - string_array[1][0][0] = "49"; - string_array[2][0][0] = "50"; - string_array[3][0][0] = "51"; - i_string_3d(string_array); - `CHECK_STRING_VAL(string_array[0][0][0], "49"); - `CHECK_STRING_VAL(string_array[1][0][0], "50"); - `CHECK_STRING_VAL(string_array[2][0][0], "51"); - `CHECK_STRING_VAL(string_array[3][0][0], "52"); + string_array_3d[0][0][0] = "48"; + string_array_3d[1][0][0] = "49"; + string_array_3d[2][0][0] = "50"; + string_array_3d[3][0][0] = "51"; + i_string_3d(string_array_3d); + `CHECK_STRING_VAL(string_array_3d[0][0][0], "49"); + `CHECK_STRING_VAL(string_array_3d[1][0][0], "50"); + `CHECK_STRING_VAL(string_array_3d[2][0][0], "51"); + `CHECK_STRING_VAL(string_array_3d[3][0][0], "52"); + + string_array_1d1[0] = "52"; + i_string_1d1(string_array_1d1); + `CHECK_STRING_VAL(string_array_1d1[0], "53"); + string_array_2d1[0][0] = "53"; + i_string_2d1(string_array_2d1); + `CHECK_STRING_VAL(string_array_2d1[0][0], "54"); + string_array_3d1[0][0][0] = "54"; + i_string_3d1(string_array_3d1); + `CHECK_STRING_VAL(string_array_3d1[0][0][0], "55"); - `SET_VALUES(bit1_array); `SET_VALUE_0D(bit1_array_0d); `SET_VALUE_1D(bit1_array_1d); `SET_VALUE_2D(bit1_array_2d); + `SET_VALUE_3D(bit1_array_3d); `ifndef NO_INOUT_COMPLEX_TYPE - i_bit1_0d(bit1_array[3][2][1]); - `CHECK_0D(bit1_array[3][2][1]); - i_bit1_1d(bit1_array[2][1]); - `CHECK_1D(bit1_array[2][1]); - i_bit1_2d(bit1_array[1]); - `CHECK_2D(bit1_array[1]); + i_bit1_0d(bit1_array_3d[3][2][1]); + `CHECK_0D(bit1_array_3d[3][2][1]); + i_bit1_1d(bit1_array_3d[2][1]); + `CHECK_1D(bit1_array_3d[2][1]); + i_bit1_2d(bit1_array_3d[1]); + `CHECK_2D(bit1_array_3d[1]); `endif i_bit1_0d(bit1_array_0d); `CHECK_0D(bit1_array_0d); @@ -1098,20 +1602,30 @@ module t; `CHECK_1D(bit1_array_1d); i_bit1_2d(bit1_array_2d); `CHECK_2D(bit1_array_2d); - i_bit1_3d(bit1_array); - `CHECK_3D(bit1_array); + i_bit1_3d(bit1_array_3d); + `CHECK_3D(bit1_array_3d); + + `SET_VALUE_1D1(bit1_array_1d1); + `SET_VALUE_2D1(bit1_array_2d1); + `SET_VALUE_3D1(bit1_array_3d1); + i_bit1_1d1(bit1_array_1d1); + `CHECK_1D1(bit1_array_1d1); + i_bit1_2d1(bit1_array_2d1); + `CHECK_2D1(bit1_array_2d1); + i_bit1_3d1(bit1_array_3d1); + `CHECK_3D1(bit1_array_3d1); - `SET_VALUES(bit7_array); `SET_VALUE_0D(bit7_array_0d); `SET_VALUE_1D(bit7_array_1d); `SET_VALUE_2D(bit7_array_2d); + `SET_VALUE_3D(bit7_array_3d); `ifndef NO_INOUT_COMPLEX_TYPE - i_bit7_0d(bit7_array[3][2][1]); - `CHECK_0D(bit7_array[3][2][1]); - i_bit7_1d(bit7_array[2][1]); - `CHECK_1D(bit7_array[2][1]); - i_bit7_2d(bit7_array[1]); - `CHECK_2D(bit7_array[1]); + i_bit7_0d(bit7_array_3d[3][2][1]); + `CHECK_0D(bit7_array_3d[3][2][1]); + i_bit7_1d(bit7_array_3d[2][1]); + `CHECK_1D(bit7_array_3d[2][1]); + i_bit7_2d(bit7_array_3d[1]); + `CHECK_2D(bit7_array_3d[1]); `endif i_bit7_0d(bit7_array_0d); `CHECK_0D(bit7_array_0d); @@ -1119,20 +1633,30 @@ module t; `CHECK_1D(bit7_array_1d); i_bit7_2d(bit7_array_2d); `CHECK_2D(bit7_array_2d); - i_bit7_3d(bit7_array); - `CHECK_3D(bit7_array); + i_bit7_3d(bit7_array_3d); + `CHECK_3D(bit7_array_3d); + + `SET_VALUE_1D1(bit7_array_1d1); + `SET_VALUE_2D1(bit7_array_2d1); + `SET_VALUE_3D1(bit7_array_3d1); + i_bit7_1d1(bit7_array_1d1); + `CHECK_1D1(bit7_array_1d1); + i_bit7_2d1(bit7_array_2d1); + `CHECK_2D1(bit7_array_2d1); + i_bit7_3d1(bit7_array_3d1); + `CHECK_3D1(bit7_array_3d1); - `SET_VALUES(bit121_array); `SET_VALUE_0D(bit121_array_0d); `SET_VALUE_1D(bit121_array_1d); `SET_VALUE_2D(bit121_array_2d); + `SET_VALUE_3D(bit121_array_3d); `ifndef NO_INOUT_COMPLEX_TYPE - i_bit121_0d(bit121_array[3][2][1]); - `CHECK_0D(bit121_array[3][2][1]); - i_bit121_1d(bit121_array[2][1]); - `CHECK_1D(bit121_array[2][1]); - i_bit121_2d(bit121_array[1]); - `CHECK_2D(bit121_array[1]); + i_bit121_0d(bit121_array_3d[3][2][1]); + `CHECK_0D(bit121_array_3d[3][2][1]); + i_bit121_1d(bit121_array_3d[2][1]); + `CHECK_1D(bit121_array_3d[2][1]); + i_bit121_2d(bit121_array_3d[1]); + `CHECK_2D(bit121_array_3d[1]); `endif i_bit121_0d(bit121_array_0d); `CHECK_0D(bit121_array_0d); @@ -1140,20 +1664,30 @@ module t; `CHECK_1D(bit121_array_1d); i_bit121_2d(bit121_array_2d); `CHECK_2D(bit121_array_2d); - i_bit121_3d(bit121_array); - `CHECK_3D(bit121_array); + i_bit121_3d(bit121_array_3d); + `CHECK_3D(bit121_array_3d); + + `SET_VALUE_1D1(bit121_array_1d1); + `SET_VALUE_2D1(bit121_array_2d1); + `SET_VALUE_3D1(bit121_array_3d1); + i_bit121_1d1(bit121_array_1d1); + `CHECK_1D1(bit121_array_1d1); + i_bit121_2d1(bit121_array_2d1); + `CHECK_2D1(bit121_array_2d1); + i_bit121_3d1(bit121_array_3d1); + `CHECK_3D1(bit121_array_3d1); - `SET_VALUES(logic1_array); `SET_VALUE_0D(logic1_array_0d); `SET_VALUE_1D(logic1_array_1d); `SET_VALUE_2D(logic1_array_2d); + `SET_VALUE_3D(logic1_array_3d); `ifndef NO_INOUT_COMPLEX_TYPE - i_logic1_0d(logic1_array[3][2][1]); - `CHECK_0D(logic1_array[3][2][1]); - i_logic1_1d(logic1_array[2][1]); - `CHECK_1D(logic1_array[2][1]); - i_logic1_2d(logic1_array[1]); - `CHECK_2D(logic1_array[1]); + i_logic1_0d(logic1_array_3d[3][2][1]); + `CHECK_0D(logic1_array_3d[3][2][1]); + i_logic1_1d(logic1_array_3d[2][1]); + `CHECK_1D(logic1_array_3d[2][1]); + i_logic1_2d(logic1_array_3d[1]); + `CHECK_2D(logic1_array_3d[1]); `endif i_logic1_0d(logic1_array_0d); `CHECK_0D(logic1_array_0d); @@ -1161,20 +1695,30 @@ module t; `CHECK_1D(logic1_array_1d); i_logic1_2d(logic1_array_2d); `CHECK_2D(logic1_array_2d); - i_logic1_3d(logic1_array); - `CHECK_3D(logic1_array); + i_logic1_3d(logic1_array_3d); + `CHECK_3D(logic1_array_3d); + + `SET_VALUE_1D1(logic1_array_1d1); + `SET_VALUE_2D1(logic1_array_2d1); + `SET_VALUE_3D1(logic1_array_3d1); + i_logic1_1d1(logic1_array_1d1); + `CHECK_1D1(logic1_array_1d1); + i_logic1_2d1(logic1_array_2d1); + `CHECK_2D1(logic1_array_2d1); + i_logic1_3d1(logic1_array_3d1); + `CHECK_3D1(logic1_array_3d1); - `SET_VALUES(logic7_array); `SET_VALUE_0D(logic7_array_0d); `SET_VALUE_1D(logic7_array_1d); `SET_VALUE_2D(logic7_array_2d); + `SET_VALUE_3D(logic7_array_3d); `ifndef NO_INOUT_COMPLEX_TYPE - i_logic7_0d(logic7_array[3][2][1]); - `CHECK_0D(logic7_array[3][2][1]); - i_logic7_1d(logic7_array[2][1]); - `CHECK_1D(logic7_array[2][1]); - i_logic7_2d(logic7_array[1]); - `CHECK_2D(logic7_array[1]); + i_logic7_0d(logic7_array_3d[3][2][1]); + `CHECK_0D(logic7_array_3d[3][2][1]); + i_logic7_1d(logic7_array_3d[2][1]); + `CHECK_1D(logic7_array_3d[2][1]); + i_logic7_2d(logic7_array_3d[1]); + `CHECK_2D(logic7_array_3d[1]); `endif i_logic7_0d(logic7_array_0d); `CHECK_0D(logic7_array_0d); @@ -1182,20 +1726,30 @@ module t; `CHECK_1D(logic7_array_1d); i_logic7_2d(logic7_array_2d); `CHECK_2D(logic7_array_2d); - i_logic7_3d(logic7_array); - `CHECK_3D(logic7_array); + i_logic7_3d(logic7_array_3d); + `CHECK_3D(logic7_array_3d); + + `SET_VALUE_1D1(logic7_array_1d1); + `SET_VALUE_2D1(logic7_array_2d1); + `SET_VALUE_3D1(logic7_array_3d1); + i_logic7_1d1(logic7_array_1d1); + `CHECK_1D1(logic7_array_1d1); + i_logic7_2d1(logic7_array_2d1); + `CHECK_2D1(logic7_array_2d1); + i_logic7_3d1(logic7_array_3d1); + `CHECK_3D1(logic7_array_3d1); - `SET_VALUES(logic121_array); `SET_VALUE_0D(logic121_array_0d); `SET_VALUE_1D(logic121_array_1d); `SET_VALUE_2D(logic121_array_2d); + `SET_VALUE_3D(logic121_array_3d); `ifndef NO_INOUT_COMPLEX_TYPE - i_logic121_0d(logic121_array[3][2][1]); - `CHECK_0D(logic121_array[3][2][1]); - i_logic121_1d(logic121_array[2][1]); - `CHECK_1D(logic121_array[2][1]); - i_logic121_2d(logic121_array[1]); - `CHECK_2D(logic121_array[1]); + i_logic121_0d(logic121_array_3d[3][2][1]); + `CHECK_0D(logic121_array_3d[3][2][1]); + i_logic121_1d(logic121_array_3d[2][1]); + `CHECK_1D(logic121_array_3d[2][1]); + i_logic121_2d(logic121_array_3d[1]); + `CHECK_2D(logic121_array_3d[1]); `endif i_logic121_0d(logic121_array_0d); `CHECK_0D(logic121_array_0d); @@ -1203,20 +1757,30 @@ module t; `CHECK_1D(logic121_array_1d); i_logic121_2d(logic121_array_2d); `CHECK_2D(logic121_array_2d); - i_logic121_3d(logic121_array); - `CHECK_3D(logic121_array); + i_logic121_3d(logic121_array_3d); + `CHECK_3D(logic121_array_3d); + + `SET_VALUE_1D1(logic121_array_1d1); + `SET_VALUE_2D1(logic121_array_2d1); + `SET_VALUE_3D1(logic121_array_3d1); + i_logic121_1d1(logic121_array_1d1); + `CHECK_1D1(logic121_array_1d1); + i_logic121_2d1(logic121_array_2d1); + `CHECK_2D1(logic121_array_2d1); + i_logic121_3d1(logic121_array_3d1); + `CHECK_3D1(logic121_array_3d1); - `SET_VALUES(pack_struct_array); `SET_VALUE_0D(pack_struct_array_0d); `SET_VALUE_1D(pack_struct_array_1d); `SET_VALUE_2D(pack_struct_array_2d); + `SET_VALUE_3D(pack_struct_array_3d); `ifndef NO_INOUT_COMPLEX_TYPE - i_pack_struct_0d(pack_struct_array[3][2][1]); - `CHECK_0D(pack_struct_array[3][2][1]); - i_pack_struct_1d(pack_struct_array[2][1]); - `CHECK_1D(pack_struct_array[2][1]); - i_pack_struct_2d(pack_struct_array[1]); - `CHECK_2D(pack_struct_array[1]); + i_pack_struct_0d(pack_struct_array_3d[3][2][1]); + `CHECK_0D(pack_struct_array_3d[3][2][1]); + i_pack_struct_1d(pack_struct_array_3d[2][1]); + `CHECK_1D(pack_struct_array_3d[2][1]); + i_pack_struct_2d(pack_struct_array_3d[1]); + `CHECK_2D(pack_struct_array_3d[1]); `endif i_pack_struct_0d(pack_struct_array_0d); `CHECK_0D(pack_struct_array_0d); @@ -1224,37 +1788,57 @@ module t; `CHECK_1D(pack_struct_array_1d); i_pack_struct_2d(pack_struct_array_2d); `CHECK_2D(pack_struct_array_2d); - i_pack_struct_3d(pack_struct_array); - `CHECK_3D(pack_struct_array); + i_pack_struct_3d(pack_struct_array_3d); + `CHECK_3D(pack_struct_array_3d); + + `SET_VALUE_1D1(pack_struct_array_1d1); + `SET_VALUE_2D1(pack_struct_array_2d1); + `SET_VALUE_3D1(pack_struct_array_3d1); + i_pack_struct_1d1(pack_struct_array_1d1); + `CHECK_1D1(pack_struct_array_1d1); + i_pack_struct_2d1(pack_struct_array_2d1); + `CHECK_2D1(pack_struct_array_2d1); + i_pack_struct_3d1(pack_struct_array_3d1); + `CHECK_3D1(pack_struct_array_3d1); `ifndef NO_UNPACK_STRUCT - unpack_struct_array[3][2][1].val = 42; - i_unpack_struct_0d(unpack_struct_array[3][2][1]); - `CHECK_VAL(unpack_struct_array[3][2][1].val, 43); + unpack_struct_array_3d[3][2][1].val = 42; + i_unpack_struct_0d(unpack_struct_array_3d[3][2][1]); + `CHECK_VAL(unpack_struct_array_3d[3][2][1].val, 43); - unpack_struct_array[2][1][0].val = 43; - unpack_struct_array[2][1][1].val = 44; - i_unpack_struct_1d(unpack_struct_array[2][1]); - `CHECK_VAL(unpack_struct_array[2][1][0].val, 44); - `CHECK_VAL(unpack_struct_array[2][1][1].val, 45); + unpack_struct_array_3d[2][1][0].val = 43; + unpack_struct_array_3d[2][1][1].val = 44; + i_unpack_struct_1d(unpack_struct_array_3d[2][1]); + `CHECK_VAL(unpack_struct_array_3d[2][1][0].val, 44); + `CHECK_VAL(unpack_struct_array_3d[2][1][1].val, 45); - unpack_struct_array[1][0][1].val = 45; - unpack_struct_array[1][1][1].val = 46; - unpack_struct_array[1][2][1].val = 47; - i_unpack_struct_2d(unpack_struct_array[1]); - `CHECK_VAL(unpack_struct_array[1][0][1].val, 46); - `CHECK_VAL(unpack_struct_array[1][1][1].val, 47); - `CHECK_VAL(unpack_struct_array[1][2][1].val, 48); + unpack_struct_array_3d[1][0][1].val = 45; + unpack_struct_array_3d[1][1][1].val = 46; + unpack_struct_array_3d[1][2][1].val = 47; + i_unpack_struct_2d(unpack_struct_array_3d[1]); + `CHECK_VAL(unpack_struct_array_3d[1][0][1].val, 46); + `CHECK_VAL(unpack_struct_array_3d[1][1][1].val, 47); + `CHECK_VAL(unpack_struct_array_3d[1][2][1].val, 48); - unpack_struct_array[0][0][0].val = 48; - unpack_struct_array[1][0][0].val = 49; - unpack_struct_array[2][0][0].val = 50; - unpack_struct_array[3][0][0].val = 51; - i_unpack_struct_3d(unpack_struct_array); - `CHECK_VAL(unpack_struct_array[0][0][0].val, 49); - `CHECK_VAL(unpack_struct_array[1][0][0].val, 50); - `CHECK_VAL(unpack_struct_array[2][0][0].val, 51); - `CHECK_VAL(unpack_struct_array[3][0][0].val, 52); + unpack_struct_array_3d[0][0][0].val = 48; + unpack_struct_array_3d[1][0][0].val = 49; + unpack_struct_array_3d[2][0][0].val = 50; + unpack_struct_array_3d[3][0][0].val = 51; + i_unpack_struct_3d(unpack_struct_array_3d); + `CHECK_VAL(unpack_struct_array_3d[0][0][0].val, 49); + `CHECK_VAL(unpack_struct_array_3d[1][0][0].val, 50); + `CHECK_VAL(unpack_struct_array_3d[2][0][0].val, 51); + `CHECK_VAL(unpack_struct_array_3d[3][0][0].val, 52); + + unpack_struct_array_3d1[0][0][0].val = 52; + i_unpack_struct_1d1(unpack_struct_array_3d1[0][0]); + `CHECK_VAL(unpack_struct_array_3d1[0][0][0].val, 53); + unpack_struct_array_3d1[0][0][0].val = 53; + i_unpack_struct_2d1(unpack_struct_array_3d1[0]); + `CHECK_VAL(unpack_struct_array_3d1[0][0][0].val, 54); + unpack_struct_array_3d1[0][0][0].val = 54; + i_unpack_struct_3d1(unpack_struct_array_3d1); + `CHECK_VAL(unpack_struct_array_3d1[0][0][0].val, 55); `endif check_exports(); diff --git a/test_regress/t/t_dpi_arg_inout_unpack__Dpi.out b/test_regress/t/t_dpi_arg_inout_unpack__Dpi.out index 83beb561a..e1254b075 100644 --- a/test_regress/t/t_dpi_arg_inout_unpack__Dpi.out +++ b/test_regress/t/t_dpi_arg_inout_unpack__Dpi.out @@ -18,168 +18,288 @@ extern "C" { // DPI EXPORTS extern void e_bit121_0d(svBitVecVal* val); extern void e_bit121_1d(svBitVecVal* val); +extern void e_bit121_1d1(svBitVecVal* val); extern void e_bit121_2d(svBitVecVal* val); +extern void e_bit121_2d1(svBitVecVal* val); extern void e_bit121_3d(svBitVecVal* val); +extern void e_bit121_3d1(svBitVecVal* val); extern void e_bit1_0d(svBit* val); extern void e_bit1_1d(svBit* val); +extern void e_bit1_1d1(svBit* val); extern void e_bit1_2d(svBit* val); +extern void e_bit1_2d1(svBit* val); extern void e_bit1_3d(svBit* val); +extern void e_bit1_3d1(svBit* val); extern void e_bit7_0d(svBitVecVal* val); extern void e_bit7_1d(svBitVecVal* val); +extern void e_bit7_1d1(svBitVecVal* val); extern void e_bit7_2d(svBitVecVal* val); +extern void e_bit7_2d1(svBitVecVal* val); extern void e_bit7_3d(svBitVecVal* val); +extern void e_bit7_3d1(svBitVecVal* val); extern void e_byte_0d(char* val); extern void e_byte_1d(char* val); +extern void e_byte_1d1(char* val); extern void e_byte_2d(char* val); +extern void e_byte_2d1(char* val); extern void e_byte_3d(char* val); +extern void e_byte_3d1(char* val); extern void e_byte_unsigned_0d(unsigned char* val); extern void e_byte_unsigned_1d(unsigned char* val); +extern void e_byte_unsigned_1d1(unsigned char* val); extern void e_byte_unsigned_2d(unsigned char* val); +extern void e_byte_unsigned_2d1(unsigned char* val); extern void e_byte_unsigned_3d(unsigned char* val); +extern void e_byte_unsigned_3d1(unsigned char* val); extern void e_chandle_0d(void** val); extern void e_chandle_1d(void** val); +extern void e_chandle_1d1(void** val); extern void e_chandle_2d(void** val); +extern void e_chandle_2d1(void** val); extern void e_chandle_3d(void** val); +extern void e_chandle_3d1(void** val); extern void e_int_0d(int* val); extern void e_int_1d(int* val); +extern void e_int_1d1(int* val); extern void e_int_2d(int* val); +extern void e_int_2d1(int* val); extern void e_int_3d(int* val); +extern void e_int_3d1(int* val); extern void e_int_unsigned_0d(unsigned int* val); extern void e_int_unsigned_1d(unsigned int* val); +extern void e_int_unsigned_1d1(unsigned int* val); extern void e_int_unsigned_2d(unsigned int* val); +extern void e_int_unsigned_2d1(unsigned int* val); extern void e_int_unsigned_3d(unsigned int* val); +extern void e_int_unsigned_3d1(unsigned int* val); extern void e_integer_0d(svLogicVecVal* val); extern void e_integer_1d(svLogicVecVal* val); +extern void e_integer_1d1(svLogicVecVal* val); extern void e_integer_2d(svLogicVecVal* val); +extern void e_integer_2d1(svLogicVecVal* val); extern void e_integer_3d(svLogicVecVal* val); +extern void e_integer_3d1(svLogicVecVal* val); extern void e_logic121_0d(svLogicVecVal* val); extern void e_logic121_1d(svLogicVecVal* val); +extern void e_logic121_1d1(svLogicVecVal* val); extern void e_logic121_2d(svLogicVecVal* val); +extern void e_logic121_2d1(svLogicVecVal* val); extern void e_logic121_3d(svLogicVecVal* val); +extern void e_logic121_3d1(svLogicVecVal* val); extern void e_logic1_0d(svLogic* val); extern void e_logic1_1d(svLogic* val); +extern void e_logic1_1d1(svLogic* val); extern void e_logic1_2d(svLogic* val); +extern void e_logic1_2d1(svLogic* val); extern void e_logic1_3d(svLogic* val); +extern void e_logic1_3d1(svLogic* val); extern void e_logic7_0d(svLogicVecVal* val); extern void e_logic7_1d(svLogicVecVal* val); +extern void e_logic7_1d1(svLogicVecVal* val); extern void e_logic7_2d(svLogicVecVal* val); +extern void e_logic7_2d1(svLogicVecVal* val); extern void e_logic7_3d(svLogicVecVal* val); +extern void e_logic7_3d1(svLogicVecVal* val); extern void e_longint_0d(long long* val); extern void e_longint_1d(long long* val); +extern void e_longint_1d1(long long* val); extern void e_longint_2d(long long* val); +extern void e_longint_2d1(long long* val); extern void e_longint_3d(long long* val); +extern void e_longint_3d1(long long* val); extern void e_longint_unsigned_0d(unsigned long long* val); extern void e_longint_unsigned_1d(unsigned long long* val); +extern void e_longint_unsigned_1d1(unsigned long long* val); extern void e_longint_unsigned_2d(unsigned long long* val); +extern void e_longint_unsigned_2d1(unsigned long long* val); extern void e_longint_unsigned_3d(unsigned long long* val); +extern void e_longint_unsigned_3d1(unsigned long long* val); extern void e_pack_struct_0d(svLogicVecVal* val); extern void e_pack_struct_1d(svLogicVecVal* val); +extern void e_pack_struct_1d1(svLogicVecVal* val); extern void e_pack_struct_2d(svLogicVecVal* val); +extern void e_pack_struct_2d1(svLogicVecVal* val); extern void e_pack_struct_3d(svLogicVecVal* val); +extern void e_pack_struct_3d1(svLogicVecVal* val); extern void e_real_0d(double* val); extern void e_real_1d(double* val); +extern void e_real_1d1(double* val); extern void e_real_2d(double* val); +extern void e_real_2d1(double* val); extern void e_real_3d(double* val); +extern void e_real_3d1(double* val); extern void e_shortint_0d(short* val); extern void e_shortint_1d(short* val); +extern void e_shortint_1d1(short* val); extern void e_shortint_2d(short* val); +extern void e_shortint_2d1(short* val); extern void e_shortint_3d(short* val); +extern void e_shortint_3d1(short* val); extern void e_shortint_unsigned_0d(unsigned short* val); extern void e_shortint_unsigned_1d(unsigned short* val); +extern void e_shortint_unsigned_1d1(unsigned short* val); extern void e_shortint_unsigned_2d(unsigned short* val); +extern void e_shortint_unsigned_2d1(unsigned short* val); extern void e_shortint_unsigned_3d(unsigned short* val); +extern void e_shortint_unsigned_3d1(unsigned short* val); extern void e_string_0d(const char** val); extern void e_string_1d(const char** val); +extern void e_string_1d1(const char** val); extern void e_string_2d(const char** val); +extern void e_string_2d1(const char** val); extern void e_string_3d(const char** val); +extern void e_string_3d1(const char** val); extern void e_time_0d(svLogicVecVal* val); extern void e_time_1d(svLogicVecVal* val); +extern void e_time_1d1(svLogicVecVal* val); extern void e_time_2d(svLogicVecVal* val); +extern void e_time_2d1(svLogicVecVal* val); extern void e_time_3d(svLogicVecVal* val); +extern void e_time_3d1(svLogicVecVal* val); // DPI IMPORTS extern void check_exports(); extern void* get_non_null(); extern void i_bit121_0d(svBitVecVal* val); extern void i_bit121_1d(svBitVecVal* val); +extern void i_bit121_1d1(svBitVecVal* val); extern void i_bit121_2d(svBitVecVal* val); +extern void i_bit121_2d1(svBitVecVal* val); extern void i_bit121_3d(svBitVecVal* val); +extern void i_bit121_3d1(svBitVecVal* val); extern void i_bit1_0d(svBit* val); extern void i_bit1_1d(svBit* val); +extern void i_bit1_1d1(svBit* val); extern void i_bit1_2d(svBit* val); +extern void i_bit1_2d1(svBit* val); extern void i_bit1_3d(svBit* val); +extern void i_bit1_3d1(svBit* val); extern void i_bit7_0d(svBitVecVal* val); extern void i_bit7_1d(svBitVecVal* val); +extern void i_bit7_1d1(svBitVecVal* val); extern void i_bit7_2d(svBitVecVal* val); +extern void i_bit7_2d1(svBitVecVal* val); extern void i_bit7_3d(svBitVecVal* val); +extern void i_bit7_3d1(svBitVecVal* val); extern void i_byte_0d(char* val); extern void i_byte_1d(char* val); +extern void i_byte_1d1(char* val); extern void i_byte_2d(char* val); +extern void i_byte_2d1(char* val); extern void i_byte_3d(char* val); +extern void i_byte_3d1(char* val); extern void i_byte_unsigned_0d(unsigned char* val); extern void i_byte_unsigned_1d(unsigned char* val); +extern void i_byte_unsigned_1d1(unsigned char* val); extern void i_byte_unsigned_2d(unsigned char* val); +extern void i_byte_unsigned_2d1(unsigned char* val); extern void i_byte_unsigned_3d(unsigned char* val); +extern void i_byte_unsigned_3d1(unsigned char* val); extern void i_chandle_0d(void** val); extern void i_chandle_1d(void** val); +extern void i_chandle_1d1(void** val); extern void i_chandle_2d(void** val); +extern void i_chandle_2d1(void** val); extern void i_chandle_3d(void** val); +extern void i_chandle_3d1(void** val); extern void i_int_0d(int* val); extern void i_int_1d(int* val); +extern void i_int_1d1(int* val); extern void i_int_2d(int* val); +extern void i_int_2d1(int* val); extern void i_int_3d(int* val); +extern void i_int_3d1(int* val); extern void i_int_unsigned_0d(unsigned int* val); extern void i_int_unsigned_1d(unsigned int* val); +extern void i_int_unsigned_1d1(unsigned int* val); extern void i_int_unsigned_2d(unsigned int* val); +extern void i_int_unsigned_2d1(unsigned int* val); extern void i_int_unsigned_3d(unsigned int* val); +extern void i_int_unsigned_3d1(unsigned int* val); extern void i_integer_0d(svLogicVecVal* val); extern void i_integer_1d(svLogicVecVal* val); +extern void i_integer_1d1(svLogicVecVal* val); extern void i_integer_2d(svLogicVecVal* val); +extern void i_integer_2d1(svLogicVecVal* val); extern void i_integer_3d(svLogicVecVal* val); +extern void i_integer_3d1(svLogicVecVal* val); extern void i_logic121_0d(svLogicVecVal* val); extern void i_logic121_1d(svLogicVecVal* val); +extern void i_logic121_1d1(svLogicVecVal* val); extern void i_logic121_2d(svLogicVecVal* val); +extern void i_logic121_2d1(svLogicVecVal* val); extern void i_logic121_3d(svLogicVecVal* val); +extern void i_logic121_3d1(svLogicVecVal* val); extern void i_logic1_0d(svLogic* val); extern void i_logic1_1d(svLogic* val); +extern void i_logic1_1d1(svLogic* val); extern void i_logic1_2d(svLogic* val); +extern void i_logic1_2d1(svLogic* val); extern void i_logic1_3d(svLogic* val); +extern void i_logic1_3d1(svLogic* val); extern void i_logic7_0d(svLogicVecVal* val); extern void i_logic7_1d(svLogicVecVal* val); +extern void i_logic7_1d1(svLogicVecVal* val); extern void i_logic7_2d(svLogicVecVal* val); +extern void i_logic7_2d1(svLogicVecVal* val); extern void i_logic7_3d(svLogicVecVal* val); +extern void i_logic7_3d1(svLogicVecVal* val); extern void i_longint_0d(long long* val); extern void i_longint_1d(long long* val); +extern void i_longint_1d1(long long* val); extern void i_longint_2d(long long* val); +extern void i_longint_2d1(long long* val); extern void i_longint_3d(long long* val); +extern void i_longint_3d1(long long* val); extern void i_longint_unsigned_0d(unsigned long long* val); extern void i_longint_unsigned_1d(unsigned long long* val); +extern void i_longint_unsigned_1d1(unsigned long long* val); extern void i_longint_unsigned_2d(unsigned long long* val); +extern void i_longint_unsigned_2d1(unsigned long long* val); extern void i_longint_unsigned_3d(unsigned long long* val); +extern void i_longint_unsigned_3d1(unsigned long long* val); extern void i_pack_struct_0d(svLogicVecVal* val); extern void i_pack_struct_1d(svLogicVecVal* val); +extern void i_pack_struct_1d1(svLogicVecVal* val); extern void i_pack_struct_2d(svLogicVecVal* val); +extern void i_pack_struct_2d1(svLogicVecVal* val); extern void i_pack_struct_3d(svLogicVecVal* val); +extern void i_pack_struct_3d1(svLogicVecVal* val); extern void i_real_0d(double* val); extern void i_real_1d(double* val); +extern void i_real_1d1(double* val); extern void i_real_2d(double* val); +extern void i_real_2d1(double* val); extern void i_real_3d(double* val); +extern void i_real_3d1(double* val); extern void i_shortint_0d(short* val); extern void i_shortint_1d(short* val); +extern void i_shortint_1d1(short* val); extern void i_shortint_2d(short* val); +extern void i_shortint_2d1(short* val); extern void i_shortint_3d(short* val); +extern void i_shortint_3d1(short* val); extern void i_shortint_unsigned_0d(unsigned short* val); extern void i_shortint_unsigned_1d(unsigned short* val); +extern void i_shortint_unsigned_1d1(unsigned short* val); extern void i_shortint_unsigned_2d(unsigned short* val); +extern void i_shortint_unsigned_2d1(unsigned short* val); extern void i_shortint_unsigned_3d(unsigned short* val); +extern void i_shortint_unsigned_3d1(unsigned short* val); extern void i_string_0d(const char** val); extern void i_string_1d(const char** val); +extern void i_string_1d1(const char** val); extern void i_string_2d(const char** val); +extern void i_string_2d1(const char** val); extern void i_string_3d(const char** val); +extern void i_string_3d1(const char** val); extern void i_time_0d(svLogicVecVal* val); extern void i_time_1d(svLogicVecVal* val); +extern void i_time_1d1(svLogicVecVal* val); extern void i_time_2d(svLogicVecVal* val); +extern void i_time_2d1(svLogicVecVal* val); extern void i_time_3d(svLogicVecVal* val); +extern void i_time_3d1(svLogicVecVal* val); #ifdef __cplusplus } diff --git a/test_regress/t/t_dpi_arg_input_unpack.cpp b/test_regress/t/t_dpi_arg_input_unpack.cpp index 3fe37bf1b..78129a800 100644 --- a/test_regress/t/t_dpi_arg_input_unpack.cpp +++ b/test_regress/t/t_dpi_arg_input_unpack.cpp @@ -134,6 +134,18 @@ bool check_3d(const T* v) { return compare(v[(0 * 3 + 0) * 2 + 0], 48) && compare(v[(1 * 3 + 0) * 2 + 0], 49) && compare(v[(2 * 3 + 0) * 2 + 0], 50) && compare(v[(3 * 3 + 0) * 2 + 0], 51); } +template +bool check_1d1(const T* v) { + return compare(v[0], 52); +} +template +bool check_2d1(const T* v) { + return compare(v[0], 53); +} +template +bool check_3d1(const T* v) { + return compare(v[0], 54); +} bool check_0d(const svLogicVecVal* v, int bitwidth) { return compare(v, 42, bitwidth); } bool check_1d(const svLogicVecVal* v, int bitwidth) { @@ -153,6 +165,9 @@ bool check_3d(const svLogicVecVal* v, int bitwidth) { && compare(v + unit * ((2 * 3 + 0) * 2 + 0), 50, bitwidth) && compare(v + unit * ((3 * 3 + 0) * 2 + 0), 51, bitwidth); } +bool check_1d1(const svLogicVecVal* v, int bitwidth) { return compare(v, 52, bitwidth); } +bool check_2d1(const svLogicVecVal* v, int bitwidth) { return compare(v, 53, bitwidth); } +bool check_3d1(const svLogicVecVal* v, int bitwidth) { return compare(v, 54, bitwidth); } bool check_0d(const svBitVecVal* v, int bitwidth) { return compare(v, 42, bitwidth); } bool check_1d(const svBitVecVal* v, int bitwidth) { @@ -172,6 +187,9 @@ bool check_3d(const svBitVecVal* v, int bitwidth) { && compare(v + unit * ((2 * 3 + 0) * 2 + 0), 50, bitwidth) && compare(v + unit * ((3 * 3 + 0) * 2 + 0), 51, bitwidth); } +bool check_1d1(const svBitVecVal* v, int bitwidth) { return compare(v, 52, bitwidth); } +bool check_2d1(const svBitVecVal* v, int bitwidth) { return compare(v, 53, bitwidth); } +bool check_3d1(const svBitVecVal* v, int bitwidth) { return compare(v, 54, bitwidth); } bool check_0d(const char* v) { return compare(v, "42"); } bool check_1d(const char** v) { @@ -187,6 +205,9 @@ bool check_3d(const char** v) { && compare(v[(2 * 3 + 0) * 2 + 0], "50") && compare(v[(3 * 3 + 0) * 2 + 0], "51"); } +bool check_1d1(const char** v) { return compare(v[0], "52"); } +bool check_2d1(const char** v) { return compare(v[0], "53"); } +bool check_3d1(const char** v) { return compare(v[0], "54"); } template void set_values(T (&v)[4][3][2]) { @@ -286,6 +307,15 @@ void i_byte_2d(const char* v) { void i_byte_3d(const char* v) { if (!check_3d(v)) stop(); } +void i_byte_1d1(const char* v) { + if (!check_1d1(v)) stop(); +} +void i_byte_2d1(const char* v) { + if (!check_2d1(v)) stop(); +} +void i_byte_3d1(const char* v) { + if (!check_3d1(v)) stop(); +} void i_byte_unsigned_0d(unsigned char v) { if (!check_0d(v)) stop(); @@ -299,6 +329,15 @@ void i_byte_unsigned_2d(const unsigned char* v) { void i_byte_unsigned_3d(const unsigned char* v) { if (!check_3d(v)) stop(); } +void i_byte_unsigned_1d1(const unsigned char* v) { + if (!check_1d1(v)) stop(); +} +void i_byte_unsigned_2d1(const unsigned char* v) { + if (!check_2d1(v)) stop(); +} +void i_byte_unsigned_3d1(const unsigned char* v) { + if (!check_3d1(v)) stop(); +} void i_shortint_0d(short v) { if (!check_0d(v)) stop(); @@ -312,6 +351,15 @@ void i_shortint_2d(const short* v) { void i_shortint_3d(const short* v) { if (!check_3d(v)) stop(); } +void i_shortint_1d1(const short* v) { + if (!check_1d1(v)) stop(); +} +void i_shortint_2d1(const short* v) { + if (!check_2d1(v)) stop(); +} +void i_shortint_3d1(const short* v) { + if (!check_3d1(v)) stop(); +} void i_shortint_unsigned_0d(unsigned short v) { if (!check_0d(v)) stop(); @@ -325,6 +373,15 @@ void i_shortint_unsigned_2d(const unsigned short* v) { void i_shortint_unsigned_3d(const unsigned short* v) { if (!check_3d(v)) stop(); } +void i_shortint_unsigned_1d1(const unsigned short* v) { + if (!check_1d1(v)) stop(); +} +void i_shortint_unsigned_2d1(const unsigned short* v) { + if (!check_2d1(v)) stop(); +} +void i_shortint_unsigned_3d1(const unsigned short* v) { + if (!check_3d1(v)) stop(); +} void i_int_0d(int v) { if (!check_0d(v)) stop(); @@ -338,6 +395,15 @@ void i_int_2d(const int* v) { void i_int_3d(const int* v) { if (!check_3d(v)) stop(); } +void i_int_1d1(const int* v) { + if (!check_1d1(v)) stop(); +} +void i_int_2d1(const int* v) { + if (!check_2d1(v)) stop(); +} +void i_int_3d1(const int* v) { + if (!check_3d1(v)) stop(); +} void i_int_unsigned_0d(unsigned v) { if (!check_0d(v)) stop(); @@ -351,6 +417,15 @@ void i_int_unsigned_2d(const unsigned* v) { void i_int_unsigned_3d(const unsigned* v) { if (!check_3d(v)) stop(); } +void i_int_unsigned_1d1(const unsigned* v) { + if (!check_1d1(v)) stop(); +} +void i_int_unsigned_2d1(const unsigned* v) { + if (!check_2d1(v)) stop(); +} +void i_int_unsigned_3d1(const unsigned* v) { + if (!check_3d1(v)) stop(); +} void i_longint_0d(sv_longint_t v) { if (!check_0d(v)) stop(); @@ -364,6 +439,15 @@ void i_longint_2d(const sv_longint_t* v) { void i_longint_3d(const sv_longint_t* v) { if (!check_3d(v)) stop(); } +void i_longint_1d1(const sv_longint_t* v) { + if (!check_1d1(v)) stop(); +} +void i_longint_2d1(const sv_longint_t* v) { + if (!check_2d1(v)) stop(); +} +void i_longint_3d1(const sv_longint_t* v) { + if (!check_3d1(v)) stop(); +} void i_longint_unsigned_0d(sv_longint_unsigned_t v) { if (!check_0d(v)) stop(); @@ -377,6 +461,15 @@ void i_longint_unsigned_2d(const sv_longint_unsigned_t* v) { void i_longint_unsigned_3d(const sv_longint_unsigned_t* v) { if (!check_3d(v)) stop(); } +void i_longint_unsigned_1d1(const sv_longint_unsigned_t* v) { + if (!check_1d1(v)) stop(); +} +void i_longint_unsigned_2d1(const sv_longint_unsigned_t* v) { + if (!check_2d1(v)) stop(); +} +void i_longint_unsigned_3d1(const sv_longint_unsigned_t* v) { + if (!check_3d1(v)) stop(); +} #ifndef NO_TIME void i_time_0d(CONSTARG svLogicVecVal* v) { @@ -391,6 +484,15 @@ void i_time_2d(CONSTARG svLogicVecVal* v) { void i_time_3d(CONSTARG svLogicVecVal* v) { if (!check_3d(v, 64)) stop(); } +void i_time_1d1(CONSTARG svLogicVecVal* v) { + if (!check_1d1(v, 64)) stop(); +} +void i_time_2d1(CONSTARG svLogicVecVal* v) { + if (!check_2d1(v, 64)) stop(); +} +void i_time_3d1(CONSTARG svLogicVecVal* v) { + if (!check_3d1(v, 64)) stop(); +} #endif #ifndef NO_INTEGER @@ -406,6 +508,15 @@ void i_integer_2d(CONSTARG svLogicVecVal* v) { void i_integer_3d(CONSTARG svLogicVecVal* v) { if (!check_3d(v, 32)) stop(); } +void i_integer_1d1(CONSTARG svLogicVecVal* v) { + if (!check_1d1(v, 32)) stop(); +} +void i_integer_2d1(CONSTARG svLogicVecVal* v) { + if (!check_2d1(v, 32)) stop(); +} +void i_integer_3d1(CONSTARG svLogicVecVal* v) { + if (!check_3d1(v, 32)) stop(); +} #endif void i_real_0d(double v) { @@ -420,6 +531,15 @@ void i_real_2d(CONSTARG double* v) { void i_real_3d(CONSTARG double* v) { if (!check_3d(v)) stop(); } +void i_real_1d1(CONSTARG double* v) { + if (!check_1d1(v)) stop(); +} +void i_real_2d1(CONSTARG double* v) { + if (!check_2d1(v)) stop(); +} +void i_real_3d1(CONSTARG double* v) { + if (!check_3d1(v)) stop(); +} #ifndef NO_SHORTREAL void i_shortreal_0d(float v) { @@ -434,6 +554,15 @@ void i_shortreal_2d(CONSTARG float* v) { void i_shortreal_3d(CONSTARG float* v) { if (!check_3d(v)) stop(); } +void i_shortreal_1d1(CONSTARG float* v) { + if (!check_1d1(v)) stop(); +} +void i_shortreal_2d1(CONSTARG float* v) { + if (!check_2d1(v)) stop(); +} +void i_shortreal_3d1(CONSTARG float* v) { + if (!check_3d1(v)) stop(); +} #endif void i_chandle_0d(void* v) { @@ -454,6 +583,15 @@ void i_chandle_3d(sv_chandle_array_ptr_t v) { if (!v[(2 * 3 + 0) * 2 + 0]) stop(); if (!v[(3 * 3 + 0) * 2 + 0]) stop(); } +void i_chandle_1d1(sv_chandle_array_ptr_t v) { + if (!v[0]) stop(); +} +void i_chandle_2d1(sv_chandle_array_ptr_t v) { + if (!v[0]) stop(); +} +void i_chandle_3d1(sv_chandle_array_ptr_t v) { + if (!v[0]) stop(); +} void i_string_0d(CONSTARG char* v) { if (!check_0d(v)) stop(); @@ -467,6 +605,15 @@ void i_string_2d(CONSTARG char** v) { void i_string_3d(CONSTARG char** v) { if (!check_3d(v)) stop(); } +void i_string_1d1(CONSTARG char** v) { + if (!check_1d1(v)) stop(); +} +void i_string_2d1(CONSTARG char** v) { + if (!check_2d1(v)) stop(); +} +void i_string_3d1(CONSTARG char** v) { + if (!check_3d1(v)) stop(); +} void i_bit1_0d(CONSTARG svBit v) { if (!compare(v, sv_0)) stop(); @@ -486,6 +633,15 @@ void i_bit1_3d(CONSTARG svBit* v) { if (!compare(v[(2 * 3 + 0) * 2 + 0], sv_0)) stop(); if (!compare(v[(3 * 3 + 0) * 2 + 0], sv_1)) stop(); } +void i_bit1_1d1(CONSTARG svBit* v) { + if (!compare(v[0], sv_0)) stop(); +} +void i_bit1_2d1(CONSTARG svBit* v) { + if (!compare(v[0], sv_1)) stop(); +} +void i_bit1_3d1(CONSTARG svBit* v) { + if (!compare(v[0], sv_0)) stop(); +} void i_bit7_0d(CONSTARG svBitVecVal* v) { if (!check_0d(v, 7)) stop(); @@ -499,6 +655,15 @@ void i_bit7_2d(CONSTARG svBitVecVal* v) { void i_bit7_3d(CONSTARG svBitVecVal* v) { if (!check_3d(v, 7)) stop(); } +void i_bit7_1d1(CONSTARG svBitVecVal* v) { + if (!check_1d1(v, 7)) stop(); +} +void i_bit7_2d1(CONSTARG svBitVecVal* v) { + if (!check_2d1(v, 7)) stop(); +} +void i_bit7_3d1(CONSTARG svBitVecVal* v) { + if (!check_3d1(v, 7)) stop(); +} void i_bit121_0d(CONSTARG svBitVecVal* v) { if (!check_0d(v, 121)) stop(); @@ -512,6 +677,15 @@ void i_bit121_2d(CONSTARG svBitVecVal* v) { void i_bit121_3d(CONSTARG svBitVecVal* v) { if (!check_3d(v, 121)) stop(); } +void i_bit121_1d1(CONSTARG svBitVecVal* v) { + if (!check_1d1(v, 121)) stop(); +} +void i_bit121_2d1(CONSTARG svBitVecVal* v) { + if (!check_2d1(v, 121)) stop(); +} +void i_bit121_3d1(CONSTARG svBitVecVal* v) { + if (!check_3d1(v, 121)) stop(); +} void i_logic1_0d(CONSTARG svLogic v) { if (!compare(v, sv_0)) stop(); @@ -531,6 +705,15 @@ void i_logic1_3d(CONSTARG svLogic* v) { if (!compare(v[(2 * 3 + 0) * 2 + 0], sv_0)) stop(); if (!compare(v[(3 * 3 + 0) * 2 + 0], sv_1)) stop(); } +void i_logic1_1d1(CONSTARG svLogic* v) { + if (!compare(v[0], sv_0)) stop(); +} +void i_logic1_2d1(CONSTARG svLogic* v) { + if (!compare(v[0], sv_1)) stop(); +} +void i_logic1_3d1(CONSTARG svLogic* v) { + if (!compare(v[0], sv_0)) stop(); +} void i_logic7_0d(CONSTARG svLogicVecVal* v) { if (!check_0d(v, 7)) stop(); @@ -544,6 +727,15 @@ void i_logic7_2d(CONSTARG svLogicVecVal* v) { void i_logic7_3d(CONSTARG svLogicVecVal* v) { if (!check_3d(v, 7)) stop(); } +void i_logic7_1d1(CONSTARG svLogicVecVal* v) { + if (!check_1d1(v, 7)) stop(); +} +void i_logic7_2d1(CONSTARG svLogicVecVal* v) { + if (!check_2d1(v, 7)) stop(); +} +void i_logic7_3d1(CONSTARG svLogicVecVal* v) { + if (!check_3d1(v, 7)) stop(); +} void i_logic121_0d(CONSTARG svLogicVecVal* v) { if (!check_0d(v, 121)) stop(); @@ -557,6 +749,15 @@ void i_logic121_2d(CONSTARG svLogicVecVal* v) { void i_logic121_3d(CONSTARG svLogicVecVal* v) { if (!check_3d(v, 121)) stop(); } +void i_logic121_1d1(CONSTARG svLogicVecVal* v) { + if (!check_1d1(v, 121)) stop(); +} +void i_logic121_2d1(CONSTARG svLogicVecVal* v) { + if (!check_2d1(v, 121)) stop(); +} +void i_logic121_3d1(CONSTARG svLogicVecVal* v) { + if (!check_3d1(v, 121)) stop(); +} void i_pack_struct_0d(CONSTARG svLogicVecVal* v) { if (!check_0d(v, 7)) stop(); @@ -570,6 +771,15 @@ void i_pack_struct_2d(CONSTARG svLogicVecVal* v) { void i_pack_struct_3d(CONSTARG svLogicVecVal* v) { if (!check_3d(v, 7)) stop(); } +void i_pack_struct_1d1(CONSTARG svLogicVecVal* v) { + if (!check_1d1(v, 7)) stop(); +} +void i_pack_struct_2d1(CONSTARG svLogicVecVal* v) { + if (!check_2d1(v, 7)) stop(); +} +void i_pack_struct_3d1(CONSTARG svLogicVecVal* v) { + if (!check_3d1(v, 7)) stop(); +} #ifndef NO_UNPACK_STRUCT void i_unpack_struct_0d(CONSTARG unpack_struct_t* v) { @@ -590,6 +800,15 @@ void i_unpack_struct_3d(CONSTARG unpack_struct_t* v) { if (!compare(v[(2 * 3 + 0) * 2 + 0].val, 50, 121)) stop(); if (!compare(v[(3 * 3 + 0) * 2 + 0].val, 51, 121)) stop(); } +void i_unpack_struct_1d1(CONSTARG unpack_struct_t* v) { + if (!compare(v[0].val, 52, 121)) stop(); +} +void i_unpack_struct_2d1(CONSTARG unpack_struct_t* v) { + if (!compare(v[0].val, 53, 121)) stop(); +} +void i_unpack_struct_3d1(CONSTARG unpack_struct_t* v) { + if (!compare(v[0].val, 54, 121)) stop(); +} #endif void check_exports() { @@ -601,6 +820,15 @@ void check_exports() { e_byte_2d(&byte_array[1][0][0]); e_byte_3d(&byte_array[0][0][0]); } + { + char array[1][1][1]; + array[0][0][0] = 52; + e_byte_1d1(&array[0][0][0]); + array[0][0][0] = 53; + e_byte_2d1(&array[0][0][0]); + array[0][0][0] = 54; + e_byte_3d1(&array[0][0][0]); + } { unsigned char byte_unsigned_array[4][3][2]; set_values(byte_unsigned_array); @@ -609,6 +837,15 @@ void check_exports() { e_byte_unsigned_2d(&byte_unsigned_array[1][0][0]); e_byte_unsigned_3d(&byte_unsigned_array[0][0][0]); } + { + unsigned char array[1][1][1]; + array[0][0][0] = 52; + e_byte_unsigned_1d1(&array[0][0][0]); + array[0][0][0] = 53; + e_byte_unsigned_2d1(&array[0][0][0]); + array[0][0][0] = 54; + e_byte_unsigned_3d1(&array[0][0][0]); + } { short shortint_array[4][3][2]; set_values(shortint_array); @@ -617,6 +854,15 @@ void check_exports() { e_shortint_2d(&shortint_array[1][0][0]); e_shortint_3d(&shortint_array[0][0][0]); } + { + short array[1][1][1]; + array[0][0][0] = 52; + e_shortint_1d1(&array[0][0][0]); + array[0][0][0] = 53; + e_shortint_2d1(&array[0][0][0]); + array[0][0][0] = 54; + e_shortint_3d1(&array[0][0][0]); + } { unsigned short shortint_unsigned_array[4][3][2]; set_values(shortint_unsigned_array); @@ -625,6 +871,15 @@ void check_exports() { e_shortint_unsigned_2d(&shortint_unsigned_array[1][0][0]); e_shortint_unsigned_3d(&shortint_unsigned_array[0][0][0]); } + { + unsigned short array[1][1][1]; + array[0][0][0] = 52; + e_shortint_unsigned_1d1(&array[0][0][0]); + array[0][0][0] = 53; + e_shortint_unsigned_2d1(&array[0][0][0]); + array[0][0][0] = 54; + e_shortint_unsigned_3d1(&array[0][0][0]); + } { int int_array[4][3][2]; set_values(int_array); @@ -633,6 +888,15 @@ void check_exports() { e_int_2d(&int_array[1][0][0]); e_int_3d(&int_array[0][0][0]); } + { + int array[1][1][1]; + array[0][0][0] = 52; + e_int_1d1(&array[0][0][0]); + array[0][0][0] = 53; + e_int_2d1(&array[0][0][0]); + array[0][0][0] = 54; + e_int_3d1(&array[0][0][0]); + } { unsigned int int_unsigned_array[4][3][2]; set_values(int_unsigned_array); @@ -641,6 +905,15 @@ void check_exports() { e_int_unsigned_2d(&int_unsigned_array[1][0][0]); e_int_unsigned_3d(&int_unsigned_array[0][0][0]); } + { + unsigned int array[1][1][1]; + array[0][0][0] = 52; + e_int_unsigned_1d1(&array[0][0][0]); + array[0][0][0] = 53; + e_int_unsigned_2d1(&array[0][0][0]); + array[0][0][0] = 54; + e_int_unsigned_3d1(&array[0][0][0]); + } { sv_longint_t longint_array[4][3][2]; set_values(longint_array); @@ -649,6 +922,15 @@ void check_exports() { e_longint_2d(&longint_array[1][0][0]); e_longint_3d(&longint_array[0][0][0]); } + { + sv_longint_t array[1][1][1]; + array[0][0][0] = 52; + e_longint_1d1(&array[0][0][0]); + array[0][0][0] = 53; + e_longint_2d1(&array[0][0][0]); + array[0][0][0] = 54; + e_longint_3d1(&array[0][0][0]); + } { sv_longint_unsigned_t longint_unsigned_array[4][3][2]; set_values(longint_unsigned_array); @@ -657,6 +939,15 @@ void check_exports() { e_longint_unsigned_2d(&longint_unsigned_array[1][0][0]); e_longint_unsigned_3d(&longint_unsigned_array[0][0][0]); } + { + sv_longint_unsigned_t array[1][1][1]; + array[0][0][0] = 52; + e_longint_unsigned_1d1(&array[0][0][0]); + array[0][0][0] = 53; + e_longint_unsigned_2d1(&array[0][0][0]); + array[0][0][0] = 54; + e_longint_unsigned_3d1(&array[0][0][0]); + } #ifndef NO_TIME { svLogicVecVal time_array[4][3][2][2]; @@ -666,6 +957,15 @@ void check_exports() { e_time_2d(&time_array[1][0][0][0]); e_time_3d(time_array[0][0][0]); } + { + svLogicVecVal array[1][1][1][2]; + set_uint(array[0][0][0], 52, 64); + e_time_1d1(array[0][0][0]); + set_uint(array[0][0][0], 53, 64); + e_time_2d1(array[0][0][0]); + set_uint(array[0][0][0], 54, 64); + e_time_3d1(array[0][0][0]); + } #endif #ifndef NO_INTEGER @@ -677,6 +977,15 @@ void check_exports() { e_integer_2d(&integer_array[1][0][0][0]); e_integer_3d(integer_array[0][0][0]); } + { + svLogicVecVal array[1][1][1][1]; + set_uint(array[0][0][0], 52, 32); + e_integer_1d1(array[0][0][0]); + set_uint(array[0][0][0], 53, 32); + e_integer_2d1(array[0][0][0]); + set_uint(array[0][0][0], 54, 32); + e_integer_3d1(array[0][0][0]); + } #endif { @@ -687,6 +996,15 @@ void check_exports() { e_real_2d(&real_array[1][0][0]); e_real_3d(&real_array[0][0][0]); } + { + double array[1][1][1]; + array[0][0][0] = 52; + e_real_1d1(&array[0][0][0]); + array[0][0][0] = 53; + e_real_2d1(&array[0][0][0]); + array[0][0][0] = 54; + e_real_3d1(&array[0][0][0]); + } #ifndef NO_SHORTREAL { float shortreal_array[4][3][2]; @@ -696,6 +1014,15 @@ void check_exports() { e_shortreal_2d(&shortreal_array[1][0][0]); e_shortreal_3d(&shortreal_array[0][0][0]); } + { + float array[1][1][1]; + array[0][0][0] = 52; + e_shortreal_1d1(&array[0][0][0]); + array[0][0][0] = 53; + e_shortreal_2d1(&array[0][0][0]); + array[0][0][0] = 54; + e_shortreal_3d1(&array[0][0][0]); + } #endif { @@ -721,6 +1048,15 @@ void check_exports() { e_chandle_2d(add_const(&chandle_array[1][0][0])); e_chandle_3d(add_const(&chandle_array[0][0][0])); } + { + void* array[1][1][1]; + array[0][0][0] = get_non_null(); + e_chandle_1d1(add_const(&array[0][0][0])); + array[0][0][0] = get_non_null(); + e_chandle_2d1(add_const(&array[0][0][0])); + array[0][0][0] = get_non_null(); + e_chandle_3d1(add_const(&array[0][0][0])); + } { std::vector buf; @@ -755,6 +1091,15 @@ void check_exports() { e_string_2d(&string_array[1][0][0]); e_string_3d(&string_array[0][0][0]); } + { + const char* array[1][1][1]; + array[0][0][0] = "52"; + e_string_1d1(&array[0][0][0]); + array[0][0][0] = "53"; + e_string_2d1(&array[0][0][0]); + array[0][0][0] = "54"; + e_string_3d1(&array[0][0][0]); + } { svBitVecVal bit7_array[4][3][2][1]; @@ -764,6 +1109,15 @@ void check_exports() { e_bit7_2d(bit7_array[1][0][0]); e_bit7_3d(bit7_array[0][0][0]); } + { + svBitVecVal array[1][1][1][1]; + set_uint(array[0][0][0], 52, 7); + e_bit7_1d1(array[0][0][0]); + set_uint(array[0][0][0], 53, 7); + e_bit7_2d1(array[0][0][0]); + set_uint(array[0][0][0], 54, 7); + e_bit7_3d1(array[0][0][0]); + } { svBitVecVal bit121_array[4][3][2][4]; @@ -773,6 +1127,15 @@ void check_exports() { e_bit121_2d(bit121_array[1][0][0]); e_bit121_3d(bit121_array[0][0][0]); } + { + svBitVecVal array[1][1][1][4]; + set_uint(array[0][0][0], 52, 121); + e_bit121_1d1(array[0][0][0]); + set_uint(array[0][0][0], 53, 121); + e_bit121_2d1(array[0][0][0]); + set_uint(array[0][0][0], 54, 121); + e_bit121_3d1(array[0][0][0]); + } { svLogicVecVal logic7_array[4][3][2][1]; @@ -782,6 +1145,15 @@ void check_exports() { e_logic7_2d(logic7_array[1][0][0]); e_logic7_3d(logic7_array[0][0][0]); } + { + svLogicVecVal array[1][1][1][1]; + set_uint(array[0][0][0], 52, 7); + e_logic7_1d1(array[0][0][0]); + set_uint(array[0][0][0], 53, 7); + e_logic7_2d1(array[0][0][0]); + set_uint(array[0][0][0], 54, 7); + e_logic7_3d1(array[0][0][0]); + } { svLogicVecVal logic121_array[4][3][2][4]; @@ -791,6 +1163,15 @@ void check_exports() { e_logic121_2d(logic121_array[1][0][0]); e_logic121_3d(logic121_array[0][0][0]); } + { + svLogicVecVal array[1][1][1][4]; + set_uint(array[0][0][0], 52, 121); + e_logic121_1d1(array[0][0][0]); + set_uint(array[0][0][0], 53, 121); + e_logic121_2d1(array[0][0][0]); + set_uint(array[0][0][0], 54, 121); + e_logic121_3d1(array[0][0][0]); + } { svLogicVecVal pack_struct_array[4][3][2][1]; @@ -800,6 +1181,15 @@ void check_exports() { e_pack_struct_2d(pack_struct_array[1][0][0]); e_pack_struct_3d(pack_struct_array[0][0][0]); } + { + svLogicVecVal array[1][1][1][1]; + set_uint(array[0][0][0], 52, 7); + e_pack_struct_1d1(array[0][0][0]); + set_uint(array[0][0][0], 53, 7); + e_pack_struct_2d1(array[0][0][0]); + set_uint(array[0][0][0], 54, 7); + e_pack_struct_3d1(array[0][0][0]); + } #ifndef NO_UNPACK_STRUCT { @@ -822,5 +1212,14 @@ void check_exports() { e_unpack_struct_2d(&unpack_struct_array[1][0][0]); e_unpack_struct_3d(&unpack_struct_array[0][0][0]); } + { + unpack_struct_t unpack_struct_array[1][1][1]; + set_uint(unpack_struct_array[0][0][0].val, 52, 121); + e_unpack_struct_1d1(&unpack_struct_array[0][0][0]); + set_uint(unpack_struct_array[0][0][0].val, 53, 121); + e_unpack_struct_2d1(&unpack_struct_array[0][0][0]); + set_uint(unpack_struct_array[0][0][0].val, 54, 121); + e_unpack_struct_3d1(&unpack_struct_array[0][0][0]); + } #endif } diff --git a/test_regress/t/t_dpi_arg_input_unpack.v b/test_regress/t/t_dpi_arg_input_unpack.v index 432e1925a..3b67031bc 100644 --- a/test_regress/t/t_dpi_arg_input_unpack.v +++ b/test_regress/t/t_dpi_arg_input_unpack.v @@ -40,16 +40,27 @@ $stop; \ end -`define CHECK_0D(val) `CHECK_VAL((val), 42) -`define CHECK_1D(val) `CHECK_VAL(val[0], 43); \ -`CHECK_VAL(val[1], 44) -`define CHECK_2D(val) `CHECK_VAL(val[0][1], 45); \ -`CHECK_VAL(val[1][1], 46); \ -`CHECK_VAL(val[2][1], 47) -`define CHECK_3D(val) `CHECK_VAL(val[0][0][0], 48); \ -`CHECK_VAL(val[1][0][0], 49); \ -`CHECK_VAL(val[2][0][0], 50); \ -`CHECK_VAL(val[3][0][0], 51) +`define CHECK_0D(val) \ + `CHECK_VAL((val), 42) +`define CHECK_1D(val) \ + `CHECK_VAL(val[0], 43); \ + `CHECK_VAL(val[1], 44) +`define CHECK_2D(val) \ + `CHECK_VAL(val[0][1], 45); \ + `CHECK_VAL(val[1][1], 46); \ + `CHECK_VAL(val[2][1], 47) +`define CHECK_3D(val) \ + `CHECK_VAL(val[0][0][0], 48); \ + `CHECK_VAL(val[1][0][0], 49); \ + `CHECK_VAL(val[2][0][0], 50); \ + `CHECK_VAL(val[3][0][0], 51) + +`define CHECK_1D1(val) \ + `CHECK_VAL(val[0], 52) +`define CHECK_2D1(val) \ + `CHECK_VAL(val[0][0], 53) +`define CHECK_3D1(val) \ + `CHECK_VAL(val[0][0][0], 54) `define SET_VALUES(val) \ /* verilator lint_off WIDTH */ \ @@ -69,42 +80,64 @@ module t; // Type definitions //====================================================================== - typedef byte byte_array_t[4][3][2]; - typedef byte unsigned byte_unsigned_array_t[4][3][2]; - typedef shortint shortint_array_t[4][3][2]; + typedef byte byte_array_t[4][3][2]; + typedef byte byte_array1_t[1][1][1]; + typedef byte unsigned byte_unsigned_array_t[4][3][2]; + typedef byte unsigned byte_unsigned_array1_t[1][1][1]; + typedef shortint shortint_array_t[4][3][2]; + typedef shortint shortint_array1_t[1][1][1]; typedef shortint unsigned shortint_unsigned_array_t[4][3][2]; + typedef shortint unsigned shortint_unsigned_array1_t[1][1][1]; typedef int int_array_t[4][3][2]; + typedef int int_array1_t[1][1][1]; typedef int unsigned int_unsigned_array_t[4][3][2]; + typedef int unsigned int_unsigned_array1_t[1][1][1]; typedef longint longint_array_t[4][3][2]; + typedef longint longint_array1_t[1][1][1]; typedef longint unsigned longint_unsigned_array_t[4][3][2]; + typedef longint unsigned longint_unsigned_array1_t[1][1][1]; `ifndef NO_TIME typedef time time_array_t[4][3][2]; + typedef time time_array1_t[1][1][1]; `endif `ifndef NO_INTEGER typedef integer integer_array_t[4][3][2]; + typedef integer integer_array1_t[1][1][1]; `endif typedef real real_array_t[4][3][2]; + typedef real real_array1_t[1][1][1]; `ifndef NO_SHORTREAL typedef shortreal shortreal_array_t[4][3][2]; + typedef shortreal shortreal_array1_t[1][1][1]; `endif typedef chandle chandle_array_t[4][3][2]; + typedef chandle chandle_array1_t[1][1][1]; typedef string string_array_t[4][3][2]; + typedef string string_array1_t[1][1][1]; typedef bit bit1_array_t[4][3][2]; + typedef bit bit1_array1_t[1][1][1]; typedef bit [6:0] bit7_array_t[4][3][2]; + typedef bit [6:0] bit7_array1_t[1][1][1]; typedef bit [120:0] bit121_array_t[4][3][2]; + typedef bit [120:0] bit121_array1_t[1][1][1]; typedef logic logic1_array_t[4][3][2]; + typedef logic logic1_array1_t[1][1][1]; typedef logic [6:0] logic7_array_t[4][3][2]; + typedef logic [6:0] logic7_array1_t[1][1][1]; typedef logic [120:0] logic121_array_t[4][3][2]; + typedef logic [120:0] logic121_array1_t[1][1][1]; typedef struct packed { logic [6:0] val; } pack_struct_t; typedef pack_struct_t pack_struct_array_t[4][3][2]; + typedef pack_struct_t pack_struct_array1_t[1][1][1]; `ifndef NO_UNPACK_STRUCT typedef struct { logic [120:0] val; } unpack_struct_t; typedef unpack_struct_t unpack_struct_array_t[4][3][2]; + typedef unpack_struct_t unpack_struct_array1_t[1][1][1]; `endif //====================================================================== @@ -118,47 +151,74 @@ module t; import "DPI-C" function void i_byte_1d(input byte val[2]); import "DPI-C" function void i_byte_2d(input byte val[3][2]); import "DPI-C" function void i_byte_3d(input byte_array_t val); + import "DPI-C" function void i_byte_1d1(input byte val[1]); + import "DPI-C" function void i_byte_2d1(input byte val[1][1]); + import "DPI-C" function void i_byte_3d1(input byte_array1_t val); import "DPI-C" function void i_byte_unsigned_0d(input byte unsigned val); import "DPI-C" function void i_byte_unsigned_1d(input byte unsigned val[2]); import "DPI-C" function void i_byte_unsigned_2d(input byte unsigned val[3][2]); import "DPI-C" function void i_byte_unsigned_3d(input byte_unsigned_array_t val); + import "DPI-C" function void i_byte_unsigned_1d1(input byte unsigned val[1]); + import "DPI-C" function void i_byte_unsigned_2d1(input byte unsigned val[1][1]); + import "DPI-C" function void i_byte_unsigned_3d1(input byte_unsigned_array1_t val); import "DPI-C" function void i_shortint_0d(input shortint val); import "DPI-C" function void i_shortint_1d(input shortint val[2]); import "DPI-C" function void i_shortint_2d(input shortint val[3][2]); import "DPI-C" function void i_shortint_3d(input shortint_array_t val); + import "DPI-C" function void i_shortint_1d1(input shortint val[1]); + import "DPI-C" function void i_shortint_2d1(input shortint val[1][1]); + import "DPI-C" function void i_shortint_3d1(input shortint_array1_t val); import "DPI-C" function void i_shortint_unsigned_0d(input shortint unsigned val); import "DPI-C" function void i_shortint_unsigned_1d(input shortint unsigned val[2]); import "DPI-C" function void i_shortint_unsigned_2d(input shortint unsigned val[3][2]); import "DPI-C" function void i_shortint_unsigned_3d(input shortint_unsigned_array_t val); + import "DPI-C" function void i_shortint_unsigned_1d1(input shortint unsigned val[1]); + import "DPI-C" function void i_shortint_unsigned_2d1(input shortint unsigned val[1][1]); + import "DPI-C" function void i_shortint_unsigned_3d1(input shortint_unsigned_array1_t val); import "DPI-C" function void i_int_0d(input int val); import "DPI-C" function void i_int_1d(input int val[2]); import "DPI-C" function void i_int_2d(input int val[3][2]); import "DPI-C" function void i_int_3d(input int_array_t val); + import "DPI-C" function void i_int_1d1(input int val[1]); + import "DPI-C" function void i_int_2d1(input int val[1][1]); + import "DPI-C" function void i_int_3d1(input int_array1_t val); import "DPI-C" function void i_int_unsigned_0d(input int unsigned val); import "DPI-C" function void i_int_unsigned_1d(input int unsigned val[2]); import "DPI-C" function void i_int_unsigned_2d(input int unsigned val[3][2]); import "DPI-C" function void i_int_unsigned_3d(input int_unsigned_array_t val); + import "DPI-C" function void i_int_unsigned_1d1(input int unsigned val[1]); + import "DPI-C" function void i_int_unsigned_2d1(input int unsigned val[1][1]); + import "DPI-C" function void i_int_unsigned_3d1(input int_unsigned_array1_t val); import "DPI-C" function void i_longint_0d(input longint val); import "DPI-C" function void i_longint_1d(input longint val[2]); import "DPI-C" function void i_longint_2d(input longint val[3][2]); import "DPI-C" function void i_longint_3d(input longint_array_t val); + import "DPI-C" function void i_longint_1d1(input longint val[1]); + import "DPI-C" function void i_longint_2d1(input longint val[1][1]); + import "DPI-C" function void i_longint_3d1(input longint_array1_t val); import "DPI-C" function void i_longint_unsigned_0d(input longint unsigned val); import "DPI-C" function void i_longint_unsigned_1d(input longint unsigned val[2]); import "DPI-C" function void i_longint_unsigned_2d(input longint unsigned val[3][2]); import "DPI-C" function void i_longint_unsigned_3d(input longint_unsigned_array_t val); + import "DPI-C" function void i_longint_unsigned_1d1(input longint unsigned val[1]); + import "DPI-C" function void i_longint_unsigned_2d1(input longint unsigned val[1][1]); + import "DPI-C" function void i_longint_unsigned_3d1(input longint_unsigned_array1_t val); `ifndef NO_TIME import "DPI-C" function void i_time_0d(input time val); import "DPI-C" function void i_time_1d(input time val[2]); import "DPI-C" function void i_time_2d(input time val[3][2]); import "DPI-C" function void i_time_3d(input time_array_t val); + import "DPI-C" function void i_time_1d1(input time val[1]); + import "DPI-C" function void i_time_2d1(input time val[1][1]); + import "DPI-C" function void i_time_3d1(input time_array1_t val); `endif `ifndef NO_INTEGER @@ -166,70 +226,109 @@ module t; import "DPI-C" function void i_integer_1d(input integer val[2]); import "DPI-C" function void i_integer_2d(input integer val[3][2]); import "DPI-C" function void i_integer_3d(input integer_array_t val); + import "DPI-C" function void i_integer_1d1(input integer val[1]); + import "DPI-C" function void i_integer_2d1(input integer val[1][1]); + import "DPI-C" function void i_integer_3d1(input integer_array1_t val); `endif import "DPI-C" function void i_real_0d(input real val); import "DPI-C" function void i_real_1d(input real val[2]); import "DPI-C" function void i_real_2d(input real val[3][2]); import "DPI-C" function void i_real_3d(input real_array_t val); + import "DPI-C" function void i_real_1d1(input real val[1]); + import "DPI-C" function void i_real_2d1(input real val[1][1]); + import "DPI-C" function void i_real_3d1(input real_array1_t val); `ifndef NO_SHORTREAL import "DPI-C" function void i_shortreal_0d(input shortreal val); import "DPI-C" function void i_shortreal_1d(input shortreal val[2]); import "DPI-C" function void i_shortreal_2d(input shortreal val[3][2]); import "DPI-C" function void i_shortreal_3d(input shortreal_array_t val); + import "DPI-C" function void i_shortreal_1d1(input shortreal val[1]); + import "DPI-C" function void i_shortreal_2d1(input shortreal val[1][1]); + import "DPI-C" function void i_shortreal_3d1(input shortreal_array1_t val); `endif import "DPI-C" function void i_chandle_0d(input chandle val); import "DPI-C" function void i_chandle_1d(input chandle val[2]); import "DPI-C" function void i_chandle_2d(input chandle val[3][2]); import "DPI-C" function void i_chandle_3d(input chandle_array_t val); + import "DPI-C" function void i_chandle_1d1(input chandle val[1]); + import "DPI-C" function void i_chandle_2d1(input chandle val[1][1]); + import "DPI-C" function void i_chandle_3d1(input chandle_array1_t val); import "DPI-C" function void i_string_0d(input string val); import "DPI-C" function void i_string_1d(input string val[2]); import "DPI-C" function void i_string_2d(input string val[3][2]); import "DPI-C" function void i_string_3d(input string_array_t val); + import "DPI-C" function void i_string_1d1(input string val[1]); + import "DPI-C" function void i_string_2d1(input string val[1][1]); + import "DPI-C" function void i_string_3d1(input string_array1_t val); import "DPI-C" function void i_bit1_0d(input bit val); import "DPI-C" function void i_bit1_1d(input bit val[2]); import "DPI-C" function void i_bit1_2d(input bit val[3][2]); import "DPI-C" function void i_bit1_3d(input bit1_array_t val); + import "DPI-C" function void i_bit1_1d1(input bit val[1]); + import "DPI-C" function void i_bit1_2d1(input bit val[1][1]); + import "DPI-C" function void i_bit1_3d1(input bit1_array1_t val); import "DPI-C" function void i_bit7_0d(input bit[6:0] val); import "DPI-C" function void i_bit7_1d(input bit[6:0] val[2]); import "DPI-C" function void i_bit7_2d(input bit[6:0] val[3][2]); import "DPI-C" function void i_bit7_3d(input bit7_array_t val); + import "DPI-C" function void i_bit7_1d1(input bit[6:0] val[1]); + import "DPI-C" function void i_bit7_2d1(input bit[6:0] val[1][1]); + import "DPI-C" function void i_bit7_3d1(input bit7_array1_t val); import "DPI-C" function void i_bit121_0d(input bit[120:0] val); import "DPI-C" function void i_bit121_1d(input bit[120:0] val[2]); import "DPI-C" function void i_bit121_2d(input bit[120:0] val[3][2]); import "DPI-C" function void i_bit121_3d(input bit121_array_t val); + import "DPI-C" function void i_bit121_1d1(input bit[120:0] val[1]); + import "DPI-C" function void i_bit121_2d1(input bit[120:0] val[1][1]); + import "DPI-C" function void i_bit121_3d1(input bit121_array1_t val); import "DPI-C" function void i_logic1_0d(input logic val); import "DPI-C" function void i_logic1_1d(input logic val[2]); import "DPI-C" function void i_logic1_2d(input logic val[3][2]); import "DPI-C" function void i_logic1_3d(input logic1_array_t val); + import "DPI-C" function void i_logic1_1d1(input logic val[1]); + import "DPI-C" function void i_logic1_2d1(input logic val[1][1]); + import "DPI-C" function void i_logic1_3d1(input logic1_array1_t val); import "DPI-C" function void i_logic7_0d(input logic[6:0] val); import "DPI-C" function void i_logic7_1d(input logic[6:0] val[2]); import "DPI-C" function void i_logic7_2d(input logic[6:0] val[3][2]); import "DPI-C" function void i_logic7_3d(input logic7_array_t val); + import "DPI-C" function void i_logic7_1d1(input logic[6:0] val[1]); + import "DPI-C" function void i_logic7_2d1(input logic[6:0] val[1][1]); + import "DPI-C" function void i_logic7_3d1(input logic7_array1_t val); import "DPI-C" function void i_logic121_0d(input logic[120:0] val); import "DPI-C" function void i_logic121_1d(input logic[120:0] val[2]); import "DPI-C" function void i_logic121_2d(input logic[120:0] val[3][2]); import "DPI-C" function void i_logic121_3d(input logic121_array_t val); + import "DPI-C" function void i_logic121_1d1(input logic[120:0] val[1]); + import "DPI-C" function void i_logic121_2d1(input logic[120:0] val[1][1]); + import "DPI-C" function void i_logic121_3d1(input logic121_array1_t val); import "DPI-C" function void i_pack_struct_0d(input pack_struct_t val); import "DPI-C" function void i_pack_struct_1d(input pack_struct_t val[2]); import "DPI-C" function void i_pack_struct_2d(input pack_struct_t val[3][2]); import "DPI-C" function void i_pack_struct_3d(input pack_struct_array_t val); + import "DPI-C" function void i_pack_struct_1d1(input pack_struct_t val[1]); + import "DPI-C" function void i_pack_struct_2d1(input pack_struct_t val[1][1]); + import "DPI-C" function void i_pack_struct_3d1(input pack_struct_array1_t val); `ifndef NO_UNPACK_STRUCT import "DPI-C" function void i_unpack_struct_0d(input unpack_struct_t val); import "DPI-C" function void i_unpack_struct_1d(input unpack_struct_t val[2]); import "DPI-C" function void i_unpack_struct_2d(input unpack_struct_t val[3][2]); import "DPI-C" function void i_unpack_struct_3d(input unpack_struct_array_t val); + import "DPI-C" function void i_unpack_struct_1d1(input unpack_struct_t val[1]); + import "DPI-C" function void i_unpack_struct_2d1(input unpack_struct_t val[1][1]); + import "DPI-C" function void i_unpack_struct_3d1(input unpack_struct_array1_t val); `endif @@ -241,47 +340,74 @@ module t; export "DPI-C" function e_byte_1d; export "DPI-C" function e_byte_2d; export "DPI-C" function e_byte_3d; + export "DPI-C" function e_byte_1d1; + export "DPI-C" function e_byte_2d1; + export "DPI-C" function e_byte_3d1; export "DPI-C" function e_byte_unsigned_0d; export "DPI-C" function e_byte_unsigned_1d; export "DPI-C" function e_byte_unsigned_2d; export "DPI-C" function e_byte_unsigned_3d; + export "DPI-C" function e_byte_unsigned_1d1; + export "DPI-C" function e_byte_unsigned_2d1; + export "DPI-C" function e_byte_unsigned_3d1; export "DPI-C" function e_shortint_0d; export "DPI-C" function e_shortint_1d; export "DPI-C" function e_shortint_2d; export "DPI-C" function e_shortint_3d; + export "DPI-C" function e_shortint_1d1; + export "DPI-C" function e_shortint_2d1; + export "DPI-C" function e_shortint_3d1; export "DPI-C" function e_shortint_unsigned_0d; export "DPI-C" function e_shortint_unsigned_1d; export "DPI-C" function e_shortint_unsigned_2d; export "DPI-C" function e_shortint_unsigned_3d; + export "DPI-C" function e_shortint_unsigned_1d1; + export "DPI-C" function e_shortint_unsigned_2d1; + export "DPI-C" function e_shortint_unsigned_3d1; export "DPI-C" function e_int_0d; export "DPI-C" function e_int_1d; export "DPI-C" function e_int_2d; export "DPI-C" function e_int_3d; + export "DPI-C" function e_int_1d1; + export "DPI-C" function e_int_2d1; + export "DPI-C" function e_int_3d1; export "DPI-C" function e_int_unsigned_0d; export "DPI-C" function e_int_unsigned_1d; export "DPI-C" function e_int_unsigned_2d; export "DPI-C" function e_int_unsigned_3d; + export "DPI-C" function e_int_unsigned_1d1; + export "DPI-C" function e_int_unsigned_2d1; + export "DPI-C" function e_int_unsigned_3d1; export "DPI-C" function e_longint_0d; export "DPI-C" function e_longint_1d; export "DPI-C" function e_longint_2d; export "DPI-C" function e_longint_3d; + export "DPI-C" function e_longint_1d1; + export "DPI-C" function e_longint_2d1; + export "DPI-C" function e_longint_3d1; export "DPI-C" function e_longint_unsigned_0d; export "DPI-C" function e_longint_unsigned_1d; export "DPI-C" function e_longint_unsigned_2d; export "DPI-C" function e_longint_unsigned_3d; + export "DPI-C" function e_longint_unsigned_1d1; + export "DPI-C" function e_longint_unsigned_2d1; + export "DPI-C" function e_longint_unsigned_3d1; `ifndef NO_TIME export "DPI-C" function e_time_0d; export "DPI-C" function e_time_1d; export "DPI-C" function e_time_2d; export "DPI-C" function e_time_3d; + export "DPI-C" function e_time_1d1; + export "DPI-C" function e_time_2d1; + export "DPI-C" function e_time_3d1; `endif `ifndef NO_INTEGER @@ -289,70 +415,109 @@ module t; export "DPI-C" function e_integer_1d; export "DPI-C" function e_integer_2d; export "DPI-C" function e_integer_3d; + export "DPI-C" function e_integer_1d1; + export "DPI-C" function e_integer_2d1; + export "DPI-C" function e_integer_3d1; `endif export "DPI-C" function e_real_0d; export "DPI-C" function e_real_1d; export "DPI-C" function e_real_2d; export "DPI-C" function e_real_3d; + export "DPI-C" function e_real_1d1; + export "DPI-C" function e_real_2d1; + export "DPI-C" function e_real_3d1; `ifndef NO_SHORTREAL export "DPI-C" function e_shortreal_0d; export "DPI-C" function e_shortreal_1d; export "DPI-C" function e_shortreal_2d; export "DPI-C" function e_shortreal_3d; + export "DPI-C" function e_shortreal_1d1; + export "DPI-C" function e_shortreal_2d1; + export "DPI-C" function e_shortreal_3d1; `endif export "DPI-C" function e_chandle_0d; export "DPI-C" function e_chandle_1d; export "DPI-C" function e_chandle_2d; export "DPI-C" function e_chandle_3d; + export "DPI-C" function e_chandle_1d1; + export "DPI-C" function e_chandle_2d1; + export "DPI-C" function e_chandle_3d1; export "DPI-C" function e_string_0d; export "DPI-C" function e_string_1d; export "DPI-C" function e_string_2d; export "DPI-C" function e_string_3d; + export "DPI-C" function e_string_1d1; + export "DPI-C" function e_string_2d1; + export "DPI-C" function e_string_3d1; export "DPI-C" function e_bit1_0d; export "DPI-C" function e_bit1_1d; export "DPI-C" function e_bit1_2d; export "DPI-C" function e_bit1_3d; + export "DPI-C" function e_bit1_1d1; + export "DPI-C" function e_bit1_2d1; + export "DPI-C" function e_bit1_3d1; export "DPI-C" function e_bit7_0d; export "DPI-C" function e_bit7_1d; export "DPI-C" function e_bit7_2d; export "DPI-C" function e_bit7_3d; + export "DPI-C" function e_bit7_1d1; + export "DPI-C" function e_bit7_2d1; + export "DPI-C" function e_bit7_3d1; export "DPI-C" function e_bit121_0d; export "DPI-C" function e_bit121_1d; export "DPI-C" function e_bit121_2d; export "DPI-C" function e_bit121_3d; + export "DPI-C" function e_bit121_1d1; + export "DPI-C" function e_bit121_2d1; + export "DPI-C" function e_bit121_3d1; export "DPI-C" function e_logic1_0d; export "DPI-C" function e_logic1_1d; export "DPI-C" function e_logic1_2d; export "DPI-C" function e_logic1_3d; + export "DPI-C" function e_logic1_1d1; + export "DPI-C" function e_logic1_2d1; + export "DPI-C" function e_logic1_3d1; export "DPI-C" function e_logic7_0d; export "DPI-C" function e_logic7_1d; export "DPI-C" function e_logic7_2d; export "DPI-C" function e_logic7_3d; + export "DPI-C" function e_logic7_1d1; + export "DPI-C" function e_logic7_2d1; + export "DPI-C" function e_logic7_3d1; export "DPI-C" function e_logic121_0d; export "DPI-C" function e_logic121_1d; export "DPI-C" function e_logic121_2d; export "DPI-C" function e_logic121_3d; + export "DPI-C" function e_logic121_1d1; + export "DPI-C" function e_logic121_2d1; + export "DPI-C" function e_logic121_3d1; export "DPI-C" function e_pack_struct_0d; export "DPI-C" function e_pack_struct_1d; export "DPI-C" function e_pack_struct_2d; export "DPI-C" function e_pack_struct_3d; + export "DPI-C" function e_pack_struct_1d1; + export "DPI-C" function e_pack_struct_2d1; + export "DPI-C" function e_pack_struct_3d1; `ifndef NO_UNPACK_STRUCT export "DPI-C" function e_unpack_struct_0d; export "DPI-C" function e_unpack_struct_1d; export "DPI-C" function e_unpack_struct_2d; export "DPI-C" function e_unpack_struct_3d; + export "DPI-C" function e_unpack_struct_1d1; + export "DPI-C" function e_unpack_struct_2d1; + export "DPI-C" function e_unpack_struct_3d1; `endif //====================================================================== @@ -362,47 +527,74 @@ module t; function void e_byte_1d(input byte val[2]); `CHECK_1D(val); endfunction function void e_byte_2d(input byte val[3][2]); `CHECK_2D(val); endfunction function void e_byte_3d(input byte_array_t val); `CHECK_3D(val); endfunction + function void e_byte_1d1(input byte val[1]); `CHECK_1D1(val); endfunction + function void e_byte_2d1(input byte val[1][1]); `CHECK_2D1(val); endfunction + function void e_byte_3d1(input byte_array1_t val); `CHECK_3D1(val); endfunction function void e_byte_unsigned_0d(input byte unsigned val); `CHECK_0D(val); endfunction function void e_byte_unsigned_1d(input byte unsigned val[2]); `CHECK_1D(val); endfunction function void e_byte_unsigned_2d(input byte unsigned val[3][2]); `CHECK_2D(val); endfunction function void e_byte_unsigned_3d(input byte_unsigned_array_t val); `CHECK_3D(val); endfunction + function void e_byte_unsigned_1d1(input byte unsigned val[1]); `CHECK_1D1(val); endfunction + function void e_byte_unsigned_2d1(input byte unsigned val[1][1]); `CHECK_2D1(val); endfunction + function void e_byte_unsigned_3d1(input byte_unsigned_array1_t val); `CHECK_3D1(val); endfunction function void e_shortint_0d(input shortint val); `CHECK_0D(val); endfunction function void e_shortint_1d(input shortint val[2]); `CHECK_1D(val); endfunction function void e_shortint_2d(input shortint val[3][2]); `CHECK_2D(val); endfunction function void e_shortint_3d(input shortint_array_t val); `CHECK_3D(val); endfunction + function void e_shortint_1d1(input shortint val[1]); `CHECK_1D1(val); endfunction + function void e_shortint_2d1(input shortint val[1][1]); `CHECK_2D1(val); endfunction + function void e_shortint_3d1(input shortint_array1_t val); `CHECK_3D1(val); endfunction function void e_shortint_unsigned_0d(input shortint unsigned val); `CHECK_0D(val); endfunction function void e_shortint_unsigned_1d(input shortint unsigned val[2]); `CHECK_1D(val); endfunction function void e_shortint_unsigned_2d(input shortint unsigned val[3][2]); `CHECK_2D(val); endfunction function void e_shortint_unsigned_3d(input shortint_unsigned_array_t val); `CHECK_3D(val); endfunction + function void e_shortint_unsigned_1d1(input shortint unsigned val[1]); `CHECK_1D1(val); endfunction + function void e_shortint_unsigned_2d1(input shortint unsigned val[1][1]); `CHECK_2D1(val); endfunction + function void e_shortint_unsigned_3d1(input shortint_unsigned_array1_t val); `CHECK_3D1(val); endfunction function void e_int_0d(input int val); `CHECK_0D(val); endfunction function void e_int_1d(input int val[2]); `CHECK_1D(val); endfunction function void e_int_2d(input int val[3][2]); `CHECK_2D(val); endfunction function void e_int_3d(input int_array_t val); `CHECK_3D(val); endfunction + function void e_int_1d1(input int val[1]); `CHECK_1D1(val); endfunction + function void e_int_2d1(input int val[1][1]); `CHECK_2D1(val); endfunction + function void e_int_3d1(input int_array1_t val); `CHECK_3D1(val); endfunction function void e_int_unsigned_0d(input int unsigned val); `CHECK_0D(val); endfunction function void e_int_unsigned_1d(input int unsigned val[2]); `CHECK_1D(val); endfunction function void e_int_unsigned_2d(input int unsigned val[3][2]); `CHECK_2D(val); endfunction function void e_int_unsigned_3d(input int_unsigned_array_t val); `CHECK_3D(val); endfunction + function void e_int_unsigned_1d1(input int unsigned val[1]); `CHECK_1D1(val); endfunction + function void e_int_unsigned_2d1(input int unsigned val[1][1]); `CHECK_2D1(val); endfunction + function void e_int_unsigned_3d1(input int_unsigned_array1_t val); `CHECK_3D1(val); endfunction function void e_longint_0d(input longint val); `CHECK_0D(val); endfunction function void e_longint_1d(input longint val[2]); `CHECK_1D(val); endfunction function void e_longint_2d(input longint val[3][2]); `CHECK_2D(val); endfunction function void e_longint_3d(input longint_array_t val); `CHECK_3D(val); endfunction + function void e_longint_1d1(input longint val[1]); `CHECK_1D1(val); endfunction + function void e_longint_2d1(input longint val[1][1]); `CHECK_2D1(val); endfunction + function void e_longint_3d1(input longint_array1_t val); `CHECK_3D1(val); endfunction function void e_longint_unsigned_0d(input longint unsigned val); `CHECK_0D(val); endfunction function void e_longint_unsigned_1d(input longint unsigned val[2]); `CHECK_1D(val); endfunction function void e_longint_unsigned_2d(input longint unsigned val[3][2]); `CHECK_2D(val); endfunction function void e_longint_unsigned_3d(input longint_unsigned_array_t val); `CHECK_3D(val); endfunction + function void e_longint_unsigned_1d1(input longint unsigned val[1]); `CHECK_1D1(val); endfunction + function void e_longint_unsigned_2d1(input longint unsigned val[1][1]); `CHECK_2D1(val); endfunction + function void e_longint_unsigned_3d1(input longint_unsigned_array1_t val); `CHECK_3D1(val); endfunction `ifndef NO_TIME function void e_time_0d(input time val); `CHECK_0D(val); endfunction function void e_time_1d(input time val[2]); `CHECK_1D(val); endfunction function void e_time_2d(input time val[3][2]); `CHECK_2D(val); endfunction function void e_time_3d(input time_array_t val); `CHECK_3D(val); endfunction + function void e_time_1d1(input time val[1]); `CHECK_1D1(val); endfunction + function void e_time_2d1(input time val[1][1]); `CHECK_2D1(val); endfunction + function void e_time_3d1(input time_array1_t val); `CHECK_3D1(val); endfunction `endif `ifndef NO_INTEGER @@ -410,18 +602,27 @@ module t; function void e_integer_1d(input integer val[2]); `CHECK_1D(val); endfunction function void e_integer_2d(input integer val[3][2]); `CHECK_2D(val); endfunction function void e_integer_3d(input integer_array_t val); `CHECK_3D(val); endfunction + function void e_integer_1d1(input integer val[1]); `CHECK_1D1(val); endfunction + function void e_integer_2d1(input integer val[1][1]); `CHECK_2D1(val); endfunction + function void e_integer_3d1(input integer_array1_t val); `CHECK_3D1(val); endfunction `endif function void e_real_0d(input real val); `CHECK_0D(val); endfunction function void e_real_1d(input real val[2]); `CHECK_1D(val); endfunction function void e_real_2d(input real val[3][2]); `CHECK_2D(val); endfunction function void e_real_3d(input real_array_t val); `CHECK_3D(val); endfunction + function void e_real_1d1(input real val[1]); `CHECK_1D1(val); endfunction + function void e_real_2d1(input real val[1][1]); `CHECK_2D1(val); endfunction + function void e_real_3d1(input real_array1_t val); `CHECK_3D1(val); endfunction `ifndef NO_SHORTREAL function void e_shortreal_0d(input shortreal val); `CHECK_0D(val); endfunction function void e_shortreal_1d(input shortreal val[2]); `CHECK_1D(val); endfunction function void e_shortreal_2d(input shortreal val[3][2]); `CHECK_2D(val); endfunction function void e_shortreal_3d(input shortreal_array_t val); `CHECK_3D(val); endfunction + function void e_shortreal_1d1(input shortreal val[1]); `CHECK_1D1(val); endfunction + function void e_shortreal_2d1(input shortreal val[1][1]); `CHECK_2D1(val); endfunction + function void e_shortreal_3d1(input shortreal_array1_t val); `CHECK_3D1(val); endfunction `endif function void e_chandle_0d(input chandle val); @@ -472,6 +673,24 @@ module t; $stop; end endfunction + function void e_chandle_1d1(input chandle val[1]); + if (val[0] == null) begin + $display("Mismatch non null is expected, but not."); + $stop; + end + endfunction + function void e_chandle_2d1(input chandle val[1][1]); + if (val[0][0] == null) begin + $display("Mismatch non null is expected, but not."); + $stop; + end + endfunction + function void e_chandle_3d1(input chandle_array1_t val); + if (val[0][0][0] == null) begin + $display("Mismatch non null is expected, but not."); + $stop; + end + endfunction function void e_string_0d(input string val); if (val != "42") begin @@ -521,41 +740,80 @@ module t; $stop; end endfunction + function void e_string_1d1(input string val[1]); + if (val[0] != "52") begin + $display("Mismatch expected:%s actual:%s", "52", val[0]); + $stop; + end + endfunction + function void e_string_2d1(input string val[1][1]); + if (val[0][0] != "53") begin + $display("Mismatch expected:%s actual:%s", "53", val[0][0]); + $stop; + end + endfunction + function void e_string_3d1(input string_array1_t val); + if (val[0][0][0] != "54") begin + $display("Mismatch expected:%s actual:%s", "54", val[0][0][0]); + $stop; + end + endfunction function void e_bit1_0d(input bit val); `CHECK_0D(val); endfunction function void e_bit1_1d(input bit val[2]); `CHECK_1D(val); endfunction function void e_bit1_2d(input bit val[3][2]); `CHECK_2D(val); endfunction function void e_bit1_3d(input bit1_array_t val); `CHECK_3D(val); endfunction + function void e_bit1_1d1(input bit val[1]); `CHECK_1D1(val); endfunction + function void e_bit1_2d1(input bit val[1][1]); `CHECK_2D1(val); endfunction + function void e_bit1_3d1(input bit1_array1_t val); `CHECK_3D1(val); endfunction function void e_bit7_0d(input bit[6:0] val); `CHECK_0D(val); endfunction function void e_bit7_1d(input bit[6:0] val[2]); `CHECK_1D(val); endfunction function void e_bit7_2d(input bit[6:0] val[3][2]); `CHECK_2D(val); endfunction function void e_bit7_3d(input bit7_array_t val); `CHECK_3D(val); endfunction + function void e_bit7_1d1(input bit[6:0] val[1]); `CHECK_1D1(val); endfunction + function void e_bit7_2d1(input bit[6:0] val[1][1]); `CHECK_2D1(val); endfunction + function void e_bit7_3d1(input bit7_array1_t val); `CHECK_3D1(val); endfunction function void e_bit121_0d(input bit[120:0] val); `CHECK_0D(val); endfunction function void e_bit121_1d(input bit[120:0] val[2]); `CHECK_1D(val); endfunction function void e_bit121_2d(input bit[120:0] val[3][2]); `CHECK_2D(val); endfunction function void e_bit121_3d(input bit121_array_t val); `CHECK_3D(val); endfunction + function void e_bit121_1d1(input bit[120:0] val[1]); `CHECK_1D1(val); endfunction + function void e_bit121_2d1(input bit[120:0] val[1][1]); `CHECK_2D1(val); endfunction + function void e_bit121_3d1(input bit121_array1_t val); `CHECK_3D1(val); endfunction function void e_logic1_0d(input logic val); `CHECK_0D(val); endfunction function void e_logic1_1d(input logic val[2]); `CHECK_1D(val); endfunction function void e_logic1_2d(input logic val[3][2]); `CHECK_2D(val); endfunction function void e_logic1_3d(input logic1_array_t val); `CHECK_3D(val); endfunction + function void e_logic1_1d1(input logic val[1]); `CHECK_1D1(val); endfunction + function void e_logic1_2d1(input logic val[1][1]); `CHECK_2D1(val); endfunction + function void e_logic1_3d1(input logic1_array1_t val); `CHECK_3D1(val); endfunction function void e_logic7_0d(input logic[6:0] val); `CHECK_0D(val); endfunction function void e_logic7_1d(input logic[6:0] val[2]); `CHECK_1D(val); endfunction function void e_logic7_2d(input logic[6:0] val[3][2]); `CHECK_2D(val); endfunction function void e_logic7_3d(input logic7_array_t val); `CHECK_3D(val); endfunction + function void e_logic7_1d1(input logic[6:0] val[1]); `CHECK_1D1(val); endfunction + function void e_logic7_2d1(input logic[6:0] val[1][1]); `CHECK_2D1(val); endfunction + function void e_logic7_3d1(input logic7_array1_t val); `CHECK_3D1(val); endfunction function void e_logic121_0d(input logic[120:0] val); `CHECK_0D(val); endfunction function void e_logic121_1d(input logic[120:0] val[2]); `CHECK_1D(val); endfunction function void e_logic121_2d(input logic[120:0] val[3][2]); `CHECK_2D(val); endfunction function void e_logic121_3d(input logic121_array_t val); `CHECK_3D(val); endfunction + function void e_logic121_1d1(input logic[120:0] val[1]); `CHECK_1D1(val); endfunction + function void e_logic121_2d1(input logic[120:0] val[1][1]); `CHECK_2D1(val); endfunction + function void e_logic121_3d1(input logic121_array1_t val); `CHECK_3D1(val); endfunction function void e_pack_struct_0d(input pack_struct_t val); `CHECK_0D(val); endfunction function void e_pack_struct_1d(input pack_struct_t val[2]); `CHECK_1D(val); endfunction function void e_pack_struct_2d(input pack_struct_t val[3][2]); `CHECK_2D(val); endfunction function void e_pack_struct_3d(input pack_struct_array_t val); `CHECK_3D(val); endfunction + function void e_pack_struct_1d1(input pack_struct_t val[1]); `CHECK_1D1(val); endfunction + function void e_pack_struct_2d1(input pack_struct_t val[1][1]); `CHECK_2D1(val); endfunction + function void e_pack_struct_3d1(input pack_struct_array1_t val); `CHECK_3D1(val); endfunction `ifndef NO_UNPACK_STRUCT function void e_unpack_struct_0d(input unpack_struct_t val); @@ -606,6 +864,24 @@ module t; $stop; end endfunction + function void e_unpack_struct_1d1(input unpack_struct_t val[1]); + if (val[0].val != 52) begin + $display("Mismatch expected:%s actual:%s", "52", val[0].val); + $stop; + end + endfunction + function void e_unpack_struct_2d1(input unpack_struct_t val[1][1]); + if (val[0][0].val != 53) begin + $display("Mismatch expected:%s actual:%s", "53", val[0][0].val); + $stop; + end + endfunction + function void e_unpack_struct_3d1(input unpack_struct_array1_t val); + if (val[0][0][0].val != 54) begin + $display("Mismatch expected:%s actual:%s", "54", val[0][0][0].val); + $stop; + end + endfunction `endif //====================================================================== @@ -616,34 +892,56 @@ module t; initial begin byte_array_t byte_array; + byte_array1_t byte_array1; byte_unsigned_array_t byte_unsigned_array; + byte_unsigned_array1_t byte_unsigned_array1; shortint_array_t shortint_array; + shortint_array1_t shortint_array1; shortint_unsigned_array_t shortint_unsigned_array; + shortint_unsigned_array1_t shortint_unsigned_array1; int_array_t int_array; + int_array1_t int_array1; int_unsigned_array_t int_unsigned_array; + int_unsigned_array1_t int_unsigned_array1; longint_array_t longint_array; + longint_array1_t longint_array1; longint_unsigned_array_t longint_unsigned_array; + longint_unsigned_array1_t longint_unsigned_array1; `ifndef NO_TIME time_array_t time_array; + time_array1_t time_array1; `endif `ifndef NO_INTEGER integer_array_t integer_array; + integer_array1_t integer_array1; `endif real_array_t real_array; + real_array1_t real_array1; `ifndef NO_SHORTREAL shortreal_array_t shortreal_array; + shortreal_array1_t shortreal_array1; `endif chandle_array_t chandle_array; + chandle_array1_t chandle_array1; string_array_t string_array; + string_array1_t string_array1; bit1_array_t bit1_array; + bit1_array1_t bit1_array1; bit7_array_t bit7_array; + bit7_array1_t bit7_array1; bit121_array_t bit121_array; + bit121_array1_t bit121_array1; logic1_array_t logic1_array; + logic1_array1_t logic1_array1; logic7_array_t logic7_array; + logic7_array1_t logic7_array1; logic121_array_t logic121_array; + logic121_array1_t logic121_array1; pack_struct_array_t pack_struct_array; + pack_struct_array1_t pack_struct_array1; `ifndef NO_UNPACK_STRUCT unpack_struct_array_t unpack_struct_array; + unpack_struct_array1_t unpack_struct_array1; `endif `SET_VALUES(byte_array); @@ -652,54 +950,117 @@ module t; i_byte_2d(byte_array[1]); i_byte_3d(byte_array); + byte_array1[0][0][0] = 52; + i_byte_1d1(byte_array1[0][0]); + byte_array1[0][0][0] = 53; + i_byte_2d1(byte_array1[0]); + byte_array1[0][0][0] = 54; + i_byte_3d1(byte_array1); + `SET_VALUES(byte_unsigned_array); i_byte_unsigned_0d(byte_unsigned_array[3][2][1]); i_byte_unsigned_1d(byte_unsigned_array[2][1]); i_byte_unsigned_2d(byte_unsigned_array[1]); i_byte_unsigned_3d(byte_unsigned_array); + byte_unsigned_array1[0][0][0] = 52; + i_byte_unsigned_1d1(byte_unsigned_array1[0][0]); + byte_unsigned_array1[0][0][0] = 53; + i_byte_unsigned_2d1(byte_unsigned_array1[0]); + byte_unsigned_array1[0][0][0] = 54; + i_byte_unsigned_3d1(byte_unsigned_array1); + `SET_VALUES(shortint_array); i_shortint_0d(shortint_array[3][2][1]); i_shortint_1d(shortint_array[2][1]); i_shortint_2d(shortint_array[1]); i_shortint_3d(shortint_array); + shortint_array1[0][0][0] = 52; + i_shortint_1d1(shortint_array1[0][0]); + shortint_array1[0][0][0] = 53; + i_shortint_2d1(shortint_array1[0]); + shortint_array1[0][0][0] = 54; + i_shortint_3d1(shortint_array1); + `SET_VALUES(shortint_unsigned_array); i_shortint_unsigned_0d(shortint_unsigned_array[3][2][1]); i_shortint_unsigned_1d(shortint_unsigned_array[2][1]); i_shortint_unsigned_2d(shortint_unsigned_array[1]); i_shortint_unsigned_3d(shortint_unsigned_array); + shortint_unsigned_array1[0][0][0] = 52; + i_shortint_unsigned_1d1(shortint_unsigned_array1[0][0]); + shortint_unsigned_array1[0][0][0] = 53; + i_shortint_unsigned_2d1(shortint_unsigned_array1[0]); + shortint_unsigned_array1[0][0][0] = 54; + i_shortint_unsigned_3d1(shortint_unsigned_array1); + `SET_VALUES(int_array); i_int_0d(int_array[3][2][1]); i_int_1d(int_array[2][1]); i_int_2d(int_array[1]); i_int_3d(int_array); + int_array1[0][0][0] = 52; + i_int_1d1(int_array1[0][0]); + int_array1[0][0][0] = 53; + i_int_2d1(int_array1[0]); + int_array1[0][0][0] = 54; + i_int_3d1(int_array1); + `SET_VALUES(int_unsigned_array); i_int_unsigned_0d(int_unsigned_array[3][2][1]); i_int_unsigned_1d(int_unsigned_array[2][1]); i_int_unsigned_2d(int_unsigned_array[1]); i_int_unsigned_3d(int_unsigned_array); + int_unsigned_array1[0][0][0] = 52; + i_int_unsigned_1d1(int_unsigned_array1[0][0]); + int_unsigned_array1[0][0][0] = 53; + i_int_unsigned_2d1(int_unsigned_array1[0]); + int_unsigned_array1[0][0][0] = 54; + i_int_unsigned_3d1(int_unsigned_array1); + `SET_VALUES(longint_array); i_longint_0d(longint_array[3][2][1]); i_longint_1d(longint_array[2][1]); i_longint_2d(longint_array[1]); i_longint_3d(longint_array); + longint_array1[0][0][0] = 52; + i_longint_1d1(longint_array1[0][0]); + longint_array1[0][0][0] = 53; + i_longint_2d1(longint_array1[0]); + longint_array1[0][0][0] = 54; + i_longint_3d1(longint_array1); + `SET_VALUES(longint_unsigned_array); i_longint_unsigned_0d(longint_unsigned_array[3][2][1]); i_longint_unsigned_1d(longint_unsigned_array[2][1]); i_longint_unsigned_2d(longint_unsigned_array[1]); i_longint_unsigned_3d(longint_unsigned_array); + longint_unsigned_array1[0][0][0] = 52; + i_longint_unsigned_1d1(longint_unsigned_array1[0][0]); + longint_unsigned_array1[0][0][0] = 53; + i_longint_unsigned_2d1(longint_unsigned_array1[0]); + longint_unsigned_array1[0][0][0] = 54; + i_longint_unsigned_3d1(longint_unsigned_array1); + `ifndef NO_TIME `SET_VALUES(time_array); i_time_0d(time_array[3][2][1]); i_time_1d(time_array[2][1]); i_time_2d(time_array[1]); i_time_3d(time_array); + + time_array1[0][0][0] = 52; + i_time_1d1(time_array1[0][0]); + time_array1[0][0][0] = 53; + i_time_2d1(time_array1[0]); + time_array1[0][0][0] = 54; + i_time_3d1(time_array1); `endif `ifndef NO_INTEGER @@ -708,6 +1069,13 @@ module t; i_integer_1d(integer_array[2][1]); i_integer_2d(integer_array[1]); i_integer_3d(integer_array); + + integer_array1[0][0][0] = 52; + i_integer_1d1(integer_array1[0][0]); + integer_array1[0][0][0] = 53; + i_integer_2d1(integer_array1[0]); + integer_array1[0][0][0] = 54; + i_integer_3d1(integer_array1); `endif `SET_VALUES(real_array); @@ -716,12 +1084,26 @@ module t; i_real_2d(real_array[1]); i_real_3d(real_array); + real_array1[0][0][0] = 52; + i_real_1d1(real_array1[0][0]); + real_array1[0][0][0] = 53; + i_real_2d1(real_array1[0]); + real_array1[0][0][0] = 54; + i_real_3d1(real_array1); + `ifndef NO_SHORTREAL `SET_VALUES(shortreal_array); i_shortreal_0d(shortreal_array[3][2][1]); i_shortreal_1d(shortreal_array[2][1]); i_shortreal_2d(shortreal_array[1]); i_shortreal_3d(shortreal_array); + + shortreal_array1[0][0][0] = 52; + i_shortreal_1d1(shotreal_array1[0][0]); + shortreal_array1[0][0][0] = 53; + i_shortreal_2d1(shotreal_array1[0]); + shortreal_array1[0][0][0] = 54; + i_shortreal_3d1(shotreal_array1); `endif for (int i = 0; i < 4; ++i) @@ -744,6 +1126,13 @@ module t; chandle_array[3][0][0] = get_non_null(); i_chandle_3d(chandle_array); + chandle_array1[0][0][0] = get_non_null(); + i_chandle_1d1(chandle_array1[0][0]); + chandle_array1[0][0][0] = get_non_null(); + i_chandle_2d1(chandle_array1[0]); + chandle_array1[0][0][0] = get_non_null(); + i_chandle_3d1(chandle_array1); + string_array[3][2][1] = "42"; string_array[2][1][0] = "43"; string_array[2][1][1] = "44"; string_array[1][0][1] = "45"; string_array[1][1][1] = "46"; string_array[1][2][1] = "47"; @@ -753,12 +1142,25 @@ module t; i_string_2d(string_array[1]); i_string_3d(string_array); + string_array1[0][0][0] = "52"; + i_string_1d1(string_array1[0][0]); + string_array1[0][0][0] = "53"; + i_string_2d1(string_array1[0]); + string_array1[0][0][0] = "54"; + i_string_3d1(string_array1); + `SET_VALUES(bit1_array); i_bit1_0d(bit1_array[3][2][1]); i_bit1_1d(bit1_array[2][1]); i_bit1_2d(bit1_array[1]); i_bit1_3d(bit1_array); + bit1_array1[0][0][0] = 1'(52); + i_bit1_1d1(bit1_array1[0][0]); + bit1_array1[0][0][0] = 1'(53); + i_bit1_2d1(bit1_array1[0]); + bit1_array1[0][0][0] = 1'(54); + i_bit1_3d1(bit1_array1); `SET_VALUES(bit7_array); i_bit7_0d(bit7_array[3][2][1]); @@ -766,36 +1168,78 @@ module t; i_bit7_2d(bit7_array[1]); i_bit7_3d(bit7_array); + bit7_array1[0][0][0] = 52; + i_bit7_1d1(bit7_array1[0][0]); + bit7_array1[0][0][0] = 53; + i_bit7_2d1(bit7_array1[0]); + bit7_array1[0][0][0] = 54; + i_bit7_3d1(bit7_array1); + `SET_VALUES(bit121_array); i_bit121_0d(bit121_array[3][2][1]); i_bit121_1d(bit121_array[2][1]); i_bit121_2d(bit121_array[1]); i_bit121_3d(bit121_array); + bit121_array1[0][0][0] = 52; + i_bit121_1d1(bit121_array1[0][0]); + bit121_array1[0][0][0] = 53; + i_bit121_2d1(bit121_array1[0]); + bit121_array1[0][0][0] = 54; + i_bit121_3d1(bit121_array1); + `SET_VALUES(logic1_array); i_logic1_0d(logic1_array[3][2][1]); i_logic1_1d(logic1_array[2][1]); i_logic1_2d(logic1_array[1]); i_logic1_3d(logic1_array); + logic1_array1[0][0][0] = 1'(52); + i_logic1_1d1(logic1_array1[0][0]); + logic1_array1[0][0][0] = 1'(53); + i_logic1_2d1(logic1_array1[0]); + logic1_array1[0][0][0] = 1'(54); + i_logic1_3d1(logic1_array1); + `SET_VALUES(logic7_array); i_logic7_0d(logic7_array[3][2][1]); i_logic7_1d(logic7_array[2][1]); i_logic7_2d(logic7_array[1]); i_logic7_3d(logic7_array); + logic7_array1[0][0][0] = 52; + i_logic7_1d1(logic7_array1[0][0]); + logic7_array1[0][0][0] = 53; + i_logic7_2d1(logic7_array1[0]); + logic7_array1[0][0][0] = 54; + i_logic7_3d1(logic7_array1); + `SET_VALUES(logic121_array); i_logic121_0d(logic121_array[3][2][1]); i_logic121_1d(logic121_array[2][1]); i_logic121_2d(logic121_array[1]); i_logic121_3d(logic121_array); + logic121_array1[0][0][0] = 52; + i_logic121_1d1(logic121_array1[0][0]); + logic121_array1[0][0][0] = 53; + i_logic121_2d1(logic121_array1[0]); + logic121_array1[0][0][0] = 54; + i_logic121_3d1(logic121_array1); + `SET_VALUES(pack_struct_array); i_pack_struct_0d(pack_struct_array[3][2][1]); i_pack_struct_1d(pack_struct_array[2][1]); i_pack_struct_2d(pack_struct_array[1]); i_pack_struct_3d(pack_struct_array); + pack_struct_array1[0][0][0] = 52; + i_pack_struct_1d1(pack_struct_array1[0][0]); + pack_struct_array1[0][0][0] = 53; + i_pack_struct_2d1(pack_struct_array1[0]); + pack_struct_array1[0][0][0] = 54; + i_pack_struct_3d1(pack_struct_array1); + `ifndef NO_UNPACK_STRUCT unpack_struct_array[3][2][1].val = 42; unpack_struct_array[2][1][0].val = 43; @@ -813,6 +1257,13 @@ module t; i_unpack_struct_1d(unpack_struct_array[2][1]); i_unpack_struct_2d(unpack_struct_array[1]); i_unpack_struct_3d(unpack_struct_array); + + unpack_struct_array1[0][0][0].val = 52; + i_unpack_struct_1d1(unpack_struct_array1[0][0]); + unpack_struct_array1[0][0][0].val = 53; + i_unpack_struct_2d1(unpack_struct_array1[0]); + unpack_struct_array1[0][0][0].val = 54; + i_unpack_struct_3d1(unpack_struct_array1); `endif check_exports(); diff --git a/test_regress/t/t_dpi_arg_input_unpack__Dpi.out b/test_regress/t/t_dpi_arg_input_unpack__Dpi.out index ad4c02bc7..4fc5ae275 100644 --- a/test_regress/t/t_dpi_arg_input_unpack__Dpi.out +++ b/test_regress/t/t_dpi_arg_input_unpack__Dpi.out @@ -18,168 +18,288 @@ extern "C" { // DPI EXPORTS extern void e_bit121_0d(const svBitVecVal* val); extern void e_bit121_1d(const svBitVecVal* val); +extern void e_bit121_1d1(const svBitVecVal* val); extern void e_bit121_2d(const svBitVecVal* val); +extern void e_bit121_2d1(const svBitVecVal* val); extern void e_bit121_3d(const svBitVecVal* val); +extern void e_bit121_3d1(const svBitVecVal* val); extern void e_bit1_0d(svBit val); extern void e_bit1_1d(const svBit* val); +extern void e_bit1_1d1(const svBit* val); extern void e_bit1_2d(const svBit* val); +extern void e_bit1_2d1(const svBit* val); extern void e_bit1_3d(const svBit* val); +extern void e_bit1_3d1(const svBit* val); extern void e_bit7_0d(const svBitVecVal* val); extern void e_bit7_1d(const svBitVecVal* val); +extern void e_bit7_1d1(const svBitVecVal* val); extern void e_bit7_2d(const svBitVecVal* val); +extern void e_bit7_2d1(const svBitVecVal* val); extern void e_bit7_3d(const svBitVecVal* val); +extern void e_bit7_3d1(const svBitVecVal* val); extern void e_byte_0d(char val); extern void e_byte_1d(const char* val); +extern void e_byte_1d1(const char* val); extern void e_byte_2d(const char* val); +extern void e_byte_2d1(const char* val); extern void e_byte_3d(const char* val); +extern void e_byte_3d1(const char* val); extern void e_byte_unsigned_0d(unsigned char val); extern void e_byte_unsigned_1d(const unsigned char* val); +extern void e_byte_unsigned_1d1(const unsigned char* val); extern void e_byte_unsigned_2d(const unsigned char* val); +extern void e_byte_unsigned_2d1(const unsigned char* val); extern void e_byte_unsigned_3d(const unsigned char* val); +extern void e_byte_unsigned_3d1(const unsigned char* val); extern void e_chandle_0d(void* val); extern void e_chandle_1d(const void** val); +extern void e_chandle_1d1(const void** val); extern void e_chandle_2d(const void** val); +extern void e_chandle_2d1(const void** val); extern void e_chandle_3d(const void** val); +extern void e_chandle_3d1(const void** val); extern void e_int_0d(int val); extern void e_int_1d(const int* val); +extern void e_int_1d1(const int* val); extern void e_int_2d(const int* val); +extern void e_int_2d1(const int* val); extern void e_int_3d(const int* val); +extern void e_int_3d1(const int* val); extern void e_int_unsigned_0d(unsigned int val); extern void e_int_unsigned_1d(const unsigned int* val); +extern void e_int_unsigned_1d1(const unsigned int* val); extern void e_int_unsigned_2d(const unsigned int* val); +extern void e_int_unsigned_2d1(const unsigned int* val); extern void e_int_unsigned_3d(const unsigned int* val); +extern void e_int_unsigned_3d1(const unsigned int* val); extern void e_integer_0d(const svLogicVecVal* val); extern void e_integer_1d(const svLogicVecVal* val); +extern void e_integer_1d1(const svLogicVecVal* val); extern void e_integer_2d(const svLogicVecVal* val); +extern void e_integer_2d1(const svLogicVecVal* val); extern void e_integer_3d(const svLogicVecVal* val); +extern void e_integer_3d1(const svLogicVecVal* val); extern void e_logic121_0d(const svLogicVecVal* val); extern void e_logic121_1d(const svLogicVecVal* val); +extern void e_logic121_1d1(const svLogicVecVal* val); extern void e_logic121_2d(const svLogicVecVal* val); +extern void e_logic121_2d1(const svLogicVecVal* val); extern void e_logic121_3d(const svLogicVecVal* val); +extern void e_logic121_3d1(const svLogicVecVal* val); extern void e_logic1_0d(svLogic val); extern void e_logic1_1d(const svLogic* val); +extern void e_logic1_1d1(const svLogic* val); extern void e_logic1_2d(const svLogic* val); +extern void e_logic1_2d1(const svLogic* val); extern void e_logic1_3d(const svLogic* val); +extern void e_logic1_3d1(const svLogic* val); extern void e_logic7_0d(const svLogicVecVal* val); extern void e_logic7_1d(const svLogicVecVal* val); +extern void e_logic7_1d1(const svLogicVecVal* val); extern void e_logic7_2d(const svLogicVecVal* val); +extern void e_logic7_2d1(const svLogicVecVal* val); extern void e_logic7_3d(const svLogicVecVal* val); +extern void e_logic7_3d1(const svLogicVecVal* val); extern void e_longint_0d(long long val); extern void e_longint_1d(const long long* val); +extern void e_longint_1d1(const long long* val); extern void e_longint_2d(const long long* val); +extern void e_longint_2d1(const long long* val); extern void e_longint_3d(const long long* val); +extern void e_longint_3d1(const long long* val); extern void e_longint_unsigned_0d(unsigned long long val); extern void e_longint_unsigned_1d(const unsigned long long* val); +extern void e_longint_unsigned_1d1(const unsigned long long* val); extern void e_longint_unsigned_2d(const unsigned long long* val); +extern void e_longint_unsigned_2d1(const unsigned long long* val); extern void e_longint_unsigned_3d(const unsigned long long* val); +extern void e_longint_unsigned_3d1(const unsigned long long* val); extern void e_pack_struct_0d(const svLogicVecVal* val); extern void e_pack_struct_1d(const svLogicVecVal* val); +extern void e_pack_struct_1d1(const svLogicVecVal* val); extern void e_pack_struct_2d(const svLogicVecVal* val); +extern void e_pack_struct_2d1(const svLogicVecVal* val); extern void e_pack_struct_3d(const svLogicVecVal* val); +extern void e_pack_struct_3d1(const svLogicVecVal* val); extern void e_real_0d(double val); extern void e_real_1d(const double* val); +extern void e_real_1d1(const double* val); extern void e_real_2d(const double* val); +extern void e_real_2d1(const double* val); extern void e_real_3d(const double* val); +extern void e_real_3d1(const double* val); extern void e_shortint_0d(short val); extern void e_shortint_1d(const short* val); +extern void e_shortint_1d1(const short* val); extern void e_shortint_2d(const short* val); +extern void e_shortint_2d1(const short* val); extern void e_shortint_3d(const short* val); +extern void e_shortint_3d1(const short* val); extern void e_shortint_unsigned_0d(unsigned short val); extern void e_shortint_unsigned_1d(const unsigned short* val); +extern void e_shortint_unsigned_1d1(const unsigned short* val); extern void e_shortint_unsigned_2d(const unsigned short* val); +extern void e_shortint_unsigned_2d1(const unsigned short* val); extern void e_shortint_unsigned_3d(const unsigned short* val); +extern void e_shortint_unsigned_3d1(const unsigned short* val); extern void e_string_0d(const char* val); extern void e_string_1d(const char** val); +extern void e_string_1d1(const char** val); extern void e_string_2d(const char** val); +extern void e_string_2d1(const char** val); extern void e_string_3d(const char** val); +extern void e_string_3d1(const char** val); extern void e_time_0d(const svLogicVecVal* val); extern void e_time_1d(const svLogicVecVal* val); +extern void e_time_1d1(const svLogicVecVal* val); extern void e_time_2d(const svLogicVecVal* val); +extern void e_time_2d1(const svLogicVecVal* val); extern void e_time_3d(const svLogicVecVal* val); +extern void e_time_3d1(const svLogicVecVal* val); // DPI IMPORTS extern void check_exports(); extern void* get_non_null(); extern void i_bit121_0d(const svBitVecVal* val); extern void i_bit121_1d(const svBitVecVal* val); +extern void i_bit121_1d1(const svBitVecVal* val); extern void i_bit121_2d(const svBitVecVal* val); +extern void i_bit121_2d1(const svBitVecVal* val); extern void i_bit121_3d(const svBitVecVal* val); +extern void i_bit121_3d1(const svBitVecVal* val); extern void i_bit1_0d(svBit val); extern void i_bit1_1d(const svBit* val); +extern void i_bit1_1d1(const svBit* val); extern void i_bit1_2d(const svBit* val); +extern void i_bit1_2d1(const svBit* val); extern void i_bit1_3d(const svBit* val); +extern void i_bit1_3d1(const svBit* val); extern void i_bit7_0d(const svBitVecVal* val); extern void i_bit7_1d(const svBitVecVal* val); +extern void i_bit7_1d1(const svBitVecVal* val); extern void i_bit7_2d(const svBitVecVal* val); +extern void i_bit7_2d1(const svBitVecVal* val); extern void i_bit7_3d(const svBitVecVal* val); +extern void i_bit7_3d1(const svBitVecVal* val); extern void i_byte_0d(char val); extern void i_byte_1d(const char* val); +extern void i_byte_1d1(const char* val); extern void i_byte_2d(const char* val); +extern void i_byte_2d1(const char* val); extern void i_byte_3d(const char* val); +extern void i_byte_3d1(const char* val); extern void i_byte_unsigned_0d(unsigned char val); extern void i_byte_unsigned_1d(const unsigned char* val); +extern void i_byte_unsigned_1d1(const unsigned char* val); extern void i_byte_unsigned_2d(const unsigned char* val); +extern void i_byte_unsigned_2d1(const unsigned char* val); extern void i_byte_unsigned_3d(const unsigned char* val); +extern void i_byte_unsigned_3d1(const unsigned char* val); extern void i_chandle_0d(void* val); extern void i_chandle_1d(const void** val); +extern void i_chandle_1d1(const void** val); extern void i_chandle_2d(const void** val); +extern void i_chandle_2d1(const void** val); extern void i_chandle_3d(const void** val); +extern void i_chandle_3d1(const void** val); extern void i_int_0d(int val); extern void i_int_1d(const int* val); +extern void i_int_1d1(const int* val); extern void i_int_2d(const int* val); +extern void i_int_2d1(const int* val); extern void i_int_3d(const int* val); +extern void i_int_3d1(const int* val); extern void i_int_unsigned_0d(unsigned int val); extern void i_int_unsigned_1d(const unsigned int* val); +extern void i_int_unsigned_1d1(const unsigned int* val); extern void i_int_unsigned_2d(const unsigned int* val); +extern void i_int_unsigned_2d1(const unsigned int* val); extern void i_int_unsigned_3d(const unsigned int* val); +extern void i_int_unsigned_3d1(const unsigned int* val); extern void i_integer_0d(const svLogicVecVal* val); extern void i_integer_1d(const svLogicVecVal* val); +extern void i_integer_1d1(const svLogicVecVal* val); extern void i_integer_2d(const svLogicVecVal* val); +extern void i_integer_2d1(const svLogicVecVal* val); extern void i_integer_3d(const svLogicVecVal* val); +extern void i_integer_3d1(const svLogicVecVal* val); extern void i_logic121_0d(const svLogicVecVal* val); extern void i_logic121_1d(const svLogicVecVal* val); +extern void i_logic121_1d1(const svLogicVecVal* val); extern void i_logic121_2d(const svLogicVecVal* val); +extern void i_logic121_2d1(const svLogicVecVal* val); extern void i_logic121_3d(const svLogicVecVal* val); +extern void i_logic121_3d1(const svLogicVecVal* val); extern void i_logic1_0d(svLogic val); extern void i_logic1_1d(const svLogic* val); +extern void i_logic1_1d1(const svLogic* val); extern void i_logic1_2d(const svLogic* val); +extern void i_logic1_2d1(const svLogic* val); extern void i_logic1_3d(const svLogic* val); +extern void i_logic1_3d1(const svLogic* val); extern void i_logic7_0d(const svLogicVecVal* val); extern void i_logic7_1d(const svLogicVecVal* val); +extern void i_logic7_1d1(const svLogicVecVal* val); extern void i_logic7_2d(const svLogicVecVal* val); +extern void i_logic7_2d1(const svLogicVecVal* val); extern void i_logic7_3d(const svLogicVecVal* val); +extern void i_logic7_3d1(const svLogicVecVal* val); extern void i_longint_0d(long long val); extern void i_longint_1d(const long long* val); +extern void i_longint_1d1(const long long* val); extern void i_longint_2d(const long long* val); +extern void i_longint_2d1(const long long* val); extern void i_longint_3d(const long long* val); +extern void i_longint_3d1(const long long* val); extern void i_longint_unsigned_0d(unsigned long long val); extern void i_longint_unsigned_1d(const unsigned long long* val); +extern void i_longint_unsigned_1d1(const unsigned long long* val); extern void i_longint_unsigned_2d(const unsigned long long* val); +extern void i_longint_unsigned_2d1(const unsigned long long* val); extern void i_longint_unsigned_3d(const unsigned long long* val); +extern void i_longint_unsigned_3d1(const unsigned long long* val); extern void i_pack_struct_0d(const svLogicVecVal* val); extern void i_pack_struct_1d(const svLogicVecVal* val); +extern void i_pack_struct_1d1(const svLogicVecVal* val); extern void i_pack_struct_2d(const svLogicVecVal* val); +extern void i_pack_struct_2d1(const svLogicVecVal* val); extern void i_pack_struct_3d(const svLogicVecVal* val); +extern void i_pack_struct_3d1(const svLogicVecVal* val); extern void i_real_0d(double val); extern void i_real_1d(const double* val); +extern void i_real_1d1(const double* val); extern void i_real_2d(const double* val); +extern void i_real_2d1(const double* val); extern void i_real_3d(const double* val); +extern void i_real_3d1(const double* val); extern void i_shortint_0d(short val); extern void i_shortint_1d(const short* val); +extern void i_shortint_1d1(const short* val); extern void i_shortint_2d(const short* val); +extern void i_shortint_2d1(const short* val); extern void i_shortint_3d(const short* val); +extern void i_shortint_3d1(const short* val); extern void i_shortint_unsigned_0d(unsigned short val); extern void i_shortint_unsigned_1d(const unsigned short* val); +extern void i_shortint_unsigned_1d1(const unsigned short* val); extern void i_shortint_unsigned_2d(const unsigned short* val); +extern void i_shortint_unsigned_2d1(const unsigned short* val); extern void i_shortint_unsigned_3d(const unsigned short* val); +extern void i_shortint_unsigned_3d1(const unsigned short* val); extern void i_string_0d(const char* val); extern void i_string_1d(const char** val); +extern void i_string_1d1(const char** val); extern void i_string_2d(const char** val); +extern void i_string_2d1(const char** val); extern void i_string_3d(const char** val); +extern void i_string_3d1(const char** val); extern void i_time_0d(const svLogicVecVal* val); extern void i_time_1d(const svLogicVecVal* val); +extern void i_time_1d1(const svLogicVecVal* val); extern void i_time_2d(const svLogicVecVal* val); +extern void i_time_2d1(const svLogicVecVal* val); extern void i_time_3d(const svLogicVecVal* val); +extern void i_time_3d1(const svLogicVecVal* val); #ifdef __cplusplus } diff --git a/test_regress/t/t_dpi_arg_output_unpack.cpp b/test_regress/t/t_dpi_arg_output_unpack.cpp index 4b288f565..a2c55aaf6 100644 --- a/test_regress/t/t_dpi_arg_output_unpack.cpp +++ b/test_regress/t/t_dpi_arg_output_unpack.cpp @@ -112,22 +112,32 @@ void set_3d(T* v) { v[(2 * 3 + 0) * 2 + 0] = 50; v[(3 * 3 + 0) * 2 + 0] = 51; } +template +void set_1d1(T* v) { + v[0] = 52; +} + +template +void set_2d1(T* v) { + v[0] = 53; +} +template +void set_3d1(T* v) { + v[0] = 54; +} void set_0d(svLogicVecVal* v, int bitwidth) { set_uint(v, 42, bitwidth); } - void set_1d(svLogicVecVal* v, int bitwidth) { const int unit = (bitwidth + 31) / 32; set_uint(v + 0 * unit, 43, bitwidth); set_uint(v + 1 * unit, 44, bitwidth); } - void set_2d(svLogicVecVal* v, int bitwidth) { const int unit = (bitwidth + 31) / 32; set_uint(v + (0 * 2 + 1) * unit, 45, bitwidth); set_uint(v + (1 * 2 + 1) * unit, 46, bitwidth); set_uint(v + (2 * 2 + 1) * unit, 47, bitwidth); } - void set_3d(svLogicVecVal* v, int bitwidth) { const int unit = (bitwidth + 31) / 32; set_uint(v + ((0 * 3 + 0) * 2 + 0) * unit, 48, bitwidth); @@ -135,42 +145,42 @@ void set_3d(svLogicVecVal* v, int bitwidth) { set_uint(v + ((2 * 3 + 0) * 2 + 0) * unit, 50, bitwidth); set_uint(v + ((3 * 3 + 0) * 2 + 0) * unit, 51, bitwidth); } +void set_1d1(svLogicVecVal* v, int bitwidth) { set_uint(v, 52, bitwidth); } +void set_2d1(svLogicVecVal* v, int bitwidth) { set_uint(v, 53, bitwidth); } +void set_3d1(svLogicVecVal* v, int bitwidth) { set_uint(v, 54, bitwidth); } void set_0d_scalar(svScalar* v) { *v = sv_0; } - void set_1d_scalar(svScalar* v) { v[0] = sv_1; v[1] = sv_0; } - void set_2d_scalar(svScalar* v) { v[0 * 2 + 1] = sv_1; v[1 * 2 + 1] = sv_0; v[2 * 2 + 1] = sv_1; } - void set_3d_scalar(svScalar* v) { v[(0 * 3 + 0) * 2 + 0] = sv_0; v[(1 * 3 + 0) * 2 + 0] = sv_1; v[(2 * 3 + 0) * 2 + 0] = sv_0; v[(3 * 3 + 0) * 2 + 0] = sv_1; } +void set_1d1_scalar(svScalar* v) { v[0] = sv_0; } +void set_2d1_scalar(svScalar* v) { v[0] = sv_1; } +void set_3d1_scalar(svScalar* v) { v[0] = sv_0; } void set_0d(svBitVecVal* v, int bitwidth) { set_uint(v, 42, bitwidth); } - void set_1d(svBitVecVal* v, int bitwidth) { const int unit = (bitwidth + 31) / 32; set_uint(v + 0 * unit, 43, bitwidth); set_uint(v + 1 * unit, 44, bitwidth); } - void set_2d(svBitVecVal* v, int bitwidth) { const int unit = (bitwidth + 31) / 32; set_uint(v + (0 * 2 + 1) * unit, 45, bitwidth); set_uint(v + (1 * 2 + 1) * unit, 46, bitwidth); set_uint(v + (2 * 2 + 1) * unit, 47, bitwidth); } - void set_3d(svBitVecVal* v, int bitwidth) { const int unit = (bitwidth + 31) / 32; set_uint(v + ((0 * 3 + 0) * 2 + 0) * unit, 48, bitwidth); @@ -178,6 +188,9 @@ void set_3d(svBitVecVal* v, int bitwidth) { set_uint(v + ((2 * 3 + 0) * 2 + 0) * unit, 50, bitwidth); set_uint(v + ((3 * 3 + 0) * 2 + 0) * unit, 51, bitwidth); } +void set_1d1(svBitVecVal* v, int bitwidth) { set_uint(v, 52, bitwidth); } +void set_2d1(svBitVecVal* v, int bitwidth) { set_uint(v, 53, bitwidth); } +void set_3d1(svBitVecVal* v, int bitwidth) { set_uint(v, 54, bitwidth); } template bool compare(const T& act, const T& exp) { @@ -207,6 +220,18 @@ bool check_3d(const T (&v)[4][3][2]) { return compare(v[0][0][0], 48) && compare(v[1][0][0], 49) && compare(v[2][0][0], 50) && compare(v[3][0][0], 51); } +template +bool check_1d1(const T (&v)[1]) { + return compare(v[0], 52); +} +template +bool check_2d1(const T (&v)[1][1]) { + return compare(v[0][0], 53); +} +template +bool check_3d1(const T (&v)[1][1][1]) { + return compare(v[0][0][0], 54); +} bool compare(const svLogicVecVal* v0, sv_longint_unsigned_t val, int bitwidth) { for (int i = 0; i < bitwidth; ++i) { @@ -256,6 +281,18 @@ bool check_3d(const T (&v)[4][3][2][N], int bitwidth) { return compare(v[0][0][0], 48, bitwidth) && compare(v[1][0][0], 49, bitwidth) && compare(v[2][0][0], 50, bitwidth) && compare(v[3][0][0], 51, bitwidth); } +template +bool check_1d1(const T (&v)[1][N], int bitwidth) { + return compare(v[0], 52, bitwidth); +} +template +bool check_2d1(const T (&v)[1][1][N], int bitwidth) { + return compare(v[0][0], 53, bitwidth); +} +template +bool check_3d1(const T (&v)[1][1][1][N], int bitwidth) { + return compare(v[0][0][0], 54, bitwidth); +} } // unnamed namespace @@ -268,47 +305,74 @@ void i_byte_0d(char* v) { set_0d(v); } void i_byte_1d(char* v) { set_1d(v); } void i_byte_2d(char* v) { set_2d(v); } void i_byte_3d(char* v) { set_3d(v); } +void i_byte_1d1(char* v) { set_1d1(v); } +void i_byte_2d1(char* v) { set_2d1(v); } +void i_byte_3d1(char* v) { set_3d1(v); } void i_byte_unsigned_0d(unsigned char* v) { set_0d(v); } void i_byte_unsigned_1d(unsigned char* v) { set_1d(v); } void i_byte_unsigned_2d(unsigned char* v) { set_2d(v); } void i_byte_unsigned_3d(unsigned char* v) { set_3d(v); } +void i_byte_unsigned_1d1(unsigned char* v) { set_1d1(v); } +void i_byte_unsigned_2d1(unsigned char* v) { set_2d1(v); } +void i_byte_unsigned_3d1(unsigned char* v) { set_3d1(v); } void i_shortint_0d(short* v) { set_0d(v); } void i_shortint_1d(short* v) { set_1d(v); } void i_shortint_2d(short* v) { set_2d(v); } void i_shortint_3d(short* v) { set_3d(v); } +void i_shortint_1d1(short* v) { set_1d1(v); } +void i_shortint_2d1(short* v) { set_2d1(v); } +void i_shortint_3d1(short* v) { set_3d1(v); } void i_shortint_unsigned_0d(unsigned short* v) { set_0d(v); } void i_shortint_unsigned_1d(unsigned short* v) { set_1d(v); } void i_shortint_unsigned_2d(unsigned short* v) { set_2d(v); } void i_shortint_unsigned_3d(unsigned short* v) { set_3d(v); } +void i_shortint_unsigned_1d1(unsigned short* v) { set_1d1(v); } +void i_shortint_unsigned_2d1(unsigned short* v) { set_2d1(v); } +void i_shortint_unsigned_3d1(unsigned short* v) { set_3d1(v); } void i_int_0d(int* v) { set_0d(v); } void i_int_1d(int* v) { set_1d(v); } void i_int_2d(int* v) { set_2d(v); } void i_int_3d(int* v) { set_3d(v); } +void i_int_1d1(int* v) { set_1d1(v); } +void i_int_2d1(int* v) { set_2d1(v); } +void i_int_3d1(int* v) { set_3d1(v); } void i_int_unsigned_0d(unsigned int* v) { set_0d(v); } void i_int_unsigned_1d(unsigned int* v) { set_1d(v); } void i_int_unsigned_2d(unsigned int* v) { set_2d(v); } void i_int_unsigned_3d(unsigned int* v) { set_3d(v); } +void i_int_unsigned_1d1(unsigned int* v) { set_1d1(v); } +void i_int_unsigned_2d1(unsigned int* v) { set_2d1(v); } +void i_int_unsigned_3d1(unsigned int* v) { set_3d1(v); } void i_longint_0d(sv_longint_t* v) { set_0d(v); } void i_longint_1d(sv_longint_t* v) { set_1d(v); } void i_longint_2d(sv_longint_t* v) { set_2d(v); } void i_longint_3d(sv_longint_t* v) { set_3d(v); } +void i_longint_1d1(sv_longint_t* v) { set_1d1(v); } +void i_longint_2d1(sv_longint_t* v) { set_2d1(v); } +void i_longint_3d1(sv_longint_t* v) { set_3d1(v); } void i_longint_unsigned_0d(sv_longint_unsigned_t* v) { set_0d(v); } void i_longint_unsigned_1d(sv_longint_unsigned_t* v) { set_1d(v); } void i_longint_unsigned_2d(sv_longint_unsigned_t* v) { set_2d(v); } void i_longint_unsigned_3d(sv_longint_unsigned_t* v) { set_3d(v); } +void i_longint_unsigned_1d1(sv_longint_unsigned_t* v) { set_1d1(v); } +void i_longint_unsigned_2d1(sv_longint_unsigned_t* v) { set_2d1(v); } +void i_longint_unsigned_3d1(sv_longint_unsigned_t* v) { set_3d1(v); } #ifndef NO_TIME void i_time_0d(svLogicVecVal* v) { set_0d(v, 64); } void i_time_1d(svLogicVecVal* v) { set_1d(v, 64); } void i_time_2d(svLogicVecVal* v) { set_2d(v, 64); } void i_time_3d(svLogicVecVal* v) { set_3d(v, 64); } +void i_time_1d1(svLogicVecVal* v) { set_1d1(v, 64); } +void i_time_2d1(svLogicVecVal* v) { set_2d1(v, 64); } +void i_time_3d1(svLogicVecVal* v) { set_3d1(v, 64); } #endif #ifndef NO_INTEGER @@ -316,18 +380,27 @@ void i_integer_0d(svLogicVecVal* v) { set_0d(v, 32); } void i_integer_1d(svLogicVecVal* v) { set_1d(v, 32); } void i_integer_2d(svLogicVecVal* v) { set_2d(v, 32); } void i_integer_3d(svLogicVecVal* v) { set_3d(v, 32); } +void i_integer_1d1(svLogicVecVal* v) { set_1d1(v, 32); } +void i_integer_2d1(svLogicVecVal* v) { set_2d1(v, 32); } +void i_integer_3d1(svLogicVecVal* v) { set_3d1(v, 32); } #endif void i_real_0d(double* v) { set_0d(v); } void i_real_1d(double* v) { set_1d(v); } void i_real_2d(double* v) { set_2d(v); } void i_real_3d(double* v) { set_3d(v); } +void i_real_1d1(double* v) { set_1d1(v); } +void i_real_2d1(double* v) { set_2d1(v); } +void i_real_3d1(double* v) { set_3d1(v); } #ifndef NO_SHORTREAL void i_shortreal_0d(float* v) { set_0d(v); } void i_shortreal_1d(float* v) { set_1d(v); } void i_shortreal_2d(float* v) { set_2d(v); } void i_shortreal_3d(float* v) { set_3d(v); } +void i_shortreal_1d1(float* v) { set_1d1(v); } +void i_shortreal_2d1(float* v) { set_2d1(v); } +void i_shortreal_3d1(float* v) { set_3d1(v); } #endif void i_chandle_0d(void** v) { v[0] = get_non_null(); } @@ -346,6 +419,9 @@ void i_chandle_3d(void** v) { v[(2 * 3 + 0) * 2 + 0] = get_non_null(); v[(3 * 3 + 0) * 2 + 0] = get_non_null(); } +void i_chandle_1d1(void** v) { v[0] = get_non_null(); } +void i_chandle_2d1(void** v) { v[0] = get_non_null(); } +void i_chandle_3d1(void** v) { v[0] = get_non_null(); } void i_string_0d(const char** v) { static const char s[] = "42"; @@ -379,41 +455,65 @@ void i_string_3d(const char** v) { v[(2 * 3 + 0) * 2 + 0] = s2; v[(3 * 3 + 0) * 2 + 0] = s3; } +void i_string_1d1(const char** v) { v[0] = "52"; } +void i_string_2d1(const char** v) { v[0] = "53"; } +void i_string_3d1(const char** v) { v[0] = "54"; } void i_bit1_0d(svBit* v) { set_0d_scalar(v); } void i_bit1_1d(svBit* v) { set_1d_scalar(v); } void i_bit1_2d(svBit* v) { set_2d_scalar(v); } void i_bit1_3d(svBit* v) { set_3d_scalar(v); } +void i_bit1_1d1(svBit* v) { set_1d1_scalar(v); } +void i_bit1_2d1(svBit* v) { set_2d1_scalar(v); } +void i_bit1_3d1(svBit* v) { set_3d1_scalar(v); } void i_bit7_0d(svBitVecVal* v) { set_0d(v, 7); } void i_bit7_1d(svBitVecVal* v) { set_1d(v, 7); } void i_bit7_2d(svBitVecVal* v) { set_2d(v, 7); } void i_bit7_3d(svBitVecVal* v) { set_3d(v, 7); } +void i_bit7_1d1(svBitVecVal* v) { set_1d1(v, 7); } +void i_bit7_2d1(svBitVecVal* v) { set_2d1(v, 7); } +void i_bit7_3d1(svBitVecVal* v) { set_3d1(v, 7); } void i_bit121_0d(svBitVecVal* v) { set_0d(v, 121); } void i_bit121_1d(svBitVecVal* v) { set_1d(v, 121); } void i_bit121_2d(svBitVecVal* v) { set_2d(v, 121); } void i_bit121_3d(svBitVecVal* v) { set_3d(v, 121); } +void i_bit121_1d1(svBitVecVal* v) { set_1d1(v, 121); } +void i_bit121_2d1(svBitVecVal* v) { set_2d1(v, 121); } +void i_bit121_3d1(svBitVecVal* v) { set_3d1(v, 121); } void i_logic1_0d(svLogic* v) { set_0d_scalar(v); } void i_logic1_1d(svLogic* v) { set_1d_scalar(v); } void i_logic1_2d(svLogic* v) { set_2d_scalar(v); } void i_logic1_3d(svLogic* v) { set_3d_scalar(v); } +void i_logic1_1d1(svLogic* v) { set_1d1_scalar(v); } +void i_logic1_2d1(svLogic* v) { set_2d1_scalar(v); } +void i_logic1_3d1(svLogic* v) { set_3d1_scalar(v); } void i_logic7_0d(svLogicVecVal* v) { set_0d(v, 7); } void i_logic7_1d(svLogicVecVal* v) { set_1d(v, 7); } void i_logic7_2d(svLogicVecVal* v) { set_2d(v, 7); } void i_logic7_3d(svLogicVecVal* v) { set_3d(v, 7); } +void i_logic7_1d1(svLogicVecVal* v) { set_1d1(v, 7); } +void i_logic7_2d1(svLogicVecVal* v) { set_2d1(v, 7); } +void i_logic7_3d1(svLogicVecVal* v) { set_3d1(v, 7); } void i_logic121_0d(svLogicVecVal* v) { set_0d(v, 121); } void i_logic121_1d(svLogicVecVal* v) { set_1d(v, 121); } void i_logic121_2d(svLogicVecVal* v) { set_2d(v, 121); } void i_logic121_3d(svLogicVecVal* v) { set_3d(v, 121); } +void i_logic121_1d1(svLogicVecVal* v) { set_1d1(v, 121); } +void i_logic121_2d1(svLogicVecVal* v) { set_2d1(v, 121); } +void i_logic121_3d1(svLogicVecVal* v) { set_3d1(v, 121); } void i_pack_struct_0d(svLogicVecVal* v) { set_0d(v, 7); } void i_pack_struct_1d(svLogicVecVal* v) { set_1d(v, 7); } void i_pack_struct_2d(svLogicVecVal* v) { set_2d(v, 7); } void i_pack_struct_3d(svLogicVecVal* v) { set_3d(v, 7); } +void i_pack_struct_1d1(svLogicVecVal* v) { set_1d1(v, 7); } +void i_pack_struct_2d1(svLogicVecVal* v) { set_2d1(v, 7); } +void i_pack_struct_3d1(svLogicVecVal* v) { set_3d1(v, 7); } #ifndef NO_UNPACK_STRUCT void i_unpack_struct_0d(unpack_struct_t* v) { set_uint(v->val, 42, 121); } @@ -432,6 +532,9 @@ void i_unpack_struct_3d(unpack_struct_t* v) { set_uint(v[(2 * 3 + 0) * 2 + 0].val, 50, 121); set_uint(v[(3 * 3 + 0) * 2 + 0].val, 51, 121); } +void i_unpack_struct_1d1(unpack_struct_t* v) { set_uint(v[0].val, 52, 121); } +void i_unpack_struct_2d1(unpack_struct_t* v) { set_uint(v[0].val, 53, 121); } +void i_unpack_struct_3d1(unpack_struct_t* v) { set_uint(v[0].val, 54, 121); } #endif void check_exports() { @@ -446,6 +549,15 @@ void check_exports() { e_byte_3d(&byte_array[0][0][0]); if (!check_3d(byte_array)) stop(); } + { + char array[1][1][1]; + e_byte_1d1(&array[0][0][0]); + if (!check_1d1(array[0][0])) stop(); + e_byte_2d1(&array[0][0][0]); + if (!check_2d1(array[0])) stop(); + e_byte_3d1(&array[0][0][0]); + if (!check_3d1(array)) stop(); + } { unsigned char byte_unsigned_array[4][3][2]; e_byte_unsigned_0d(&byte_unsigned_array[3][2][1]); @@ -457,6 +569,15 @@ void check_exports() { e_byte_unsigned_3d(&byte_unsigned_array[0][0][0]); if (!check_3d(byte_unsigned_array)) stop(); } + { + unsigned char array[1][1][1]; + e_byte_unsigned_1d1(&array[0][0][0]); + if (!check_1d1(array[0][0])) stop(); + e_byte_unsigned_2d1(&array[0][0][0]); + if (!check_2d1(array[0])) stop(); + e_byte_unsigned_3d1(&array[0][0][0]); + if (!check_3d1(array)) stop(); + } { short shortint_array[4][3][2]; e_shortint_0d(&shortint_array[3][2][1]); @@ -468,6 +589,15 @@ void check_exports() { e_shortint_3d(&shortint_array[0][0][0]); if (!check_3d(shortint_array)) stop(); } + { + short array[1][1][1]; + e_shortint_1d1(&array[0][0][0]); + if (!check_1d1(array[0][0])) stop(); + e_shortint_2d1(&array[0][0][0]); + if (!check_2d1(array[0])) stop(); + e_shortint_3d1(&array[0][0][0]); + if (!check_3d1(array)) stop(); + } { unsigned short shortint_unsigned_array[4][3][2]; e_shortint_unsigned_0d(&shortint_unsigned_array[3][2][1]); @@ -479,6 +609,15 @@ void check_exports() { e_shortint_unsigned_3d(&shortint_unsigned_array[0][0][0]); if (!check_3d(shortint_unsigned_array)) stop(); } + { + unsigned short array[1][1][1]; + e_shortint_unsigned_1d1(&array[0][0][0]); + if (!check_1d1(array[0][0])) stop(); + e_shortint_unsigned_2d1(&array[0][0][0]); + if (!check_2d1(array[0])) stop(); + e_shortint_unsigned_3d1(&array[0][0][0]); + if (!check_3d1(array)) stop(); + } { int int_array[4][3][2]; @@ -491,6 +630,15 @@ void check_exports() { e_int_3d(&int_array[0][0][0]); if (!check_3d(int_array)) stop(); } + { + int array[1][1][1]; + e_int_1d1(&array[0][0][0]); + if (!check_1d1(array[0][0])) stop(); + e_int_2d1(&array[0][0][0]); + if (!check_2d1(array[0])) stop(); + e_int_3d1(&array[0][0][0]); + if (!check_3d1(array)) stop(); + } { unsigned int int_unsigned_array[4][3][2]; e_int_unsigned_0d(&int_unsigned_array[3][2][1]); @@ -502,6 +650,15 @@ void check_exports() { e_int_unsigned_3d(&int_unsigned_array[0][0][0]); if (!check_3d(int_unsigned_array)) stop(); } + { + unsigned int array[1][1][1]; + e_int_unsigned_1d1(&array[0][0][0]); + if (!check_1d1(array[0][0])) stop(); + e_int_unsigned_2d1(&array[0][0][0]); + if (!check_2d1(array[0])) stop(); + e_int_unsigned_3d1(&array[0][0][0]); + if (!check_3d1(array)) stop(); + } { sv_longint_t longint_array[4][3][2]; @@ -514,6 +671,15 @@ void check_exports() { e_longint_3d(&longint_array[0][0][0]); if (!check_3d(longint_array)) stop(); } + { + sv_longint_t array[1][1][1]; + e_longint_1d1(&array[0][0][0]); + if (!check_1d1(array[0][0])) stop(); + e_longint_2d1(&array[0][0][0]); + if (!check_2d1(array[0])) stop(); + e_longint_3d1(&array[0][0][0]); + if (!check_3d1(array)) stop(); + } { sv_longint_unsigned_t longint_unsigned_array[4][3][2]; e_longint_unsigned_0d(&longint_unsigned_array[3][2][1]); @@ -525,6 +691,15 @@ void check_exports() { e_longint_unsigned_3d(&longint_unsigned_array[0][0][0]); if (!check_3d(longint_unsigned_array)) stop(); } + { + sv_longint_unsigned_t array[1][1][1]; + e_longint_unsigned_1d1(&array[0][0][0]); + if (!check_1d1(array[0][0])) stop(); + e_longint_unsigned_2d1(&array[0][0][0]); + if (!check_2d1(array[0])) stop(); + e_longint_unsigned_3d1(&array[0][0][0]); + if (!check_3d1(array)) stop(); + } #ifndef NO_TIME { @@ -538,6 +713,15 @@ void check_exports() { e_time_3d(time_array[0][0][0]); if (!check_3d(time_array, 64)) stop(); } + { + svLogicVecVal array[1][1][1][2]; + e_time_1d1(array[0][0][0]); + if (!check_1d1(array[0][0], 64)) stop(); + e_time_2d1(array[0][0][0]); + if (!check_2d1(array[0], 64)) stop(); + e_time_3d1(array[0][0][0]); + if (!check_3d1(array, 64)) stop(); + } #endif #ifndef NO_INTEGER @@ -552,6 +736,15 @@ void check_exports() { e_integer_3d(integer_array[0][0][0]); if (!check_3d(integer_array, 32)) stop(); } + { + svLogicVecVal array[1][1][1][1]; + e_integer_1d1(array[0][0][0]); + if (!check_1d1(array[0][0], 32)) stop(); + e_integer_2d1(array[0][0][0]); + if (!check_2d1(array[0], 32)) stop(); + e_integer_3d1(array[0][0][0]); + if (!check_3d1(array, 32)) stop(); + } #endif { @@ -565,6 +758,15 @@ void check_exports() { e_real_3d(&real_array[0][0][0]); if (!check_3d(real_array)) stop(); } + { + double array[1][1][1]; + e_real_1d1(&array[0][0][0]); + if (!check_1d1(array[0][0])) stop(); + e_real_2d1(&array[0][0][0]); + if (!check_2d1(array[0])) stop(); + e_real_3d1(&array[0][0][0]); + if (!check_3d1(array)) stop(); + } #ifndef NO_SHORTREAL { float shortreal_array[4][3][2]; @@ -577,6 +779,15 @@ void check_exports() { e_shortreal_3d(&shortreal_array[0][0][0]); if (!check_3d(shortreal_array)) stop(); } + { + float array[1][1][1]; + e_shortreal_1d1(&array[0][0][0]); + if (!check_1d1(array[0][0])) stop(); + e_shortreal_2d1(&array[0][0][0]); + if (!check_2d1(array[0])) stop(); + e_shortreal_3d1(&array[0][0][0]); + if (!check_3d1(array)) stop(); + } #endif { @@ -599,6 +810,15 @@ void check_exports() { if (!chandle_array[2][0][0]) stop(); if (!chandle_array[3][0][0]) stop(); } + { + void* chandle_array[1][1][1]; + e_chandle_1d1(&chandle_array[0][0][0]); + if (!chandle_array[0][0][0]) stop(); + e_chandle_2d1(&chandle_array[0][0][0]); + if (!chandle_array[0][0][0]) stop(); + e_chandle_3d1(&chandle_array[0][0][0]); + if (!chandle_array[0][0][0]) stop(); + } { const char* string_array[4][3][2]; @@ -620,6 +840,15 @@ void check_exports() { if (!compare(string_array[2][0][0], "50")) stop(); if (!compare(string_array[3][0][0], "51")) stop(); } + { + const char* string_array[1][1][1]; + e_string_1d1(&string_array[0][0][0]); + if (!compare(string_array[0][0][0], "52")) stop(); + e_string_2d1(&string_array[0][0][0]); + if (!compare(string_array[0][0][0], "53")) stop(); + e_string_3d1(&string_array[0][0][0]); + if (!compare(string_array[0][0][0], "54")) stop(); + } { svBitVecVal bit7_array[4][3][2][1]; @@ -655,6 +884,15 @@ void check_exports() { e_logic7_3d(logic7_array[0][0][0]); if (!check_3d(logic7_array, 7)) stop(); } + { + svLogicVecVal array[1][1][1][1]; + e_logic7_1d1(array[0][0][0]); + if (!check_1d1(array[0][0], 7)) stop(); + e_logic7_2d1(array[0][0][0]); + if (!check_2d1(array[0], 7)) stop(); + e_logic7_3d1(array[0][0][0]); + if (!check_3d1(array, 7)) stop(); + } { svLogicVecVal logic121_array[4][3][2][4]; @@ -667,6 +905,15 @@ void check_exports() { e_logic121_3d(logic121_array[0][0][0]); if (!check_3d(logic121_array, 121)) stop(); } + { + svLogicVecVal array[1][1][1][4]; + e_logic121_1d1(array[0][0][0]); + if (!check_1d1(array[0][0], 121)) stop(); + e_logic121_2d1(array[0][0][0]); + if (!check_2d1(array[0], 121)) stop(); + e_logic121_3d1(array[0][0][0]); + if (!check_3d1(array, 121)) stop(); + } { svLogicVecVal pack_struct_array[4][3][2][1]; @@ -679,6 +926,15 @@ void check_exports() { e_pack_struct_3d(pack_struct_array[0][0][0]); if (!check_3d(pack_struct_array, 7)) stop(); } + { + svLogicVecVal array[1][1][1][1]; + e_pack_struct_1d1(array[0][0][0]); + if (!check_1d1(array[0][0], 7)) stop(); + e_pack_struct_2d1(array[0][0][0]); + if (!check_2d1(array[0], 7)) stop(); + e_pack_struct_3d1(array[0][0][0]); + if (!check_3d1(array, 7)) stop(); + } #ifndef NO_UNPACK_STRUCT { @@ -698,5 +954,14 @@ void check_exports() { if (!compare(unpack_struct_array[2][0][0].val, 50, 121)) stop(); if (!compare(unpack_struct_array[3][0][0].val, 51, 121)) stop(); } + { + unpack_struct_t unpack_struct_array[1][1][1]; + e_unpack_struct_1d1(&unpack_struct_array[0][0][0]); + if (!compare(unpack_struct_array[0][0][0].val, 52, 121)) stop(); + e_unpack_struct_2d1(&unpack_struct_array[0][0][0]); + if (!compare(unpack_struct_array[0][0][0].val, 53, 121)) stop(); + e_unpack_struct_3d1(&unpack_struct_array[0][0][0]); + if (!compare(unpack_struct_array[0][0][0].val, 54, 121)) stop(); + } #endif } diff --git a/test_regress/t/t_dpi_arg_output_unpack.v b/test_regress/t/t_dpi_arg_output_unpack.v index fc9c96f64..d4438e829 100644 --- a/test_regress/t/t_dpi_arg_output_unpack.v +++ b/test_regress/t/t_dpi_arg_output_unpack.v @@ -40,16 +40,27 @@ $stop; \ end -`define CHECK_0D(val) `CHECK_VAL((val), 42) -`define CHECK_1D(val) `CHECK_VAL(val[0], 43); \ -`CHECK_VAL(val[1], 44) -`define CHECK_2D(val) `CHECK_VAL(val[0][1], 45); \ -`CHECK_VAL(val[1][1], 46); \ -`CHECK_VAL(val[2][1], 47) -`define CHECK_3D(val) `CHECK_VAL(val[0][0][0], 48); \ -`CHECK_VAL(val[1][0][0], 49); \ -`CHECK_VAL(val[2][0][0], 50); \ -`CHECK_VAL(val[3][0][0], 51) +`define CHECK_0D(val) \ + `CHECK_VAL((val), 42) +`define CHECK_1D(val) \ + `CHECK_VAL(val[0], 43); \ + `CHECK_VAL(val[1], 44) +`define CHECK_2D(val) \ + `CHECK_VAL(val[0][1], 45); \ + `CHECK_VAL(val[1][1], 46); \ + `CHECK_VAL(val[2][1], 47) +`define CHECK_3D(val) \ + `CHECK_VAL(val[0][0][0], 48); \ + `CHECK_VAL(val[1][0][0], 49); \ + `CHECK_VAL(val[2][0][0], 50); \ + `CHECK_VAL(val[3][0][0], 51) + +`define CHECK_1D1(val) \ + `CHECK_VAL(val[0], 52) +`define CHECK_2D1(val) \ + `CHECK_VAL(val[0][0], 53) +`define CHECK_3D1(val) \ + `CHECK_VAL(val[0][0][0], 54) `define CHECK_CHANDLE_VAL(act, exp) if ((act) == (exp)) begin \ if (ENABLE_VERBOSE_MESSAGE)$display(`"act`", ":non-null as expected"); \ @@ -83,42 +94,64 @@ module t; // Type definitions //====================================================================== - typedef byte byte_array_t[4][3][2]; - typedef byte unsigned byte_unsigned_array_t[4][3][2]; - typedef shortint shortint_array_t[4][3][2]; + typedef byte byte_array_t[4][3][2]; + typedef byte byte_array1_t[1][1][1]; + typedef byte unsigned byte_unsigned_array_t[4][3][2]; + typedef byte unsigned byte_unsigned_array1_t[1][1][1]; + typedef shortint shortint_array_t[4][3][2]; + typedef shortint shortint_array1_t[1][1][1]; typedef shortint unsigned shortint_unsigned_array_t[4][3][2]; + typedef shortint unsigned shortint_unsigned_array1_t[1][1][1]; typedef int int_array_t[4][3][2]; + typedef int int_array1_t[1][1][1]; typedef int unsigned int_unsigned_array_t[4][3][2]; + typedef int unsigned int_unsigned_array1_t[1][1][1]; typedef longint longint_array_t[4][3][2]; + typedef longint longint_array1_t[1][1][1]; typedef longint unsigned longint_unsigned_array_t[4][3][2]; + typedef longint unsigned longint_unsigned_array1_t[1][1][1]; `ifndef NO_TIME typedef time time_array_t[4][3][2]; + typedef time time_array1_t[1][1][1]; `endif `ifndef NO_INTEGER typedef integer integer_array_t[4][3][2]; + typedef integer integer_array1_t[1][1][1]; `endif typedef real real_array_t[4][3][2]; + typedef real real_array1_t[1][1][1]; `ifndef NO_SHORTREAL typedef shortreal shortreal_array_t[4][3][2]; + typedef shortreal shortreal_array1_t[1][1][1]; `endif typedef chandle chandle_array_t[4][3][2]; + typedef chandle chandle_array1_t[1][1][1]; typedef string string_array_t[4][3][2]; + typedef string string_array1_t[1][1][1]; typedef bit bit1_array_t[4][3][2]; + typedef bit bit1_array1_t[1][1][1]; typedef bit [6:0] bit7_array_t[4][3][2]; + typedef bit [6:0] bit7_array1_t[1][1][1]; typedef bit [120:0] bit121_array_t[4][3][2]; + typedef bit [120:0] bit121_array1_t[1][1][1]; typedef logic logic1_array_t[4][3][2]; + typedef logic logic1_array1_t[1][1][1]; typedef logic [6:0] logic7_array_t[4][3][2]; + typedef logic [6:0] logic7_array1_t[1][1][1]; typedef logic [120:0] logic121_array_t[4][3][2]; + typedef logic [120:0] logic121_array1_t[1][1][1]; typedef struct packed { logic [6:0] val; } pack_struct_t; typedef pack_struct_t pack_struct_array_t[4][3][2]; + typedef pack_struct_t pack_struct_array1_t[1][1][1]; `ifndef NO_UNPACK_STRUCT typedef struct { logic [120:0] val; } unpack_struct_t; typedef unpack_struct_t unpack_struct_array_t[4][3][2]; + typedef unpack_struct_t unpack_struct_array1_t[1][1][1]; `endif //====================================================================== @@ -132,47 +165,74 @@ module t; import "DPI-C" function void i_byte_1d(output byte val[2]); import "DPI-C" function void i_byte_2d(output byte val[3][2]); import "DPI-C" function void i_byte_3d(output byte_array_t val); + import "DPI-C" function void i_byte_1d1(output byte val[1]); + import "DPI-C" function void i_byte_2d1(output byte val[1][1]); + import "DPI-C" function void i_byte_3d1(output byte_array1_t val); import "DPI-C" function void i_byte_unsigned_0d(output byte unsigned val); import "DPI-C" function void i_byte_unsigned_1d(output byte unsigned val[2]); import "DPI-C" function void i_byte_unsigned_2d(output byte unsigned val[3][2]); import "DPI-C" function void i_byte_unsigned_3d(output byte_unsigned_array_t val); + import "DPI-C" function void i_byte_unsigned_1d1(output byte unsigned val[1]); + import "DPI-C" function void i_byte_unsigned_2d1(output byte unsigned val[1][1]); + import "DPI-C" function void i_byte_unsigned_3d1(output byte_unsigned_array1_t val); import "DPI-C" function void i_shortint_0d(output shortint val); import "DPI-C" function void i_shortint_1d(output shortint val[2]); import "DPI-C" function void i_shortint_2d(output shortint val[3][2]); import "DPI-C" function void i_shortint_3d(output shortint_array_t val); + import "DPI-C" function void i_shortint_1d1(output shortint val[1]); + import "DPI-C" function void i_shortint_2d1(output shortint val[1][1]); + import "DPI-C" function void i_shortint_3d1(output shortint_array1_t val); import "DPI-C" function void i_shortint_unsigned_0d(output shortint unsigned val); import "DPI-C" function void i_shortint_unsigned_1d(output shortint unsigned val[2]); import "DPI-C" function void i_shortint_unsigned_2d(output shortint unsigned val[3][2]); import "DPI-C" function void i_shortint_unsigned_3d(output shortint_unsigned_array_t val); + import "DPI-C" function void i_shortint_unsigned_1d1(output shortint unsigned val[1]); + import "DPI-C" function void i_shortint_unsigned_2d1(output shortint unsigned val[1][1]); + import "DPI-C" function void i_shortint_unsigned_3d1(output shortint_unsigned_array1_t val); import "DPI-C" function void i_int_0d(output int val); import "DPI-C" function void i_int_1d(output int val[2]); import "DPI-C" function void i_int_2d(output int val[3][2]); import "DPI-C" function void i_int_3d(output int_array_t val); + import "DPI-C" function void i_int_1d1(output int val[1]); + import "DPI-C" function void i_int_2d1(output int val[1][1]); + import "DPI-C" function void i_int_3d1(output int_array1_t val); import "DPI-C" function void i_int_unsigned_0d(output int unsigned val); import "DPI-C" function void i_int_unsigned_1d(output int unsigned val[2]); import "DPI-C" function void i_int_unsigned_2d(output int unsigned val[3][2]); import "DPI-C" function void i_int_unsigned_3d(output int_unsigned_array_t val); + import "DPI-C" function void i_int_unsigned_1d1(output int unsigned val[1]); + import "DPI-C" function void i_int_unsigned_2d1(output int unsigned val[1][1]); + import "DPI-C" function void i_int_unsigned_3d1(output int_unsigned_array1_t val); import "DPI-C" function void i_longint_0d(output longint val); import "DPI-C" function void i_longint_1d(output longint val[2]); import "DPI-C" function void i_longint_2d(output longint val[3][2]); import "DPI-C" function void i_longint_3d(output longint_array_t val); + import "DPI-C" function void i_longint_1d1(output longint val[1]); + import "DPI-C" function void i_longint_2d1(output longint val[1][1]); + import "DPI-C" function void i_longint_3d1(output longint_array1_t val); import "DPI-C" function void i_longint_unsigned_0d(output longint unsigned val); import "DPI-C" function void i_longint_unsigned_1d(output longint unsigned val[2]); import "DPI-C" function void i_longint_unsigned_2d(output longint unsigned val[3][2]); import "DPI-C" function void i_longint_unsigned_3d(output longint_unsigned_array_t val); + import "DPI-C" function void i_longint_unsigned_1d1(output longint unsigned val[1]); + import "DPI-C" function void i_longint_unsigned_2d1(output longint unsigned val[1][1]); + import "DPI-C" function void i_longint_unsigned_3d1(output longint_unsigned_array1_t val); `ifndef NO_TIME import "DPI-C" function void i_time_0d(output time val); import "DPI-C" function void i_time_1d(output time val[2]); import "DPI-C" function void i_time_2d(output time val[3][2]); import "DPI-C" function void i_time_3d(output time_array_t val); + import "DPI-C" function void i_time_1d1(output time val[1]); + import "DPI-C" function void i_time_2d1(output time val[1][1]); + import "DPI-C" function void i_time_3d1(output time_array1_t val); `endif `ifndef NO_INTEGER @@ -180,70 +240,109 @@ module t; import "DPI-C" function void i_integer_1d(output integer val[2]); import "DPI-C" function void i_integer_2d(output integer val[3][2]); import "DPI-C" function void i_integer_3d(output integer_array_t val); + import "DPI-C" function void i_integer_1d1(output integer val[1]); + import "DPI-C" function void i_integer_2d1(output integer val[1][1]); + import "DPI-C" function void i_integer_3d1(output integer_array1_t val); `endif import "DPI-C" function void i_real_0d(output real val); import "DPI-C" function void i_real_1d(output real val[2]); import "DPI-C" function void i_real_2d(output real val[3][2]); import "DPI-C" function void i_real_3d(output real_array_t val); + import "DPI-C" function void i_real_1d1(output real val[1]); + import "DPI-C" function void i_real_2d1(output real val[1][1]); + import "DPI-C" function void i_real_3d1(output real_array1_t val); `ifndef NO_SHORTREAL import "DPI-C" function void i_shortreal_0d(output shortreal val); import "DPI-C" function void i_shortreal_1d(output shortreal val[2]); import "DPI-C" function void i_shortreal_2d(output shortreal val[3][2]); import "DPI-C" function void i_shortreal_3d(output shortreal_array_t val); + import "DPI-C" function void i_shortreal_1d1(output shortreal val[1]); + import "DPI-C" function void i_shortreal_2d1(output shortreal val[1][1]); + import "DPI-C" function void i_shortreal_3d1(output shortreal_array1_t val); `endif import "DPI-C" function void i_chandle_0d(output chandle val); import "DPI-C" function void i_chandle_1d(output chandle val[2]); import "DPI-C" function void i_chandle_2d(output chandle val[3][2]); import "DPI-C" function void i_chandle_3d(output chandle_array_t val); + import "DPI-C" function void i_chandle_1d1(output chandle val[1]); + import "DPI-C" function void i_chandle_2d1(output chandle val[1][1]); + import "DPI-C" function void i_chandle_3d1(output chandle_array1_t val); import "DPI-C" function void i_string_0d(output string val); import "DPI-C" function void i_string_1d(output string val[2]); import "DPI-C" function void i_string_2d(output string val[3][2]); import "DPI-C" function void i_string_3d(output string_array_t val); + import "DPI-C" function void i_string_1d1(output string val[1]); + import "DPI-C" function void i_string_2d1(output string val[1][1]); + import "DPI-C" function void i_string_3d1(output string_array1_t val); import "DPI-C" function void i_bit1_0d(output bit val); import "DPI-C" function void i_bit1_1d(output bit val[2]); import "DPI-C" function void i_bit1_2d(output bit val[3][2]); import "DPI-C" function void i_bit1_3d(output bit1_array_t val); + import "DPI-C" function void i_bit1_1d1(output bit val[1]); + import "DPI-C" function void i_bit1_2d1(output bit val[1][1]); + import "DPI-C" function void i_bit1_3d1(output bit1_array1_t val); import "DPI-C" function void i_bit7_0d(output bit[6:0] val); import "DPI-C" function void i_bit7_1d(output bit[6:0] val[2]); import "DPI-C" function void i_bit7_2d(output bit[6:0] val[3][2]); import "DPI-C" function void i_bit7_3d(output bit7_array_t val); + import "DPI-C" function void i_bit7_1d1(output bit[6:0] val[1]); + import "DPI-C" function void i_bit7_2d1(output bit[6:0] val[1][1]); + import "DPI-C" function void i_bit7_3d1(output bit7_array1_t val); import "DPI-C" function void i_bit121_0d(output bit[120:0] val); import "DPI-C" function void i_bit121_1d(output bit[120:0] val[2]); import "DPI-C" function void i_bit121_2d(output bit[120:0] val[3][2]); import "DPI-C" function void i_bit121_3d(output bit121_array_t val); + import "DPI-C" function void i_bit121_1d1(output bit[120:0] val[1]); + import "DPI-C" function void i_bit121_2d1(output bit[120:0] val[1][1]); + import "DPI-C" function void i_bit121_3d1(output bit121_array1_t val); import "DPI-C" function void i_logic1_0d(output logic val); import "DPI-C" function void i_logic1_1d(output logic val[2]); import "DPI-C" function void i_logic1_2d(output logic val[3][2]); import "DPI-C" function void i_logic1_3d(output logic1_array_t val); + import "DPI-C" function void i_logic1_1d1(output logic val[1]); + import "DPI-C" function void i_logic1_2d1(output logic val[1][1]); + import "DPI-C" function void i_logic1_3d1(output logic1_array1_t val); import "DPI-C" function void i_logic7_0d(output logic[6:0] val); import "DPI-C" function void i_logic7_1d(output logic[6:0] val[2]); import "DPI-C" function void i_logic7_2d(output logic[6:0] val[3][2]); import "DPI-C" function void i_logic7_3d(output logic7_array_t val); + import "DPI-C" function void i_logic7_1d1(output logic[6:0] val[1]); + import "DPI-C" function void i_logic7_2d1(output logic[6:0] val[1][1]); + import "DPI-C" function void i_logic7_3d1(output logic7_array1_t val); import "DPI-C" function void i_logic121_0d(output logic[120:0] val); import "DPI-C" function void i_logic121_1d(output logic[120:0] val[2]); import "DPI-C" function void i_logic121_2d(output logic[120:0] val[3][2]); import "DPI-C" function void i_logic121_3d(output logic121_array_t val); + import "DPI-C" function void i_logic121_1d1(output logic[120:0] val[1]); + import "DPI-C" function void i_logic121_2d1(output logic[120:0] val[1][1]); + import "DPI-C" function void i_logic121_3d1(output logic121_array1_t val); import "DPI-C" function void i_pack_struct_0d(output pack_struct_t val); import "DPI-C" function void i_pack_struct_1d(output pack_struct_t val[2]); import "DPI-C" function void i_pack_struct_2d(output pack_struct_t val[3][2]); import "DPI-C" function void i_pack_struct_3d(output pack_struct_array_t val); + import "DPI-C" function void i_pack_struct_1d1(output pack_struct_t val[1]); + import "DPI-C" function void i_pack_struct_2d1(output pack_struct_t val[1][1]); + import "DPI-C" function void i_pack_struct_3d1(output pack_struct_array1_t val); `ifndef NO_UNPACK_STRUCT import "DPI-C" function void i_unpack_struct_0d(output unpack_struct_t val); import "DPI-C" function void i_unpack_struct_1d(output unpack_struct_t val[2]); import "DPI-C" function void i_unpack_struct_2d(output unpack_struct_t val[3][2]); import "DPI-C" function void i_unpack_struct_3d(output unpack_struct_array_t val); + import "DPI-C" function void i_unpack_struct_1d1(output unpack_struct_t val[1]); + import "DPI-C" function void i_unpack_struct_2d1(output unpack_struct_t val[1][1]); + import "DPI-C" function void i_unpack_struct_3d1(output unpack_struct_array1_t val); `endif //====================================================================== @@ -253,47 +352,74 @@ module t; export "DPI-C" function e_byte_1d; export "DPI-C" function e_byte_2d; export "DPI-C" function e_byte_3d; + export "DPI-C" function e_byte_1d1; + export "DPI-C" function e_byte_2d1; + export "DPI-C" function e_byte_3d1; export "DPI-C" function e_byte_unsigned_0d; export "DPI-C" function e_byte_unsigned_1d; export "DPI-C" function e_byte_unsigned_2d; export "DPI-C" function e_byte_unsigned_3d; + export "DPI-C" function e_byte_unsigned_1d1; + export "DPI-C" function e_byte_unsigned_2d1; + export "DPI-C" function e_byte_unsigned_3d1; export "DPI-C" function e_shortint_0d; export "DPI-C" function e_shortint_1d; export "DPI-C" function e_shortint_2d; export "DPI-C" function e_shortint_3d; + export "DPI-C" function e_shortint_1d1; + export "DPI-C" function e_shortint_2d1; + export "DPI-C" function e_shortint_3d1; export "DPI-C" function e_shortint_unsigned_0d; export "DPI-C" function e_shortint_unsigned_1d; export "DPI-C" function e_shortint_unsigned_2d; export "DPI-C" function e_shortint_unsigned_3d; + export "DPI-C" function e_shortint_unsigned_1d1; + export "DPI-C" function e_shortint_unsigned_2d1; + export "DPI-C" function e_shortint_unsigned_3d1; export "DPI-C" function e_int_0d; export "DPI-C" function e_int_1d; export "DPI-C" function e_int_2d; export "DPI-C" function e_int_3d; + export "DPI-C" function e_int_1d1; + export "DPI-C" function e_int_2d1; + export "DPI-C" function e_int_3d1; export "DPI-C" function e_int_unsigned_0d; export "DPI-C" function e_int_unsigned_1d; export "DPI-C" function e_int_unsigned_2d; export "DPI-C" function e_int_unsigned_3d; + export "DPI-C" function e_int_unsigned_1d1; + export "DPI-C" function e_int_unsigned_2d1; + export "DPI-C" function e_int_unsigned_3d1; export "DPI-C" function e_longint_0d; export "DPI-C" function e_longint_1d; export "DPI-C" function e_longint_2d; export "DPI-C" function e_longint_3d; + export "DPI-C" function e_longint_1d1; + export "DPI-C" function e_longint_2d1; + export "DPI-C" function e_longint_3d1; export "DPI-C" function e_longint_unsigned_0d; export "DPI-C" function e_longint_unsigned_1d; export "DPI-C" function e_longint_unsigned_2d; export "DPI-C" function e_longint_unsigned_3d; + export "DPI-C" function e_longint_unsigned_1d1; + export "DPI-C" function e_longint_unsigned_2d1; + export "DPI-C" function e_longint_unsigned_3d1; `ifndef NO_TIME export "DPI-C" function e_time_0d; export "DPI-C" function e_time_1d; export "DPI-C" function e_time_2d; export "DPI-C" function e_time_3d; + export "DPI-C" function e_time_1d1; + export "DPI-C" function e_time_2d1; + export "DPI-C" function e_time_3d1; `endif `ifndef NO_INTEGER @@ -301,70 +427,109 @@ module t; export "DPI-C" function e_integer_1d; export "DPI-C" function e_integer_2d; export "DPI-C" function e_integer_3d; + export "DPI-C" function e_integer_1d1; + export "DPI-C" function e_integer_2d1; + export "DPI-C" function e_integer_3d1; `endif export "DPI-C" function e_real_0d; export "DPI-C" function e_real_1d; export "DPI-C" function e_real_2d; export "DPI-C" function e_real_3d; + export "DPI-C" function e_real_1d1; + export "DPI-C" function e_real_2d1; + export "DPI-C" function e_real_3d1; `ifndef NO_SHORTREAL export "DPI-C" function e_shortreal_0d; export "DPI-C" function e_shortreal_1d; export "DPI-C" function e_shortreal_2d; export "DPI-C" function e_shortreal_3d; + export "DPI-C" function e_shortreal_1d1; + export "DPI-C" function e_shortreal_2d1; + export "DPI-C" function e_shortreal_3d1; `endif export "DPI-C" function e_chandle_0d; export "DPI-C" function e_chandle_1d; export "DPI-C" function e_chandle_2d; export "DPI-C" function e_chandle_3d; + export "DPI-C" function e_chandle_1d1; + export "DPI-C" function e_chandle_2d1; + export "DPI-C" function e_chandle_3d1; export "DPI-C" function e_string_0d; export "DPI-C" function e_string_1d; export "DPI-C" function e_string_2d; export "DPI-C" function e_string_3d; + export "DPI-C" function e_string_1d1; + export "DPI-C" function e_string_2d1; + export "DPI-C" function e_string_3d1; export "DPI-C" function e_bit1_0d; export "DPI-C" function e_bit1_1d; export "DPI-C" function e_bit1_2d; export "DPI-C" function e_bit1_3d; + export "DPI-C" function e_bit1_1d1; + export "DPI-C" function e_bit1_2d1; + export "DPI-C" function e_bit1_3d1; export "DPI-C" function e_bit7_0d; export "DPI-C" function e_bit7_1d; export "DPI-C" function e_bit7_2d; export "DPI-C" function e_bit7_3d; + export "DPI-C" function e_bit7_1d1; + export "DPI-C" function e_bit7_2d1; + export "DPI-C" function e_bit7_3d1; export "DPI-C" function e_bit121_0d; export "DPI-C" function e_bit121_1d; export "DPI-C" function e_bit121_2d; export "DPI-C" function e_bit121_3d; + export "DPI-C" function e_bit121_1d1; + export "DPI-C" function e_bit121_2d1; + export "DPI-C" function e_bit121_3d1; export "DPI-C" function e_logic1_0d; export "DPI-C" function e_logic1_1d; export "DPI-C" function e_logic1_2d; export "DPI-C" function e_logic1_3d; + export "DPI-C" function e_logic1_1d1; + export "DPI-C" function e_logic1_2d1; + export "DPI-C" function e_logic1_3d1; export "DPI-C" function e_logic7_0d; export "DPI-C" function e_logic7_1d; export "DPI-C" function e_logic7_2d; export "DPI-C" function e_logic7_3d; + export "DPI-C" function e_logic7_1d1; + export "DPI-C" function e_logic7_2d1; + export "DPI-C" function e_logic7_3d1; export "DPI-C" function e_logic121_0d; export "DPI-C" function e_logic121_1d; export "DPI-C" function e_logic121_2d; export "DPI-C" function e_logic121_3d; + export "DPI-C" function e_logic121_1d1; + export "DPI-C" function e_logic121_2d1; + export "DPI-C" function e_logic121_3d1; export "DPI-C" function e_pack_struct_0d; export "DPI-C" function e_pack_struct_1d; export "DPI-C" function e_pack_struct_2d; export "DPI-C" function e_pack_struct_3d; + export "DPI-C" function e_pack_struct_1d1; + export "DPI-C" function e_pack_struct_2d1; + export "DPI-C" function e_pack_struct_3d1; `ifndef NO_UNPACK_STRUCT export "DPI-C" function e_unpack_struct_0d; export "DPI-C" function e_unpack_struct_1d; export "DPI-C" function e_unpack_struct_2d; export "DPI-C" function e_unpack_struct_3d; + export "DPI-C" function e_unpack_struct_1d1; + export "DPI-C" function e_unpack_struct_2d1; + export "DPI-C" function e_unpack_struct_3d1; `endif //====================================================================== // Definitions of exported functions @@ -386,51 +551,91 @@ module t; val[0][0][0] = 48; val[1][0][0] = 49; val[2][0][0] = 50; val[3][0][0] = 51 \ /* verilator lint_on WIDTH */ +`define SET_1D1(val) \ + /* verilator lint_off WIDTH */ \ + val[0] = 52; \ + /* verilator lint_on WIDTH */ +`define SET_2D1(val) \ + /* verilator lint_off WIDTH */ \ + val[0][0] = 53; \ + /* verilator lint_on WIDTH */ +`define SET_3D1(val) \ + /* verilator lint_off WIDTH */ \ + val[0][0][0] = 54; \ + /* verilator lint_on WIDTH */ + function void e_byte_0d(output byte val); `SET_0D(val); endfunction function void e_byte_1d(output byte val[2]); `SET_1D(val); endfunction function void e_byte_2d(output byte val[3][2]); `SET_2D(val); endfunction function void e_byte_3d(output byte_array_t val); `SET_3D(val); endfunction + function void e_byte_1d1(output byte val[1]); `SET_1D1(val); endfunction + function void e_byte_2d1(output byte val[1][1]); `SET_2D1(val); endfunction + function void e_byte_3d1(output byte_array1_t val); `SET_3D1(val); endfunction function void e_byte_unsigned_0d(output byte unsigned val); `SET_0D(val); endfunction function void e_byte_unsigned_1d(output byte unsigned val[2]); `SET_1D(val); endfunction function void e_byte_unsigned_2d(output byte unsigned val[3][2]); `SET_2D(val); endfunction function void e_byte_unsigned_3d(output byte_unsigned_array_t val); `SET_3D(val); endfunction + function void e_byte_unsigned_1d1(output byte unsigned val[1]); `SET_1D1(val); endfunction + function void e_byte_unsigned_2d1(output byte unsigned val[1][1]); `SET_2D1(val); endfunction + function void e_byte_unsigned_3d1(output byte_unsigned_array1_t val); `SET_3D1(val); endfunction function void e_shortint_0d(output shortint val); `SET_0D(val); endfunction function void e_shortint_1d(output shortint val[2]); `SET_1D(val); endfunction function void e_shortint_2d(output shortint val[3][2]); `SET_2D(val); endfunction function void e_shortint_3d(output shortint_array_t val); `SET_3D(val); endfunction + function void e_shortint_1d1(output shortint val[1]); `SET_1D1(val); endfunction + function void e_shortint_2d1(output shortint val[1][1]); `SET_2D1(val); endfunction + function void e_shortint_3d1(output shortint_array1_t val); `SET_3D1(val); endfunction function void e_shortint_unsigned_0d(output shortint unsigned val); `SET_0D(val); endfunction function void e_shortint_unsigned_1d(output shortint unsigned val[2]); `SET_1D(val); endfunction function void e_shortint_unsigned_2d(output shortint unsigned val[3][2]); `SET_2D(val); endfunction function void e_shortint_unsigned_3d(output shortint_unsigned_array_t val); `SET_3D(val); endfunction + function void e_shortint_unsigned_1d1(output shortint unsigned val[1]); `SET_1D1(val); endfunction + function void e_shortint_unsigned_2d1(output shortint unsigned val[1][1]); `SET_2D1(val); endfunction + function void e_shortint_unsigned_3d1(output shortint_unsigned_array1_t val); `SET_3D1(val); endfunction function void e_int_0d(output int val); `SET_0D(val); endfunction function void e_int_1d(output int val[2]); `SET_1D(val); endfunction function void e_int_2d(output int val[3][2]); `SET_2D(val); endfunction function void e_int_3d(output int_array_t val); `SET_3D(val); endfunction + function void e_int_1d1(output int val[1]); `SET_1D1(val); endfunction + function void e_int_2d1(output int val[1][1]); `SET_2D1(val); endfunction + function void e_int_3d1(output int_array1_t val); `SET_3D1(val); endfunction function void e_int_unsigned_0d(output int unsigned val); `SET_0D(val); endfunction function void e_int_unsigned_1d(output int unsigned val[2]); `SET_1D(val); endfunction function void e_int_unsigned_2d(output int unsigned val[3][2]); `SET_2D(val); endfunction function void e_int_unsigned_3d(output int_unsigned_array_t val); `SET_3D(val); endfunction + function void e_int_unsigned_1d1(output int unsigned val[1]); `SET_1D1(val); endfunction + function void e_int_unsigned_2d1(output int unsigned val[1][1]); `SET_2D1(val); endfunction + function void e_int_unsigned_3d1(output int_unsigned_array1_t val); `SET_3D1(val); endfunction function void e_longint_0d(output longint val); `SET_0D(val); endfunction function void e_longint_1d(output longint val[2]); `SET_1D(val); endfunction function void e_longint_2d(output longint val[3][2]); `SET_2D(val); endfunction function void e_longint_3d(output longint_array_t val); `SET_3D(val); endfunction + function void e_longint_1d1(output longint val[1]); `SET_1D1(val); endfunction + function void e_longint_2d1(output longint val[1][1]); `SET_2D1(val); endfunction + function void e_longint_3d1(output longint_array1_t val); `SET_3D1(val); endfunction function void e_longint_unsigned_0d(output longint unsigned val); `SET_0D(val); endfunction function void e_longint_unsigned_1d(output longint unsigned val[2]); `SET_1D(val); endfunction function void e_longint_unsigned_2d(output longint unsigned val[3][2]); `SET_2D(val); endfunction function void e_longint_unsigned_3d(output longint_unsigned_array_t val); `SET_3D(val); endfunction + function void e_longint_unsigned_1d1(output longint unsigned val[1]); `SET_1D1(val); endfunction + function void e_longint_unsigned_2d1(output longint unsigned val[1][1]); `SET_2D1(val); endfunction + function void e_longint_unsigned_3d1(output longint_unsigned_array1_t val); `SET_3D1(val); endfunction `ifndef NO_TIME function void e_time_0d(output time val); `SET_0D(val); endfunction function void e_time_1d(output time val[2]); `SET_1D(val); endfunction function void e_time_2d(output time val[3][2]); `SET_2D(val); endfunction function void e_time_3d(output time_array_t val); `SET_3D(val); endfunction + function void e_time_1d1(output time val[1]); `SET_1D1(val); endfunction + function void e_time_2d1(output time val[1][1]); `SET_2D1(val); endfunction + function void e_time_3d1(output time_array1_t val); `SET_3D1(val); endfunction `endif `ifndef NO_INTEGER @@ -438,18 +643,27 @@ module t; function void e_integer_1d(output integer val[2]); `SET_1D(val); endfunction function void e_integer_2d(output integer val[3][2]); `SET_2D(val); endfunction function void e_integer_3d(output integer_array_t val); `SET_3D(val); endfunction + function void e_integer_1d1(output integer val[1]); `SET_1D1(val); endfunction + function void e_integer_2d1(output integer val[1][1]); `SET_2D1(val); endfunction + function void e_integer_3d1(output integer_array1_t val); `SET_3D1(val); endfunction `endif function void e_real_0d(output real val); `SET_0D(val); endfunction function void e_real_1d(output real val[2]); `SET_1D(val); endfunction function void e_real_2d(output real val[3][2]); `SET_2D(val); endfunction function void e_real_3d(output real_array_t val); `SET_3D(val); endfunction + function void e_real_1d1(output real val[1]); `SET_1D1(val); endfunction + function void e_real_2d1(output real val[1][1]); `SET_2D1(val); endfunction + function void e_real_3d1(output real_array1_t val); `SET_3D1(val); endfunction `ifndef NO_SHORTREAL function void e_shortreal_0d(output shortreal val); `SET_0D(val); endfunction function void e_shortreal_1d(output shortreal val[2]); `SET_1D(val); endfunction function void e_shortreal_2d(output shortreal val[3][2]); `SET_2D(val); endfunction function void e_shortreal_3d(output shortreal_array_t val); `SET_3D(val); endfunction + function void e_shortreal_1d1(output shortreal val[1]); `SET_1D1(val); endfunction + function void e_shortreal_2d1(output shortreal val[1][1]); `SET_2D1(val); endfunction + function void e_shortreal_3d1(output shortreal_array1_t val); `SET_3D1(val); endfunction `endif function void e_chandle_0d(output chandle val); @@ -470,6 +684,15 @@ module t; val[2][0][0] = get_non_null(); val[3][0][0] = get_non_null(); endfunction + function void e_chandle_1d1(output chandle val[1]); + val[0] = get_non_null(); + endfunction + function void e_chandle_2d1(output chandle val[1][1]); + val[0][0] = get_non_null(); + endfunction + function void e_chandle_3d1(output chandle_array1_t val); + val[0][0][0] = get_non_null(); + endfunction function void e_string_0d(output string val); val = "42"; @@ -489,41 +712,71 @@ module t; val[2][0][0] = "50"; val[3][0][0] = "51"; endfunction + function void e_string_1d1(output string val[1]); + val[0] = "52"; + endfunction + function void e_string_2d1(output string val[1][1]); + val[0][0] = "53"; + endfunction + function void e_string_3d1(output string_array1_t val); + val[0][0][0] = "54"; + endfunction function void e_bit1_0d(output bit val); `SET_0D(val); endfunction function void e_bit1_1d(output bit val[2]); `SET_1D(val); endfunction function void e_bit1_2d(output bit val[3][2]); `SET_2D(val); endfunction - function void e_bit1_3d(output bit7_array_t val); `SET_3D(val); endfunction + function void e_bit1_3d(output bit1_array_t val); `SET_3D(val); endfunction + function void e_bit1_1d1(output bit val[1]); `SET_1D1(val); endfunction + function void e_bit1_2d1(output bit val[1][1]); `SET_2D1(val); endfunction + function void e_bit1_3d1(output bit1_array1_t val); `SET_3D1(val); endfunction function void e_bit7_0d(output bit[6:0] val); `SET_0D(val); endfunction function void e_bit7_1d(output bit[6:0] val[2]); `SET_1D(val); endfunction function void e_bit7_2d(output bit[6:0] val[3][2]); `SET_2D(val); endfunction function void e_bit7_3d(output bit7_array_t val); `SET_3D(val); endfunction + function void e_bit7_1d1(output bit[6:0] val[1]); `SET_1D1(val); endfunction + function void e_bit7_2d1(output bit[6:0] val[1][1]); `SET_2D1(val); endfunction + function void e_bit7_3d1(output bit7_array1_t val); `SET_3D1(val); endfunction function void e_bit121_0d(output bit[120:0] val); `SET_0D(val); endfunction function void e_bit121_1d(output bit[120:0] val[2]); `SET_1D(val); endfunction function void e_bit121_2d(output bit[120:0] val[3][2]); `SET_2D(val); endfunction function void e_bit121_3d(output bit121_array_t val); `SET_3D(val); endfunction + function void e_bit121_1d1(output bit[120:0] val[1]); `SET_1D1(val); endfunction + function void e_bit121_2d1(output bit[120:0] val[1][1]); `SET_2D1(val); endfunction + function void e_bit121_3d1(output bit121_array1_t val); `SET_3D1(val); endfunction function void e_logic1_0d(output logic val); `SET_0D(val); endfunction function void e_logic1_1d(output logic val[2]); `SET_1D(val); endfunction function void e_logic1_2d(output logic val[3][2]); `SET_2D(val); endfunction - function void e_logic1_3d(output logic7_array_t val); `SET_3D(val); endfunction + function void e_logic1_3d(output logic1_array_t val); `SET_3D(val); endfunction + function void e_logic1_1d1(output logic val[1]); `SET_1D1(val); endfunction + function void e_logic1_2d1(output logic val[1][1]); `SET_2D1(val); endfunction + function void e_logic1_3d1(output logic1_array1_t val); `SET_3D1(val); endfunction function void e_logic7_0d(output logic[6:0] val); `SET_0D(val); endfunction function void e_logic7_1d(output logic[6:0] val[2]); `SET_1D(val); endfunction function void e_logic7_2d(output logic[6:0] val[3][2]); `SET_2D(val); endfunction function void e_logic7_3d(output logic7_array_t val); `SET_3D(val); endfunction + function void e_logic7_1d1(output logic[6:0] val[1]); `SET_1D1(val); endfunction + function void e_logic7_2d1(output logic[6:0] val[1][1]); `SET_2D1(val); endfunction + function void e_logic7_3d1(output logic7_array1_t val); `SET_3D1(val); endfunction function void e_logic121_0d(output logic[120:0] val); `SET_0D(val); endfunction function void e_logic121_1d(output logic[120:0] val[2]); `SET_1D(val); endfunction function void e_logic121_2d(output logic[120:0] val[3][2]); `SET_2D(val); endfunction function void e_logic121_3d(output logic121_array_t val); `SET_3D(val); endfunction + function void e_logic121_1d1(output logic[120:0] val[1]); `SET_1D1(val); endfunction + function void e_logic121_2d1(output logic[120:0] val[1][1]); `SET_2D1(val); endfunction + function void e_logic121_3d1(output logic121_array1_t val); `SET_3D1(val); endfunction function void e_pack_struct_0d(output pack_struct_t val); `SET_0D(val); endfunction function void e_pack_struct_1d(output pack_struct_t val[2]); `SET_1D(val); endfunction function void e_pack_struct_2d(output pack_struct_t val[3][2]); `SET_2D(val); endfunction function void e_pack_struct_3d(output pack_struct_array_t val); `SET_3D(val); endfunction + function void e_pack_struct_1d1(output pack_struct_t val[1]); `SET_1D1(val); endfunction + function void e_pack_struct_2d1(output pack_struct_t val[1][1]); `SET_2D1(val); endfunction + function void e_pack_struct_3d1(output pack_struct_array1_t val); `SET_3D1(val); endfunction `ifndef NO_UNPACK_STRUCT function void e_unpack_struct_0d(output unpack_struct_t val); @@ -544,6 +797,15 @@ module t; val[2][0][0].val = 50; val[3][0][0].val = 51; endfunction + function void e_unpack_struct_1d1(output unpack_struct_t val[1]); + val[0].val = 52; + endfunction + function void e_unpack_struct_2d1(output unpack_struct_t val[1][1]); + val[0][0].val = 53; + endfunction + function void e_unpack_struct_3d1(output unpack_struct_array1_t val); + val[0][0][0].val = 54; + endfunction `endif //====================================================================== @@ -554,34 +816,56 @@ module t; initial begin byte_array_t byte_array; + byte_array1_t byte_array1; byte_unsigned_array_t byte_unsigned_array; + byte_unsigned_array1_t byte_unsigned_array1; shortint_array_t shortint_array; + shortint_array1_t shortint_array1; shortint_unsigned_array_t shortint_unsigned_array; + shortint_unsigned_array1_t shortint_unsigned_array1; int_array_t int_array; + int_array1_t int_array1; int_unsigned_array_t int_unsigned_array; + int_unsigned_array1_t int_unsigned_array1; longint_array_t longint_array; + longint_array1_t longint_array1; longint_unsigned_array_t longint_unsigned_array; + longint_unsigned_array1_t longint_unsigned_array1; `ifndef NO_TIME time_array_t time_array; + time_array1_t time_array1; `endif `ifndef NO_INTEGER integer_array_t integer_array; + integer_array1_t integer_array1; `endif real_array_t real_array; + real_array1_t real_array1; `ifndef NO_SHORTREAL shortreal_array_t shortreal_array; + shortreal_array1_t shortreal_array1; `endif chandle_array_t chandle_array; + chandle_array1_t chandle_array1; string_array_t string_array; + string_array1_t string_array1; bit1_array_t bit1_array; + bit1_array1_t bit1_array1; bit7_array_t bit7_array; + bit7_array1_t bit7_array1; bit121_array_t bit121_array; + bit121_array1_t bit121_array1; logic1_array_t logic1_array; + logic1_array1_t logic1_array1; logic7_array_t logic7_array; + logic7_array1_t logic7_array1; logic121_array_t logic121_array; + logic121_array1_t logic121_array1; pack_struct_array_t pack_struct_array; + pack_struct_array1_t pack_struct_array1; `ifndef NO_UNPACK_STRUCT unpack_struct_array_t unpack_struct_array; + unpack_struct_array1_t unpack_struct_array1; `endif i_byte_0d(byte_array[3][2][1]); @@ -593,6 +877,13 @@ module t; i_byte_3d(byte_array); `CHECK_3D(byte_array); + i_byte_1d1(byte_array1[0][0]); + `CHECK_1D1(byte_array1[0][0]); + i_byte_2d1(byte_array1[0]); + `CHECK_2D1(byte_array1[0]); + i_byte_3d1(byte_array1); + `CHECK_3D1(byte_array1); + i_byte_unsigned_0d(byte_unsigned_array[3][2][1]); `CHECK_0D(byte_unsigned_array[3][2][1]); i_byte_unsigned_1d(byte_unsigned_array[2][1]); @@ -602,6 +893,13 @@ module t; i_byte_unsigned_3d(byte_unsigned_array); `CHECK_3D(byte_unsigned_array); + i_byte_unsigned_1d1(byte_unsigned_array1[0][0]); + `CHECK_1D1(byte_unsigned_array1[0][0]); + i_byte_unsigned_2d1(byte_unsigned_array1[0]); + `CHECK_2D1(byte_unsigned_array1[0]); + i_byte_unsigned_3d1(byte_unsigned_array1); + `CHECK_3D1(byte_unsigned_array1); + i_shortint_0d(shortint_array[3][2][1]); `CHECK_0D(shortint_array[3][2][1]); i_shortint_1d(shortint_array[2][1]); @@ -611,6 +909,13 @@ module t; i_shortint_3d(shortint_array); `CHECK_3D(shortint_array); + i_shortint_1d1(shortint_array1[0][0]); + `CHECK_1D1(shortint_array1[0][0]); + i_shortint_2d1(shortint_array1[0]); + `CHECK_2D1(shortint_array1[0]); + i_shortint_3d1(shortint_array1); + `CHECK_3D1(shortint_array1); + i_shortint_unsigned_0d(shortint_unsigned_array[3][2][1]); `CHECK_0D(shortint_unsigned_array[3][2][1]); i_shortint_unsigned_1d(shortint_unsigned_array[2][1]); @@ -620,6 +925,13 @@ module t; i_shortint_unsigned_3d(shortint_unsigned_array); `CHECK_3D(shortint_unsigned_array); + i_shortint_unsigned_1d1(shortint_unsigned_array1[0][0]); + `CHECK_1D1(shortint_unsigned_array1[0][0]); + i_shortint_unsigned_2d1(shortint_unsigned_array1[0]); + `CHECK_2D1(shortint_unsigned_array1[0]); + i_shortint_unsigned_3d1(shortint_unsigned_array1); + `CHECK_3D1(shortint_unsigned_array1); + i_int_0d(int_array[3][2][1]); `CHECK_0D(int_array[3][2][1]); i_int_1d(int_array[2][1]); @@ -629,6 +941,13 @@ module t; i_int_3d(int_array); `CHECK_3D(int_array); + i_int_1d1(int_array1[0][0]); + `CHECK_1D1(int_array1[0][0]); + i_int_2d1(int_array1[0]); + `CHECK_2D1(int_array1[0]); + i_int_3d1(int_array1); + `CHECK_3D1(int_array1); + i_int_unsigned_0d(int_unsigned_array[3][2][1]); `CHECK_0D(int_unsigned_array[3][2][1]); i_int_unsigned_1d(int_unsigned_array[2][1]); @@ -638,6 +957,13 @@ module t; i_int_unsigned_3d(int_unsigned_array); `CHECK_3D(int_unsigned_array); + i_int_unsigned_1d1(int_unsigned_array1[0][0]); + `CHECK_1D1(int_unsigned_array1[0][0]); + i_int_unsigned_2d1(int_unsigned_array1[0]); + `CHECK_2D1(int_unsigned_array1[0]); + i_int_unsigned_3d1(int_unsigned_array1); + `CHECK_3D1(int_unsigned_array1); + i_longint_0d(longint_array[3][2][1]); `CHECK_0D(longint_array[3][2][1]); i_longint_1d(longint_array[2][1]); @@ -647,6 +973,13 @@ module t; i_longint_3d(longint_array); `CHECK_3D(longint_array); + i_longint_1d1(longint_array1[0][0]); + `CHECK_1D1(longint_array1[0][0]); + i_longint_2d1(longint_array1[0]); + `CHECK_2D1(longint_array1[0]); + i_longint_3d1(longint_array1); + `CHECK_3D1(longint_array1); + i_longint_unsigned_0d(longint_unsigned_array[3][2][1]); `CHECK_0D(longint_unsigned_array[3][2][1]); i_longint_unsigned_1d(longint_unsigned_array[2][1]); @@ -656,6 +989,13 @@ module t; i_longint_unsigned_3d(longint_unsigned_array); `CHECK_3D(longint_unsigned_array); + i_longint_unsigned_1d1(longint_unsigned_array1[0][0]); + `CHECK_1D1(longint_unsigned_array1[0][0]); + i_longint_unsigned_2d1(longint_unsigned_array1[0]); + `CHECK_2D1(longint_unsigned_array1[0]); + i_longint_unsigned_3d1(longint_unsigned_array1); + `CHECK_3D1(longint_unsigned_array1); + `ifndef NO_TIME i_time_0d(time_array[3][2][1]); `CHECK_0D(time_array[3][2][1]); @@ -665,6 +1005,13 @@ module t; `CHECK_2D(time_array[1]); i_time_3d(time_array); `CHECK_3D(time_array); + + i_time_1d1(time_array1[0][0]); + `CHECK_1D1(time_array1[0][0]); + i_time_2d1(time_array1[0]); + `CHECK_2D1(time_array1[0]); + i_time_3d1(time_array1); + `CHECK_3D1(time_array1); `endif `ifndef NO_INTEGER @@ -676,6 +1023,13 @@ module t; `CHECK_2D(integer_array[1]); i_integer_3d(integer_array); `CHECK_3D(integer_array); + + i_integer_1d1(integer_array1[0][0]); + `CHECK_1D1(integer_array1[0][0]); + i_integer_2d1(integer_array1[0]); + `CHECK_2D1(integer_array1[0]); + i_integer_3d1(integer_array1); + `CHECK_3D1(integer_array1); `endif i_real_0d(real_array[3][2][1]); @@ -687,6 +1041,13 @@ module t; i_real_3d(real_array); `CHECK_3D(real_array); + i_real_1d1(real_array1[0][0]); + `CHECK_1D1(real_array1[0][0]); + i_real_2d1(real_array1[0]); + `CHECK_2D1(real_array1[0]); + i_real_3d1(real_array1); + `CHECK_3D1(real_array1); + `ifndef NO_SHORTREAL i_shortreal_0d(shortreal_array[3][2][1]); `CHECK_0D(shortreal_array[3][2][1]); @@ -696,6 +1057,13 @@ module t; `CHECK_2D(shortreal_array[1]); i_shortreal_3d(shortreal_array); `CHECK_3D(shortreal_array); + + i_shortreal_1d1(shortreal_array1[0][0]); + `CHECK_1D1(shortreal_array1[0][0]); + i_shortreal_2d1(shortreal_array1[0]); + `CHECK_2D1(shortreal_array1[0]); + i_shortreal_3d1(shortreal_array1); + `CHECK_3D1(shortreal_array1); `endif for (int i = 0; i < 4; ++i) @@ -717,6 +1085,13 @@ module t; `CHECK_CHANDLE_VAL(chandle_array[2][0][0], get_non_null()); `CHECK_CHANDLE_VAL(chandle_array[3][0][0], get_non_null()); + i_chandle_1d1(chandle_array1[0][0]); + `CHECK_CHANDLE_VAL(chandle_array1[0][0][0], get_non_null()); + i_chandle_2d1(chandle_array1[0]); + `CHECK_CHANDLE_VAL(chandle_array1[0][0][0], get_non_null()); + i_chandle_3d1(chandle_array1); + `CHECK_CHANDLE_VAL(chandle_array1[0][0][0], get_non_null()); + i_string_0d(string_array[3][2][1]); `CHECK_STRING_VAL(string_array[3][2][1], "42"); i_string_1d(string_array[2][1]); @@ -732,6 +1107,13 @@ module t; `CHECK_STRING_VAL(string_array[2][0][0], "50"); `CHECK_STRING_VAL(string_array[3][0][0], "51"); + i_string_1d1(string_array1[0][0]); + `CHECK_STRING_VAL(string_array1[0][0][0], "52"); + i_string_2d1(string_array1[0]); + `CHECK_STRING_VAL(string_array1[0][0][0], "53"); + i_string_3d1(string_array1); + `CHECK_STRING_VAL(string_array1[0][0][0], "54"); + i_bit1_0d(bit1_array[3][2][1]); `CHECK_0D(bit1_array[3][2][1]); i_bit1_1d(bit1_array[2][1]); @@ -741,6 +1123,13 @@ module t; i_bit1_3d(bit1_array); `CHECK_3D(bit1_array); + i_bit1_1d1(bit1_array1[0][0]); + `CHECK_1D1(bit1_array1[0][0]); + i_bit1_2d1(bit1_array1[0]); + `CHECK_2D1(bit1_array1[0]); + i_bit1_3d1(bit1_array1); + `CHECK_3D1(bit1_array1); + i_bit7_0d(bit7_array[3][2][1]); `CHECK_0D(bit7_array[3][2][1]); i_bit7_1d(bit7_array[2][1]); @@ -750,6 +1139,13 @@ module t; i_bit7_3d(bit7_array); `CHECK_3D(bit7_array); + i_bit7_1d1(bit7_array1[0][0]); + `CHECK_1D1(bit7_array1[0][0]); + i_bit7_2d1(bit7_array1[0]); + `CHECK_2D1(bit7_array1[0]); + i_bit7_3d1(bit7_array1); + `CHECK_3D1(bit7_array1); + i_bit121_0d(bit121_array[3][2][1]); `CHECK_0D(bit121_array[3][2][1]); i_bit121_1d(bit121_array[2][1]); @@ -759,6 +1155,13 @@ module t; i_bit121_3d(bit121_array); `CHECK_3D(bit121_array); + i_bit121_1d1(bit121_array1[0][0]); + `CHECK_1D1(bit121_array1[0][0]); + i_bit121_2d1(bit121_array1[0]); + `CHECK_2D1(bit121_array1[0]); + i_bit121_3d1(bit121_array1); + `CHECK_3D1(bit121_array1); + i_logic1_0d(logic1_array[3][2][1]); `CHECK_0D(logic1_array[3][2][1]); i_logic1_1d(logic1_array[2][1]); @@ -768,6 +1171,13 @@ module t; i_logic1_3d(logic1_array); `CHECK_3D(logic1_array); + i_logic1_1d1(logic1_array1[0][0]); + `CHECK_1D1(logic1_array1[0][0]); + i_logic1_2d1(logic1_array1[0]); + `CHECK_2D1(logic1_array1[0]); + i_logic1_3d1(logic1_array1); + `CHECK_3D1(logic1_array1); + i_logic7_0d(logic7_array[3][2][1]); `CHECK_0D(logic7_array[3][2][1]); i_logic7_1d(logic7_array[2][1]); @@ -777,6 +1187,13 @@ module t; i_logic7_3d(logic7_array); `CHECK_3D(logic7_array); + i_logic7_1d1(logic7_array1[0][0]); + `CHECK_1D1(logic7_array1[0][0]); + i_logic7_2d1(logic7_array1[0]); + `CHECK_2D1(logic7_array1[0]); + i_logic7_3d1(logic7_array1); + `CHECK_3D1(logic7_array1); + i_logic121_0d(logic121_array[3][2][1]); `CHECK_0D(logic121_array[3][2][1]); i_logic121_1d(logic121_array[2][1]); @@ -786,6 +1203,13 @@ module t; i_logic121_3d(logic121_array); `CHECK_3D(logic121_array); + i_logic121_1d1(logic121_array1[0][0]); + `CHECK_1D1(logic121_array1[0][0]); + i_logic121_2d1(logic121_array1[0]); + `CHECK_2D1(logic121_array1[0]); + i_logic121_3d1(logic121_array1); + `CHECK_3D1(logic121_array1); + i_pack_struct_0d(pack_struct_array[3][2][1]); `CHECK_0D(pack_struct_array[3][2][1]); i_pack_struct_1d(pack_struct_array[2][1]); @@ -795,6 +1219,13 @@ module t; i_pack_struct_3d(pack_struct_array); `CHECK_3D(pack_struct_array); + i_pack_struct_1d1(pack_struct_array1[0][0]); + `CHECK_1D1(pack_struct_array1[0][0]); + i_pack_struct_2d1(pack_struct_array1[0]); + `CHECK_2D1(pack_struct_array1[0]); + i_pack_struct_3d1(pack_struct_array1); + `CHECK_3D1(pack_struct_array1); + `SET_VALUES(pack_struct_array); i_pack_struct_0d(pack_struct_array[3][2][1]); i_pack_struct_1d(pack_struct_array[2][1]); @@ -819,6 +1250,13 @@ module t; `CHECK_VAL(unpack_struct_array[1][0][0].val, 49); `CHECK_VAL(unpack_struct_array[2][0][0].val, 50); `CHECK_VAL(unpack_struct_array[3][0][0].val, 51); + + i_unpack_struct_1d1(unpack_struct_array1[0][0]); + `CHECK_VAL(unpack_struct_array1[0][0][0].val, 52); + i_unpack_struct_2d1(unpack_struct_array1[0]); + `CHECK_VAL(unpack_struct_array1[0][0][0].val, 53); + i_unpack_struct_3d1(unpack_struct_array1); + `CHECK_VAL(unpack_struct_array1[0][0][0].val, 54); `endif check_exports(); diff --git a/test_regress/t/t_dpi_arg_output_unpack__Dpi.out b/test_regress/t/t_dpi_arg_output_unpack__Dpi.out index 623bdc509..cb0134deb 100644 --- a/test_regress/t/t_dpi_arg_output_unpack__Dpi.out +++ b/test_regress/t/t_dpi_arg_output_unpack__Dpi.out @@ -18,168 +18,288 @@ extern "C" { // DPI EXPORTS extern void e_bit121_0d(svBitVecVal* val); extern void e_bit121_1d(svBitVecVal* val); +extern void e_bit121_1d1(svBitVecVal* val); extern void e_bit121_2d(svBitVecVal* val); +extern void e_bit121_2d1(svBitVecVal* val); extern void e_bit121_3d(svBitVecVal* val); +extern void e_bit121_3d1(svBitVecVal* val); extern void e_bit1_0d(svBit* val); extern void e_bit1_1d(svBit* val); +extern void e_bit1_1d1(svBit* val); extern void e_bit1_2d(svBit* val); -extern void e_bit1_3d(svBitVecVal* val); +extern void e_bit1_2d1(svBit* val); +extern void e_bit1_3d(svBit* val); +extern void e_bit1_3d1(svBit* val); extern void e_bit7_0d(svBitVecVal* val); extern void e_bit7_1d(svBitVecVal* val); +extern void e_bit7_1d1(svBitVecVal* val); extern void e_bit7_2d(svBitVecVal* val); +extern void e_bit7_2d1(svBitVecVal* val); extern void e_bit7_3d(svBitVecVal* val); +extern void e_bit7_3d1(svBitVecVal* val); extern void e_byte_0d(char* val); extern void e_byte_1d(char* val); +extern void e_byte_1d1(char* val); extern void e_byte_2d(char* val); +extern void e_byte_2d1(char* val); extern void e_byte_3d(char* val); +extern void e_byte_3d1(char* val); extern void e_byte_unsigned_0d(unsigned char* val); extern void e_byte_unsigned_1d(unsigned char* val); +extern void e_byte_unsigned_1d1(unsigned char* val); extern void e_byte_unsigned_2d(unsigned char* val); +extern void e_byte_unsigned_2d1(unsigned char* val); extern void e_byte_unsigned_3d(unsigned char* val); +extern void e_byte_unsigned_3d1(unsigned char* val); extern void e_chandle_0d(void** val); extern void e_chandle_1d(void** val); +extern void e_chandle_1d1(void** val); extern void e_chandle_2d(void** val); +extern void e_chandle_2d1(void** val); extern void e_chandle_3d(void** val); +extern void e_chandle_3d1(void** val); extern void e_int_0d(int* val); extern void e_int_1d(int* val); +extern void e_int_1d1(int* val); extern void e_int_2d(int* val); +extern void e_int_2d1(int* val); extern void e_int_3d(int* val); +extern void e_int_3d1(int* val); extern void e_int_unsigned_0d(unsigned int* val); extern void e_int_unsigned_1d(unsigned int* val); +extern void e_int_unsigned_1d1(unsigned int* val); extern void e_int_unsigned_2d(unsigned int* val); +extern void e_int_unsigned_2d1(unsigned int* val); extern void e_int_unsigned_3d(unsigned int* val); +extern void e_int_unsigned_3d1(unsigned int* val); extern void e_integer_0d(svLogicVecVal* val); extern void e_integer_1d(svLogicVecVal* val); +extern void e_integer_1d1(svLogicVecVal* val); extern void e_integer_2d(svLogicVecVal* val); +extern void e_integer_2d1(svLogicVecVal* val); extern void e_integer_3d(svLogicVecVal* val); +extern void e_integer_3d1(svLogicVecVal* val); extern void e_logic121_0d(svLogicVecVal* val); extern void e_logic121_1d(svLogicVecVal* val); +extern void e_logic121_1d1(svLogicVecVal* val); extern void e_logic121_2d(svLogicVecVal* val); +extern void e_logic121_2d1(svLogicVecVal* val); extern void e_logic121_3d(svLogicVecVal* val); +extern void e_logic121_3d1(svLogicVecVal* val); extern void e_logic1_0d(svLogic* val); extern void e_logic1_1d(svLogic* val); +extern void e_logic1_1d1(svLogic* val); extern void e_logic1_2d(svLogic* val); -extern void e_logic1_3d(svLogicVecVal* val); +extern void e_logic1_2d1(svLogic* val); +extern void e_logic1_3d(svLogic* val); +extern void e_logic1_3d1(svLogic* val); extern void e_logic7_0d(svLogicVecVal* val); extern void e_logic7_1d(svLogicVecVal* val); +extern void e_logic7_1d1(svLogicVecVal* val); extern void e_logic7_2d(svLogicVecVal* val); +extern void e_logic7_2d1(svLogicVecVal* val); extern void e_logic7_3d(svLogicVecVal* val); +extern void e_logic7_3d1(svLogicVecVal* val); extern void e_longint_0d(long long* val); extern void e_longint_1d(long long* val); +extern void e_longint_1d1(long long* val); extern void e_longint_2d(long long* val); +extern void e_longint_2d1(long long* val); extern void e_longint_3d(long long* val); +extern void e_longint_3d1(long long* val); extern void e_longint_unsigned_0d(unsigned long long* val); extern void e_longint_unsigned_1d(unsigned long long* val); +extern void e_longint_unsigned_1d1(unsigned long long* val); extern void e_longint_unsigned_2d(unsigned long long* val); +extern void e_longint_unsigned_2d1(unsigned long long* val); extern void e_longint_unsigned_3d(unsigned long long* val); +extern void e_longint_unsigned_3d1(unsigned long long* val); extern void e_pack_struct_0d(svLogicVecVal* val); extern void e_pack_struct_1d(svLogicVecVal* val); +extern void e_pack_struct_1d1(svLogicVecVal* val); extern void e_pack_struct_2d(svLogicVecVal* val); +extern void e_pack_struct_2d1(svLogicVecVal* val); extern void e_pack_struct_3d(svLogicVecVal* val); +extern void e_pack_struct_3d1(svLogicVecVal* val); extern void e_real_0d(double* val); extern void e_real_1d(double* val); +extern void e_real_1d1(double* val); extern void e_real_2d(double* val); +extern void e_real_2d1(double* val); extern void e_real_3d(double* val); +extern void e_real_3d1(double* val); extern void e_shortint_0d(short* val); extern void e_shortint_1d(short* val); +extern void e_shortint_1d1(short* val); extern void e_shortint_2d(short* val); +extern void e_shortint_2d1(short* val); extern void e_shortint_3d(short* val); +extern void e_shortint_3d1(short* val); extern void e_shortint_unsigned_0d(unsigned short* val); extern void e_shortint_unsigned_1d(unsigned short* val); +extern void e_shortint_unsigned_1d1(unsigned short* val); extern void e_shortint_unsigned_2d(unsigned short* val); +extern void e_shortint_unsigned_2d1(unsigned short* val); extern void e_shortint_unsigned_3d(unsigned short* val); +extern void e_shortint_unsigned_3d1(unsigned short* val); extern void e_string_0d(const char** val); extern void e_string_1d(const char** val); +extern void e_string_1d1(const char** val); extern void e_string_2d(const char** val); +extern void e_string_2d1(const char** val); extern void e_string_3d(const char** val); +extern void e_string_3d1(const char** val); extern void e_time_0d(svLogicVecVal* val); extern void e_time_1d(svLogicVecVal* val); +extern void e_time_1d1(svLogicVecVal* val); extern void e_time_2d(svLogicVecVal* val); +extern void e_time_2d1(svLogicVecVal* val); extern void e_time_3d(svLogicVecVal* val); +extern void e_time_3d1(svLogicVecVal* val); // DPI IMPORTS extern void check_exports(); extern void* get_non_null(); extern void i_bit121_0d(svBitVecVal* val); extern void i_bit121_1d(svBitVecVal* val); +extern void i_bit121_1d1(svBitVecVal* val); extern void i_bit121_2d(svBitVecVal* val); +extern void i_bit121_2d1(svBitVecVal* val); extern void i_bit121_3d(svBitVecVal* val); +extern void i_bit121_3d1(svBitVecVal* val); extern void i_bit1_0d(svBit* val); extern void i_bit1_1d(svBit* val); +extern void i_bit1_1d1(svBit* val); extern void i_bit1_2d(svBit* val); +extern void i_bit1_2d1(svBit* val); extern void i_bit1_3d(svBit* val); +extern void i_bit1_3d1(svBit* val); extern void i_bit7_0d(svBitVecVal* val); extern void i_bit7_1d(svBitVecVal* val); +extern void i_bit7_1d1(svBitVecVal* val); extern void i_bit7_2d(svBitVecVal* val); +extern void i_bit7_2d1(svBitVecVal* val); extern void i_bit7_3d(svBitVecVal* val); +extern void i_bit7_3d1(svBitVecVal* val); extern void i_byte_0d(char* val); extern void i_byte_1d(char* val); +extern void i_byte_1d1(char* val); extern void i_byte_2d(char* val); +extern void i_byte_2d1(char* val); extern void i_byte_3d(char* val); +extern void i_byte_3d1(char* val); extern void i_byte_unsigned_0d(unsigned char* val); extern void i_byte_unsigned_1d(unsigned char* val); +extern void i_byte_unsigned_1d1(unsigned char* val); extern void i_byte_unsigned_2d(unsigned char* val); +extern void i_byte_unsigned_2d1(unsigned char* val); extern void i_byte_unsigned_3d(unsigned char* val); +extern void i_byte_unsigned_3d1(unsigned char* val); extern void i_chandle_0d(void** val); extern void i_chandle_1d(void** val); +extern void i_chandle_1d1(void** val); extern void i_chandle_2d(void** val); +extern void i_chandle_2d1(void** val); extern void i_chandle_3d(void** val); +extern void i_chandle_3d1(void** val); extern void i_int_0d(int* val); extern void i_int_1d(int* val); +extern void i_int_1d1(int* val); extern void i_int_2d(int* val); +extern void i_int_2d1(int* val); extern void i_int_3d(int* val); +extern void i_int_3d1(int* val); extern void i_int_unsigned_0d(unsigned int* val); extern void i_int_unsigned_1d(unsigned int* val); +extern void i_int_unsigned_1d1(unsigned int* val); extern void i_int_unsigned_2d(unsigned int* val); +extern void i_int_unsigned_2d1(unsigned int* val); extern void i_int_unsigned_3d(unsigned int* val); +extern void i_int_unsigned_3d1(unsigned int* val); extern void i_integer_0d(svLogicVecVal* val); extern void i_integer_1d(svLogicVecVal* val); +extern void i_integer_1d1(svLogicVecVal* val); extern void i_integer_2d(svLogicVecVal* val); +extern void i_integer_2d1(svLogicVecVal* val); extern void i_integer_3d(svLogicVecVal* val); +extern void i_integer_3d1(svLogicVecVal* val); extern void i_logic121_0d(svLogicVecVal* val); extern void i_logic121_1d(svLogicVecVal* val); +extern void i_logic121_1d1(svLogicVecVal* val); extern void i_logic121_2d(svLogicVecVal* val); +extern void i_logic121_2d1(svLogicVecVal* val); extern void i_logic121_3d(svLogicVecVal* val); +extern void i_logic121_3d1(svLogicVecVal* val); extern void i_logic1_0d(svLogic* val); extern void i_logic1_1d(svLogic* val); +extern void i_logic1_1d1(svLogic* val); extern void i_logic1_2d(svLogic* val); +extern void i_logic1_2d1(svLogic* val); extern void i_logic1_3d(svLogic* val); +extern void i_logic1_3d1(svLogic* val); extern void i_logic7_0d(svLogicVecVal* val); extern void i_logic7_1d(svLogicVecVal* val); +extern void i_logic7_1d1(svLogicVecVal* val); extern void i_logic7_2d(svLogicVecVal* val); +extern void i_logic7_2d1(svLogicVecVal* val); extern void i_logic7_3d(svLogicVecVal* val); +extern void i_logic7_3d1(svLogicVecVal* val); extern void i_longint_0d(long long* val); extern void i_longint_1d(long long* val); +extern void i_longint_1d1(long long* val); extern void i_longint_2d(long long* val); +extern void i_longint_2d1(long long* val); extern void i_longint_3d(long long* val); +extern void i_longint_3d1(long long* val); extern void i_longint_unsigned_0d(unsigned long long* val); extern void i_longint_unsigned_1d(unsigned long long* val); +extern void i_longint_unsigned_1d1(unsigned long long* val); extern void i_longint_unsigned_2d(unsigned long long* val); +extern void i_longint_unsigned_2d1(unsigned long long* val); extern void i_longint_unsigned_3d(unsigned long long* val); +extern void i_longint_unsigned_3d1(unsigned long long* val); extern void i_pack_struct_0d(svLogicVecVal* val); extern void i_pack_struct_1d(svLogicVecVal* val); +extern void i_pack_struct_1d1(svLogicVecVal* val); extern void i_pack_struct_2d(svLogicVecVal* val); +extern void i_pack_struct_2d1(svLogicVecVal* val); extern void i_pack_struct_3d(svLogicVecVal* val); +extern void i_pack_struct_3d1(svLogicVecVal* val); extern void i_real_0d(double* val); extern void i_real_1d(double* val); +extern void i_real_1d1(double* val); extern void i_real_2d(double* val); +extern void i_real_2d1(double* val); extern void i_real_3d(double* val); +extern void i_real_3d1(double* val); extern void i_shortint_0d(short* val); extern void i_shortint_1d(short* val); +extern void i_shortint_1d1(short* val); extern void i_shortint_2d(short* val); +extern void i_shortint_2d1(short* val); extern void i_shortint_3d(short* val); +extern void i_shortint_3d1(short* val); extern void i_shortint_unsigned_0d(unsigned short* val); extern void i_shortint_unsigned_1d(unsigned short* val); +extern void i_shortint_unsigned_1d1(unsigned short* val); extern void i_shortint_unsigned_2d(unsigned short* val); +extern void i_shortint_unsigned_2d1(unsigned short* val); extern void i_shortint_unsigned_3d(unsigned short* val); +extern void i_shortint_unsigned_3d1(unsigned short* val); extern void i_string_0d(const char** val); extern void i_string_1d(const char** val); +extern void i_string_1d1(const char** val); extern void i_string_2d(const char** val); +extern void i_string_2d1(const char** val); extern void i_string_3d(const char** val); +extern void i_string_3d1(const char** val); extern void i_time_0d(svLogicVecVal* val); extern void i_time_1d(svLogicVecVal* val); +extern void i_time_1d1(svLogicVecVal* val); extern void i_time_2d(svLogicVecVal* val); +extern void i_time_2d1(svLogicVecVal* val); extern void i_time_3d(svLogicVecVal* val); +extern void i_time_3d1(svLogicVecVal* val); #ifdef __cplusplus }