Fix missing quotes on VPI error signal names
This commit is contained in:
parent
e826a47ad6
commit
8d109e85d0
|
|
@ -2837,7 +2837,7 @@ bool vl_check_format(const VerilatedVpioVarBase* vop, const p_vpi_value valuep,
|
|||
} else {
|
||||
status = false;
|
||||
}
|
||||
VL_VPI_ERROR_(__FILE__, __LINE__, "%s: Unsupported format (%s) for %s", __func__,
|
||||
VL_VPI_ERROR_(__FILE__, __LINE__, "%s: Unsupported format (%s) for '%s'", __func__,
|
||||
VerilatedVpiError::strFromVpiVal(valuep->format), vop->fullname());
|
||||
return status;
|
||||
}
|
||||
|
|
@ -3201,8 +3201,8 @@ void vl_vpi_get_value(const VerilatedVpioVarBase* vop, p_vpi_value valuep) {
|
|||
} else if (valuep->format == vpiSuppressVal) {
|
||||
return;
|
||||
}
|
||||
VL_VPI_ERROR_(__FILE__, __LINE__, "%s: Unsupported format (%s) as requested for %s", __func__,
|
||||
VerilatedVpiError::strFromVpiVal(valuep->format), vop->fullname());
|
||||
VL_VPI_ERROR_(__FILE__, __LINE__, "%s: Unsupported format (%s) as requested for '%s'",
|
||||
__func__, VerilatedVpiError::strFromVpiVal(valuep->format), vop->fullname());
|
||||
}
|
||||
|
||||
void vpi_get_value(vpiHandle object, p_vpi_value valuep) {
|
||||
|
|
@ -3222,7 +3222,7 @@ void vpi_get_value(vpiHandle object, p_vpi_value valuep) {
|
|||
valuep->value.integer = vop->num();
|
||||
return;
|
||||
}
|
||||
VL_VPI_ERROR_(__FILE__, __LINE__, "%s: Unsupported format (%s) for %s", __func__,
|
||||
VL_VPI_ERROR_(__FILE__, __LINE__, "%s: Unsupported format (%s) for '%s'", __func__,
|
||||
VerilatedVpiError::strFromVpiVal(valuep->format), vop->fullname());
|
||||
return;
|
||||
}
|
||||
|
|
@ -3413,7 +3413,7 @@ vpiHandle vpi_put_value(vpiHandle object, p_vpi_value valuep, p_vpi_time /*time_
|
|||
unsigned char digit = valuep->value.str[len - i - 1] - '0';
|
||||
if (digit > 7) { // If str was < '0', then as unsigned, digit > 7
|
||||
VL_VPI_WARNING_(__FILE__, __LINE__,
|
||||
"%s: Non octal character '%c' in '%s' as value %s for %s",
|
||||
"%s: Non octal character '%c' in '%s' as value %s for '%s'",
|
||||
__func__, digit + '0', valuep->value.str,
|
||||
VerilatedVpiError::strFromVpiVal(valuep->format),
|
||||
valueVop->fullname());
|
||||
|
|
@ -3428,15 +3428,15 @@ vpiHandle vpi_put_value(vpiHandle object, p_vpi_value valuep, p_vpi_time /*time_
|
|||
const int success = std::sscanf(valuep->value.str, "%30llu%15s", // lintok-format-ll
|
||||
&val, remainder);
|
||||
if (success < 1) {
|
||||
VL_VPI_ERROR_(__FILE__, __LINE__, "%s: Parsing failed for '%s' as value %s for %s",
|
||||
__func__, valuep->value.str,
|
||||
VerilatedVpiError::strFromVpiVal(valuep->format),
|
||||
VL_VPI_ERROR_(__FILE__, __LINE__,
|
||||
"%s: Parsing failed for '%s' as value %s for '%s'", __func__,
|
||||
valuep->value.str, VerilatedVpiError::strFromVpiVal(valuep->format),
|
||||
valueVop->fullname());
|
||||
return nullptr;
|
||||
}
|
||||
if (success > 1) {
|
||||
VL_VPI_WARNING_(
|
||||
__FILE__, __LINE__, "%s: Trailing garbage '%s' in '%s' as value %s for %s",
|
||||
__FILE__, __LINE__, "%s: Trailing garbage '%s' in '%s' as value %s for '%s'",
|
||||
__func__, remainder, valuep->value.str,
|
||||
VerilatedVpiError::strFromVpiVal(valuep->format), valueVop->fullname());
|
||||
}
|
||||
|
|
@ -3461,7 +3461,7 @@ vpiHandle vpi_put_value(vpiHandle object, p_vpi_value valuep, p_vpi_time /*time_
|
|||
hex = digit - 'A' + 10;
|
||||
} else {
|
||||
VL_VPI_WARNING_(__FILE__, __LINE__,
|
||||
"%s: Non hex character '%c' in '%s' as value %s for %s",
|
||||
"%s: Non hex character '%c' in '%s' as value %s for '%s'",
|
||||
__func__, digit, valuep->value.str,
|
||||
VerilatedVpiError::strFromVpiVal(valuep->format),
|
||||
valueVop->fullname());
|
||||
|
|
@ -3501,16 +3501,16 @@ vpiHandle vpi_put_value(vpiHandle object, p_vpi_value valuep, p_vpi_time /*time_
|
|||
vl_vpi_put_word(valueVop, (valuep->value.scalar == vpi1 ? 1 : 0), 1, 0);
|
||||
return object;
|
||||
}
|
||||
VL_VPI_ERROR_(__FILE__, __LINE__, "%s: Unsupported format (%s) as requested for %s",
|
||||
VL_VPI_ERROR_(__FILE__, __LINE__, "%s: Unsupported format (%s) as requested for '%s'",
|
||||
__func__, VerilatedVpiError::strFromVpiVal(valuep->format),
|
||||
valueVop->fullname());
|
||||
return nullptr;
|
||||
} else if (const VerilatedVpioParam* const vop = VerilatedVpioParam::castp(object)) {
|
||||
VL_VPI_WARNING_(__FILE__, __LINE__, "%s: Ignoring vpi_put_value to vpiParameter: %s",
|
||||
VL_VPI_WARNING_(__FILE__, __LINE__, "%s: Ignoring vpi_put_value to vpiParameter '%s'",
|
||||
__func__, vop->fullname());
|
||||
return nullptr;
|
||||
} else if (const VerilatedVpioConst* const vop = VerilatedVpioConst::castp(object)) {
|
||||
VL_VPI_WARNING_(__FILE__, __LINE__, "%s: Ignoring vpi_put_value to vpiConstant: %s",
|
||||
VL_VPI_WARNING_(__FILE__, __LINE__, "%s: Ignoring vpi_put_value to vpiConstant '%s'",
|
||||
__func__, vop->fullname());
|
||||
return nullptr;
|
||||
}
|
||||
|
|
@ -3562,8 +3562,8 @@ bool vl_check_array_format(const VerilatedVar* varp, const p_vpi_arrayvalue arra
|
|||
}
|
||||
}
|
||||
|
||||
VL_VPI_ERROR_(__FILE__, __LINE__, "%s: Unsupported format (%s) as requested for %s", __func__,
|
||||
VerilatedVpiError::strFromVpiVal(arrayvalue_p->format), fullname);
|
||||
VL_VPI_ERROR_(__FILE__, __LINE__, "%s: Unsupported format (%s) as requested for '%s'",
|
||||
__func__, VerilatedVpiError::strFromVpiVal(arrayvalue_p->format), fullname);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
|
@ -3876,8 +3876,9 @@ void vl_get_value_array(vpiHandle object, p_vpi_arrayvalue arrayvalue_p, const P
|
|||
return;
|
||||
}
|
||||
|
||||
VL_VPI_ERROR_(__FILE__, __LINE__, "%s: Unsupported format (%s) as requested for %s", __func__,
|
||||
VerilatedVpiError::strFromVpiVal(arrayvalue_p->format), vop->fullname());
|
||||
VL_VPI_ERROR_(__FILE__, __LINE__, "%s: Unsupported format (%s) as requested for '%s'",
|
||||
__func__, VerilatedVpiError::strFromVpiVal(arrayvalue_p->format),
|
||||
vop->fullname());
|
||||
}
|
||||
|
||||
void vpi_get_value_array(vpiHandle object, p_vpi_arrayvalue arrayvalue_p, PLI_INT32* index_p,
|
||||
|
|
@ -4059,8 +4060,9 @@ void vl_put_value_array(vpiHandle object, p_vpi_arrayvalue arrayvalue_p, const P
|
|||
return;
|
||||
}
|
||||
|
||||
VL_VPI_ERROR_(__FILE__, __LINE__, "%s: Unsupported format (%s) as requested for %s", __func__,
|
||||
VerilatedVpiError::strFromVpiVal(arrayvalue_p->format), vop->fullname());
|
||||
VL_VPI_ERROR_(__FILE__, __LINE__, "%s: Unsupported format (%s) as requested for '%s'",
|
||||
__func__, VerilatedVpiError::strFromVpiVal(arrayvalue_p->format),
|
||||
vop->fullname());
|
||||
}
|
||||
|
||||
void vpi_put_value_array(vpiHandle object, p_vpi_arrayvalue arrayvalue_p, PLI_INT32* index_p,
|
||||
|
|
@ -4104,7 +4106,7 @@ void vpi_put_value_array(vpiHandle object, p_vpi_arrayvalue arrayvalue_p, PLI_IN
|
|||
if (VL_UNLIKELY(!vop->varp()->isPublicRW())) {
|
||||
VL_VPI_ERROR_(__FILE__, __LINE__,
|
||||
"Ignoring vpi_put_value_array to signal marked read-only,"
|
||||
" use public_flat_rw instead: %s",
|
||||
" use public_flat_rw instead: '%s'",
|
||||
vop->fullname());
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -819,7 +819,8 @@ class TaskVisitor final : public VNVisitor {
|
|||
if (name.end() != std::find_if(name.begin(), name.end(), [](char c) {
|
||||
return !std::isalnum(c) && c != '_';
|
||||
})) {
|
||||
nodep->v3error("DPI function has illegal characters in C identifier name: " << name);
|
||||
nodep->v3error("DPI function has illegal characters in C identifier name '" << name
|
||||
<< '\'');
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -29,13 +29,9 @@ for s in [
|
|||
'dynamic new() not expected in this context (expected under an assign)', # Instead get syntax error
|
||||
|
||||
# Tested in t_vpi_force.cpp, but not picked up by pattern matching in this script yet
|
||||
'%s: Signal \'%s\' is marked forceable, but force',
|
||||
'%s: Signal \'%s\' with vpiHandle \'%p\' is marked forceable, but force',
|
||||
'%s: Trailing garbage \'%s\' in \'%s\' as value %s for %s',
|
||||
'%s: Non hex character \'%c\' in \'%s\' as value %s for %s',
|
||||
'%s: Non octal character \'%c\' in \'%s\' as value %s for %s',
|
||||
'%s: VPI force or release requested for \'%s\', but vpiHandle \'%p\' of enable', # Emitted as part of a different error message because this is thrown by a nested function
|
||||
'%s: VPI force or release requested for \'%s\', but vpiHandle \'%p\' of value', # Emitted as part of a different error message because this is thrown by a nested function
|
||||
'%s: Trailing garbage \'%s\' in \'%s\' as value %s for \'%s\'',
|
||||
'%s: Non hex character \'%c\' in \'%s\' as value %s for \'%s\'',
|
||||
'%s: Non octal character \'%c\' in \'%s\' as value %s for \'%s\'',
|
||||
|
||||
# Not yet analyzed
|
||||
'$VERILATOR_ROOT needs to be in environment',
|
||||
|
|
@ -50,16 +46,16 @@ for s in [
|
|||
'%%Warning: DPI svOpenArrayHandle function index 1',
|
||||
'%%Warning: DPI svOpenArrayHandle function index 2',
|
||||
'%%Warning: DPI svOpenArrayHandle function index 3',
|
||||
'%s: Ignoring vpi_put_value to vpiConstant: %s',
|
||||
'%s: Ignoring vpi_put_value to vpiParameter: %s',
|
||||
'%s: Ignoring vpi_put_value to vpiConstant \'%s\'',
|
||||
'%s: Ignoring vpi_put_value to vpiParameter \'%s\'',
|
||||
'%s: Index %u for object \'%s\' is out of bounds [%u,%u]',
|
||||
'%s: Parsing failed for \'%s\' as value %s for %s',
|
||||
'%s: Parsing failed for \'%s\' as value %s for \'%s\'',
|
||||
'%s: Requested elements (%u) exceed array size (%u)',
|
||||
'%s: Requested elements to set (%u) exceed array size (%u)',
|
||||
'%s: Unsupported callback type %s',
|
||||
'%s: Unsupported flags (%x)',
|
||||
'%s: Unsupported format (%s) as requested for %s',
|
||||
'%s: Unsupported format (%s) for %s',
|
||||
'%s: Unsupported format (%s) as requested for \'%s\'',
|
||||
'%s: Unsupported format (%s) for \'%s\'',
|
||||
'%s: Unsupported p_vpi_value as requested for \'%s\' with vpiInertialDelay',
|
||||
'%s: Unsupported property %s, nothing will be returned',
|
||||
'%s: Unsupported type %s, ignoring',
|
||||
|
|
@ -78,7 +74,6 @@ for s in [
|
|||
'Ignoring vpi_put_value_array to signal marked read-only,',
|
||||
'Ignoring vpi_put_value_array with null index pointer',
|
||||
'Ignoring vpi_put_value_array with null value pointer',
|
||||
'vpi_get_value with more than VL_VALUE_STRING_MAX_WORDS; increase and',
|
||||
'vpi_put_value was used on signal marked read-only,',
|
||||
'Can\'t find varpin scope of',
|
||||
'Can\'t read annotation file:',
|
||||
|
|
@ -108,12 +103,10 @@ for s in [
|
|||
'Signals inside functions/tasks cannot be marked forceable',
|
||||
'Slice size cannot be zero.',
|
||||
'Slices of arrays in assignments have different unpacked dimensions,',
|
||||
'String of',
|
||||
'Symbol matching',
|
||||
'Thread scheduler is unable to provide requested',
|
||||
'Unexpected connection to arrayed port',
|
||||
'Unsized numbers/parameters not allowed in streams.',
|
||||
'Unsupported (or syntax error): Foreach on this array\'s construct',
|
||||
'Unsupported LHS node type in array assignment',
|
||||
'Unsupported RHS tristate construct:',
|
||||
'Unsupported or syntax error: Unsized range in instance or other declaration',
|
||||
|
|
@ -130,15 +123,12 @@ for s in [
|
|||
'Unsupported: Creating tristate signal not underneath a module:',
|
||||
'Unsupported: Default value on module inout/ref/constref:',
|
||||
'Unsupported: Modport empty expression',
|
||||
'Unsupported: Modport export with prototype',
|
||||
'Unsupported: Modport import with prototype',
|
||||
'Unsupported: Non-constant default value in missing argument',
|
||||
'Unsupported: Non-constant index when passing interface to module',
|
||||
'Unsupported: Only one PSL clock allowed per assertion',
|
||||
'Unsupported: Per-bit array instantiations',
|
||||
'Unsupported: Public functions with >64 bit outputs;',
|
||||
'Unsupported: Public functions with return > 64 bits wide.',
|
||||
'Unsupported: Release statement argument is too complex array select',
|
||||
'Unsupported: Replication to form',
|
||||
'Unsupported: Shifting of by over 32-bit number isn\'t supported.',
|
||||
'Unsupported: Size-changing cast on non-basic data type',
|
||||
|
|
@ -154,7 +144,6 @@ for s in [
|
|||
'Unsupported: extern constraint definition with class-in-class',
|
||||
'Unsupported: extern forkjoin',
|
||||
'Unsupported: extern task',
|
||||
'Unsupported: modport export',
|
||||
'Unsupported: no_inline for tasks',
|
||||
'Unsupported: non-const assert directive type expression',
|
||||
'Unsupported: property port \'local\'',
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
%Error: t/t_dpi_name_bad.v:11:31: DPI function has illegal characters in C identifier name: badly.named
|
||||
%Error: t/t_dpi_name_bad.v:11:31: DPI function has illegal characters in C identifier name 'badly.named'
|
||||
11 | import "DPI-C" function int \badly.named (int i);
|
||||
| ^~~~~~~~~~~~
|
||||
... See the manual at https://verilator.org/verilator_doc.html?v=latest for more assistance.
|
||||
%Error: t/t_dpi_name_bad.v:14:16: DPI function has illegal characters in C identifier name: badly.expt
|
||||
%Error: t/t_dpi_name_bad.v:14:16: DPI function has illegal characters in C identifier name 'badly.expt'
|
||||
14 | function int \badly.expt ;
|
||||
| ^~~~~~~~~~~
|
||||
%Error: Exiting due to
|
||||
|
|
|
|||
|
|
@ -1894,36 +1894,37 @@ extern "C" int tryInvalidPutOperations() {
|
|||
"octString", {.format = vpiOctStrVal, .value = {.str = const_cast<PLI_BYTE8*>("123A")}},
|
||||
vpiForceFlag,
|
||||
"vpi_put_value: Non octal character 'A' in '123A' as value "
|
||||
"vpiOctStrVal for t.test.octString__VforceVal"));
|
||||
"vpiOctStrVal for 't.test.octString__VforceVal'"));
|
||||
|
||||
CHECK_RESULT_Z(expectVpiPutError( // NOLINT(concurrency-mt-unsafe)
|
||||
"decStringC", {.format = vpiDecStrVal, .value = {.str = const_cast<PLI_BYTE8*>("A123")}},
|
||||
vpiForceFlag,
|
||||
"vpi_put_value: Parsing failed for 'A123' as value vpiDecStrVal for "
|
||||
"t.test.decStringC__VforceVal"));
|
||||
"'t.test.decStringC__VforceVal'"));
|
||||
|
||||
CHECK_RESULT_Z(expectVpiPutError( // NOLINT(concurrency-mt-unsafe)
|
||||
"decStringC", {.format = vpiDecStrVal, .value = {.str = const_cast<PLI_BYTE8*>("123A")}},
|
||||
vpiForceFlag,
|
||||
"vpi_put_value: Trailing garbage 'A' in '123A' as value vpiDecStrVal for "
|
||||
"t.test.decStringC__VforceVal"));
|
||||
"'t.test.decStringC__VforceVal'"));
|
||||
|
||||
CHECK_RESULT_Z(expectVpiPutError( // NOLINT(concurrency-mt-unsafe)
|
||||
"hexString", {.format = vpiHexStrVal, .value = {.str = const_cast<PLI_BYTE8*>("12AG")}},
|
||||
vpiForceFlag,
|
||||
"vpi_put_value: Non hex character 'G' in '12AG' as value vpiHexStrVal for "
|
||||
"t.test.hexString__VforceVal"));
|
||||
"'t.test.hexString__VforceVal'"));
|
||||
|
||||
// vop was replaced with baseSignalVop in vpi_put_value, so these tests are required to hit
|
||||
// the test coverage target and ensure the error messages still work.
|
||||
CHECK_RESULT_Z(expectVpiPutError( // NOLINT(concurrency-mt-unsafe)
|
||||
"onebit", {.format = vpiRawFourStateVal, .value = {}}, vpiForceFlag,
|
||||
"vl_check_format: Unsupported format (vpiRawFourStateVal) for t.test.onebit"));
|
||||
"vl_check_format: Unsupported format (vpiRawFourStateVal) for "
|
||||
"'t.test.onebit'"));
|
||||
|
||||
CHECK_RESULT_Z(expectVpiPutError( // NOLINT(concurrency-mt-unsafe)
|
||||
"onebit", {.format = vpiSuppressVal, .value = {}}, vpiForceFlag,
|
||||
"vpi_put_value: Unsupported format (vpiSuppressVal) as "
|
||||
"requested for t.test.onebit__VforceVal"));
|
||||
"vpi_put_value: Unsupported format (vpiSuppressVal) as requested for "
|
||||
"'t.test.onebit__VforceVal'"));
|
||||
|
||||
CHECK_RESULT_Z(expectVpiPutError( // NOLINT(concurrency-mt-unsafe)
|
||||
"onebit", {.format = vpiStringVal, .value = {}}, vpiInertialDelay,
|
||||
|
|
|
|||
Loading…
Reference in New Issue