mirror of
https://github.com/verilator/verilator.git
synced 2024-12-29 10:47:34 +00:00
Internals: Use std:: for mem and str functions.
This commit is contained in:
parent
75fd71d7e5
commit
d85b909054
@ -32,7 +32,7 @@ int main(int argc, char** argv, char** env) {
|
||||
// When tracing, the contents of the secret module will not be seen
|
||||
VerilatedVcdC* tfp = nullptr;
|
||||
const char* flag = contextp->commandArgsPlusMatch("trace");
|
||||
if (flag && 0 == strcmp(flag, "+trace")) {
|
||||
if (flag && 0 == std::strcmp(flag, "+trace")) {
|
||||
contextp->traceEverOn(true);
|
||||
VL_PRINTF("Enabling waves into logs/vlt_dump.vcd...\n");
|
||||
tfp = new VerilatedVcdC;
|
||||
|
@ -89,7 +89,7 @@ int sc_main(int argc, char* argv[]) {
|
||||
// and if at run time passed the +trace argument, turn on tracing
|
||||
VerilatedVcdSc* tfp = nullptr;
|
||||
const char* flag = Verilated::commandArgsPlusMatch("trace");
|
||||
if (flag && 0 == strcmp(flag, "+trace")) {
|
||||
if (flag && 0 == std::strcmp(flag, "+trace")) {
|
||||
cout << "Enabling waves into logs/vlt_dump.vcd...\n";
|
||||
tfp = new VerilatedVcdSc;
|
||||
top->trace(tfp, 99); // Trace 99 levels of hierarchy
|
||||
|
@ -165,22 +165,22 @@ string AstNode::prettyName(const string& namein) {
|
||||
continue;
|
||||
}
|
||||
if (pos[0] == '_' && pos[1] == '_') { // Short-circuit
|
||||
if (0 == strncmp(pos, "__BRA__", 7)) {
|
||||
if (0 == std::strncmp(pos, "__BRA__", 7)) {
|
||||
pretty += "[";
|
||||
pos += 7;
|
||||
continue;
|
||||
}
|
||||
if (0 == strncmp(pos, "__KET__", 7)) {
|
||||
if (0 == std::strncmp(pos, "__KET__", 7)) {
|
||||
pretty += "]";
|
||||
pos += 7;
|
||||
continue;
|
||||
}
|
||||
if (0 == strncmp(pos, "__DOT__", 7)) {
|
||||
if (0 == std::strncmp(pos, "__DOT__", 7)) {
|
||||
pretty += ".";
|
||||
pos += 7;
|
||||
continue;
|
||||
}
|
||||
if (0 == strncmp(pos, "__PVT__", 7)) {
|
||||
if (0 == std::strncmp(pos, "__PVT__", 7)) {
|
||||
pretty += "";
|
||||
pos += 7;
|
||||
continue;
|
||||
|
@ -467,8 +467,9 @@ public:
|
||||
return names[m_e];
|
||||
}
|
||||
static void selfTest() {
|
||||
UASSERT(0 == strcmp(VBasicDTypeKwd(_ENUM_MAX).ascii(), " MAX"), "SelfTest: Enum mismatch");
|
||||
UASSERT(0 == strcmp(VBasicDTypeKwd(_ENUM_MAX).dpiType(), " MAX"),
|
||||
UASSERT(0 == std::strcmp(VBasicDTypeKwd(_ENUM_MAX).ascii(), " MAX"),
|
||||
"SelfTest: Enum mismatch");
|
||||
UASSERT(0 == std::strcmp(VBasicDTypeKwd(_ENUM_MAX).dpiType(), " MAX"),
|
||||
"SelfTest: Enum mismatch");
|
||||
}
|
||||
inline VBasicDTypeKwd()
|
||||
|
@ -85,7 +85,7 @@ private:
|
||||
string::size_type pos;
|
||||
while ((pos = dottedname.find("__DOT__")) != string::npos) {
|
||||
const string ident = dottedname.substr(0, pos);
|
||||
dottedname = dottedname.substr(pos + strlen("__DOT__"));
|
||||
dottedname = dottedname.substr(pos + std::strlen("__DOT__"));
|
||||
if (nodep->name() != "") {
|
||||
m_displayScope = dot(m_displayScope, ident);
|
||||
m_namedScope = dot(m_namedScope, ident);
|
||||
|
@ -565,7 +565,7 @@ class EmitCModel final : public EmitCFunc {
|
||||
// Some hackery to locate handle__V for trace_init_task
|
||||
// Considered a pragma on the handle, but that still doesn't help us attach it here
|
||||
string handle = funcp->name();
|
||||
const size_t wr_len = strlen("__Vdpiimwrap_");
|
||||
const size_t wr_len = std::strlen("__Vdpiimwrap_");
|
||||
UASSERT_OBJ(handle.substr(0, wr_len) == "__Vdpiimwrap_", funcp,
|
||||
"Strange trace_init_task function name");
|
||||
handle = "vlSymsp->TOP." + handle.substr(wr_len);
|
||||
|
@ -211,7 +211,7 @@ class EmitCSyms final : EmitCBaseVisitor {
|
||||
const string::size_type dpos = whole.rfind("__DOT__");
|
||||
if (dpos != string::npos) {
|
||||
scpName = whole.substr(0, dpos);
|
||||
varBase = whole.substr(dpos + strlen("__DOT__"));
|
||||
varBase = whole.substr(dpos + std::strlen("__DOT__"));
|
||||
} else {
|
||||
varBase = whole;
|
||||
}
|
||||
|
@ -94,7 +94,7 @@ class V3FileDependImp final {
|
||||
const string fn = filename();
|
||||
const int err = stat(fn.c_str(), &m_stat);
|
||||
if (err != 0) {
|
||||
memset(&m_stat, 0, sizeof(m_stat));
|
||||
std::memset(&m_stat, 0, sizeof(m_stat));
|
||||
m_stat.st_mtime = 1;
|
||||
m_exists = false;
|
||||
// Not an error... This can occur due to `line directives in the .vpp files
|
||||
@ -389,7 +389,7 @@ private:
|
||||
if (!m_pidExited && waitpid(m_pid, &m_pidStatus, hang ? 0 : WNOHANG)) {
|
||||
UINFO(1, "--pipe-filter: Exited, status "
|
||||
<< m_pidStatus << " exit=" << WEXITSTATUS(m_pidStatus) << " err"
|
||||
<< strerror(errno) << endl);
|
||||
<< std::strerror(errno) << endl);
|
||||
m_readEof = true;
|
||||
m_pidExited = true;
|
||||
}
|
||||
@ -495,7 +495,7 @@ private:
|
||||
constexpr int P_WR = 1;
|
||||
|
||||
if (pipe(fd_stdin) != 0 || pipe(fd_stdout) != 0) {
|
||||
v3fatal("--pipe-filter: Can't pipe: " << strerror(errno));
|
||||
v3fatal("--pipe-filter: Can't pipe: " << std::strerror(errno));
|
||||
}
|
||||
if (fd_stdin[P_RD] <= 2 || fd_stdin[P_WR] <= 2 || fd_stdout[P_RD] <= 2
|
||||
|| fd_stdout[P_WR] <= 2) {
|
||||
@ -507,7 +507,7 @@ private:
|
||||
UINFO(1, "--pipe-filter: /bin/sh -c " << command << endl);
|
||||
|
||||
const pid_t pid = fork();
|
||||
if (pid < 0) v3fatal("--pipe-filter: fork failed: " << strerror(errno));
|
||||
if (pid < 0) v3fatal("--pipe-filter: fork failed: " << std::strerror(errno));
|
||||
if (pid == 0) { // Child
|
||||
UINFO(6, "In child\n");
|
||||
close(fd_stdin[P_WR]);
|
||||
@ -518,7 +518,7 @@ private:
|
||||
|
||||
execl("/bin/sh", "sh", "-c", command.c_str(), static_cast<char*>(nullptr));
|
||||
// Don't use v3fatal, we don't share the common structures any more
|
||||
fprintf(stderr, "--pipe-filter: exec failed: %s\n", strerror(errno));
|
||||
fprintf(stderr, "--pipe-filter: exec failed: %s\n", std::strerror(errno));
|
||||
_exit(1);
|
||||
} else { // Parent
|
||||
UINFO(6, "In parent, child pid " << pid << " stdin " << fd_stdin[P_WR] << "->"
|
||||
|
@ -224,7 +224,7 @@ private:
|
||||
std::size_t len = strlen(str);
|
||||
std::size_t availableBytes = WRITE_BUFFER_SIZE_BYTES - m_usedBytes;
|
||||
while (VL_UNLIKELY(len >= availableBytes)) {
|
||||
memcpy(m_bufferp->data() + m_usedBytes, str, availableBytes);
|
||||
std::memcpy(m_bufferp->data() + m_usedBytes, str, availableBytes);
|
||||
m_usedBytes = WRITE_BUFFER_SIZE_BYTES;
|
||||
writeBlock();
|
||||
str += availableBytes;
|
||||
@ -232,7 +232,7 @@ private:
|
||||
availableBytes = WRITE_BUFFER_SIZE_BYTES;
|
||||
}
|
||||
if (len > 0) {
|
||||
memcpy(m_bufferp->data() + m_usedBytes, str, len);
|
||||
std::memcpy(m_bufferp->data() + m_usedBytes, str, len);
|
||||
m_usedBytes += len;
|
||||
}
|
||||
}
|
||||
|
@ -185,7 +185,7 @@ void FileLine::lineDirective(const char* textp, int& enterExitRef) {
|
||||
const char* const ln = textp;
|
||||
while (*textp && !isspace(*textp)) textp++;
|
||||
if (isdigit(*ln)) {
|
||||
lineno(atoi(ln));
|
||||
lineno(std::atoi(ln));
|
||||
} else {
|
||||
fail = true;
|
||||
}
|
||||
@ -207,7 +207,7 @@ void FileLine::lineDirective(const char* textp, int& enterExitRef) {
|
||||
// Grab level
|
||||
while (*textp && (isspace(*textp) || *textp == '"')) textp++;
|
||||
if (isdigit(*textp)) {
|
||||
enterExitRef = atoi(textp);
|
||||
enterExitRef = std::atoi(textp);
|
||||
if (enterExitRef >= 3) fail = true;
|
||||
} else {
|
||||
enterExitRef = 0;
|
||||
|
@ -919,7 +919,7 @@ class LinkDotFindVisitor final : public VNVisitor {
|
||||
string::size_type pos;
|
||||
if ((pos = dottedname.rfind("__DOT__")) != string::npos) {
|
||||
const string dotted = dottedname.substr(0, pos);
|
||||
const string ident = dottedname.substr(pos + strlen("__DOT__"));
|
||||
const string ident = dottedname.substr(pos + std::strlen("__DOT__"));
|
||||
string baddot;
|
||||
VSymEnt* okSymp;
|
||||
aboveSymp = m_statep->findDotted(nodep->fileline(), aboveSymp, dotted, baddot, okSymp);
|
||||
|
@ -156,14 +156,15 @@ void V3Number::V3NumberCreate(AstNode* nodep, const char* sourcep, FileLine* fl)
|
||||
}
|
||||
value_startp = cp;
|
||||
|
||||
if (atoi(widthn.c_str())) {
|
||||
if (atoi(widthn.c_str()) < 0 || atoi(widthn.c_str()) > v3Global.opt.maxNumWidth()) {
|
||||
if (std::atoi(widthn.c_str())) {
|
||||
if (std::atoi(widthn.c_str()) < 0
|
||||
|| std::atoi(widthn.c_str()) > v3Global.opt.maxNumWidth()) {
|
||||
// atoi might convert large number to negative, so can't tell which
|
||||
v3error("Unsupported: Width of number exceeds implementation limit: "
|
||||
<< sourcep << " (IEEE 1800-2017 6.9.1)");
|
||||
width(v3Global.opt.maxNumWidth(), true);
|
||||
} else {
|
||||
width(atoi(widthn.c_str()), true);
|
||||
width(std::atoi(widthn.c_str()), true);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@ -278,7 +279,8 @@ void V3Number::V3NumberCreate(AstNode* nodep, const char* sourcep, FileLine* fl)
|
||||
}
|
||||
} else {
|
||||
// Convert bin/octal number to hex
|
||||
for (const char* cp = value_startp + strlen(value_startp) - 1; cp >= value_startp; cp--) {
|
||||
for (const char* cp = value_startp + std::strlen(value_startp) - 1; cp >= value_startp;
|
||||
cp--) {
|
||||
if (*cp != '_' && *cp != '0' && obit >= width()) {
|
||||
v3error("Too many digits for " << width() << " bit number: " << sourcep);
|
||||
break;
|
||||
@ -698,7 +700,7 @@ string V3Number::displayed(FileLine* fl, const string& vformat) const {
|
||||
if (fmtsize != "0") str += ' ';
|
||||
}
|
||||
}
|
||||
const size_t fmtsizen = static_cast<size_t>(atoi(fmtsize.c_str()));
|
||||
const size_t fmtsizen = static_cast<size_t>(std::atoi(fmtsize.c_str()));
|
||||
str = displayPad(fmtsizen, ' ', left, str);
|
||||
return str;
|
||||
}
|
||||
@ -747,7 +749,7 @@ string V3Number::displayed(FileLine* fl, const string& vformat) const {
|
||||
}
|
||||
const bool zeropad = fmtsize.length() > 0 && fmtsize[0] == '0';
|
||||
// fmtsize might have changed since we parsed the %fmtsize
|
||||
const size_t fmtsizen = static_cast<size_t>(atoi(fmtsize.c_str()));
|
||||
const size_t fmtsizen = static_cast<size_t>(std::atoi(fmtsize.c_str()));
|
||||
str = displayPad(fmtsizen, (zeropad ? '0' : ' '), left, str);
|
||||
return str;
|
||||
}
|
||||
@ -802,7 +804,7 @@ string V3Number::displayed(FileLine* fl, const string& vformat) const {
|
||||
return str;
|
||||
}
|
||||
case '@': { // Packed string
|
||||
const size_t fmtsizen = static_cast<size_t>(atoi(fmtsize.c_str()));
|
||||
const size_t fmtsizen = static_cast<size_t>(std::atoi(fmtsize.c_str()));
|
||||
str = displayPad(fmtsizen, ' ', left, toString());
|
||||
return str;
|
||||
}
|
||||
|
@ -130,8 +130,8 @@ V3OptionParser::ActionIfs* V3OptionParser::find(const char* optp) {
|
||||
for (auto&& act : m_pimpl->m_options) {
|
||||
if (act.second->isFOnOffAllowed()) { // Find starts with "-fno"
|
||||
if (const char* const nop
|
||||
= VString::startsWith(optp, "-fno-") ? (optp + strlen("-fno-")) : nullptr) {
|
||||
if (act.first.substr(strlen("-f"), std::string::npos)
|
||||
= VString::startsWith(optp, "-fno-") ? (optp + std::strlen("-fno-")) : nullptr) {
|
||||
if (act.first.substr(std::strlen("-f"), std::string::npos)
|
||||
== nop) { // [-f]opt = [-fno-]opt
|
||||
return act.second.get();
|
||||
}
|
||||
@ -139,7 +139,7 @@ V3OptionParser::ActionIfs* V3OptionParser::find(const char* optp) {
|
||||
}
|
||||
if (act.second->isOnOffAllowed()) { // Find starts with "-no"
|
||||
if (const char* const nop
|
||||
= VString::startsWith(optp, "-no") ? (optp + strlen("-no")) : nullptr) {
|
||||
= VString::startsWith(optp, "-no") ? (optp + std::strlen("-no")) : nullptr) {
|
||||
if (act.first == nop || act.first == (std::string{"-"} + nop)) {
|
||||
return act.second.get();
|
||||
}
|
||||
@ -206,7 +206,7 @@ void V3OptionParser::finalize() {
|
||||
m_pimpl->m_spellCheck.pushCandidate(opt.first);
|
||||
if (opt.second->isFOnOffAllowed()) {
|
||||
m_pimpl->m_spellCheck.pushCandidate(
|
||||
"-fno-" + opt.first.substr(strlen("-f"), std::string::npos));
|
||||
"-fno-" + opt.first.substr(std::strlen("-f"), std::string::npos));
|
||||
}
|
||||
if (opt.second->isOnOffAllowed()) m_pimpl->m_spellCheck.pushCandidate("-no" + opt.first);
|
||||
}
|
||||
|
@ -908,8 +908,8 @@ void V3Options::parseOpts(FileLine* fl, int argc, char** argv) {
|
||||
//======================================================================
|
||||
|
||||
bool V3Options::suffixed(const string& sw, const char* arg) {
|
||||
if (strlen(arg) > sw.length()) return false;
|
||||
return (0 == strcmp(sw.c_str() + sw.length() - strlen(arg), arg));
|
||||
if (std::strlen(arg) > sw.length()) return false;
|
||||
return (0 == std::strcmp(sw.c_str() + sw.length() - std::strlen(arg), arg));
|
||||
}
|
||||
|
||||
void V3Options::parseOptsList(FileLine* fl, const string& optdir, int argc, char** argv) {
|
||||
@ -1019,15 +1019,15 @@ void V3Options::parseOptsList(FileLine* fl, const string& optdir, int argc, char
|
||||
DECL_OPTION("-comp-limit-parens", Set, &m_compLimitParens).undocumented();
|
||||
DECL_OPTION("-comp-limit-syms", CbVal, [](int val) { VName::maxLength(val); }).undocumented();
|
||||
DECL_OPTION("-compiler", CbVal, [this, fl](const char* valp) {
|
||||
if (!strcmp(valp, "clang")) {
|
||||
if (!std::strcmp(valp, "clang")) {
|
||||
m_compLimitBlocks = 80; // limit unknown
|
||||
m_compLimitMembers = 64; // soft limit, has slowdown bug as of clang++ 3.8
|
||||
m_compLimitParens = 240; // controlled by -fbracket-depth, which defaults to 256
|
||||
} else if (!strcmp(valp, "gcc")) {
|
||||
} else if (!std::strcmp(valp, "gcc")) {
|
||||
m_compLimitBlocks = 0; // Bug free
|
||||
m_compLimitMembers = 64; // soft limit, has slowdown bug as of g++ 7.1
|
||||
m_compLimitParens = 240; // Unlimited, but generate same code as for clang
|
||||
} else if (!strcmp(valp, "msvc")) {
|
||||
} else if (!std::strcmp(valp, "msvc")) {
|
||||
m_compLimitBlocks = 80; // 128, but allow some room
|
||||
m_compLimitMembers = 0; // probably ok, and AFAIK doesn't support anon structs
|
||||
m_compLimitParens = 80; // 128, but allow some room
|
||||
@ -1180,9 +1180,9 @@ void V3Options::parseOptsList(FileLine* fl, const string& optdir, int argc, char
|
||||
});
|
||||
DECL_OPTION("-main", OnOff, &m_main);
|
||||
DECL_OPTION("-make", CbVal, [this, fl](const char* valp) {
|
||||
if (!strcmp(valp, "cmake")) {
|
||||
if (!std::strcmp(valp, "cmake")) {
|
||||
m_cmake = true;
|
||||
} else if (!strcmp(valp, "gmake")) {
|
||||
} else if (!std::strcmp(valp, "gmake")) {
|
||||
m_gmake = true;
|
||||
} else {
|
||||
fl->v3fatal("Unknown --make system specified: '" << valp << "'");
|
||||
@ -1329,13 +1329,13 @@ void V3Options::parseOptsList(FileLine* fl, const string& optdir, int argc, char
|
||||
if (m_threads < 0) fl->v3fatal("--threads must be >= 0: " << valp);
|
||||
});
|
||||
DECL_OPTION("-threads-dpi", CbVal, [this, fl](const char* valp) {
|
||||
if (!strcmp(valp, "all")) {
|
||||
if (!std::strcmp(valp, "all")) {
|
||||
m_threadsDpiPure = true;
|
||||
m_threadsDpiUnpure = true;
|
||||
} else if (!strcmp(valp, "none")) {
|
||||
} else if (!std::strcmp(valp, "none")) {
|
||||
m_threadsDpiPure = false;
|
||||
m_threadsDpiUnpure = false;
|
||||
} else if (!strcmp(valp, "pure")) {
|
||||
} else if (!std::strcmp(valp, "pure")) {
|
||||
m_threadsDpiPure = true;
|
||||
m_threadsDpiUnpure = false;
|
||||
} else {
|
||||
@ -1470,13 +1470,13 @@ void V3Options::parseOptsList(FileLine* fl, const string& optdir, int argc, char
|
||||
DECL_OPTION("-waiver-output", Set, &m_waiverOutput);
|
||||
|
||||
DECL_OPTION("-x-assign", CbVal, [this, fl](const char* valp) {
|
||||
if (!strcmp(valp, "0")) {
|
||||
if (!std::strcmp(valp, "0")) {
|
||||
m_xAssign = "0";
|
||||
} else if (!strcmp(valp, "1")) {
|
||||
} else if (!std::strcmp(valp, "1")) {
|
||||
m_xAssign = "1";
|
||||
} else if (!strcmp(valp, "fast")) {
|
||||
} else if (!std::strcmp(valp, "fast")) {
|
||||
m_xAssign = "fast";
|
||||
} else if (!strcmp(valp, "unique")) {
|
||||
} else if (!std::strcmp(valp, "unique")) {
|
||||
m_xAssign = "unique";
|
||||
} else {
|
||||
fl->v3fatal("Unknown setting for --x-assign: '"
|
||||
@ -1485,11 +1485,11 @@ void V3Options::parseOptsList(FileLine* fl, const string& optdir, int argc, char
|
||||
}
|
||||
});
|
||||
DECL_OPTION("-x-initial", CbVal, [this, fl](const char* valp) {
|
||||
if (!strcmp(valp, "0")) {
|
||||
if (!std::strcmp(valp, "0")) {
|
||||
m_xInitial = "0";
|
||||
} else if (!strcmp(valp, "fast")) {
|
||||
} else if (!std::strcmp(valp, "fast")) {
|
||||
m_xInitial = "fast";
|
||||
} else if (!strcmp(valp, "unique")) {
|
||||
} else if (!std::strcmp(valp, "unique")) {
|
||||
m_xInitial = "unique";
|
||||
} else {
|
||||
fl->v3fatal("Unknown setting for --x-initial: '"
|
||||
@ -1511,11 +1511,12 @@ void V3Options::parseOptsList(FileLine* fl, const string& optdir, int argc, char
|
||||
|
||||
for (int i = 0; i < argc;) {
|
||||
UINFO(9, " Option: " << argv[i] << endl);
|
||||
if (!strcmp(argv[i], "-j") || !strcmp(argv[i], "--j")) { // Allow gnu -- switches
|
||||
if (!std::strcmp(argv[i], "-j")
|
||||
|| !std::strcmp(argv[i], "--j")) { // Allow gnu -- switches
|
||||
++i;
|
||||
m_buildJobs = 0; // Unlimited parallelism
|
||||
if (i < argc && isdigit(argv[i][0])) {
|
||||
m_buildJobs = atoi(argv[i]);
|
||||
m_buildJobs = std::atoi(argv[i]);
|
||||
if (m_buildJobs <= 0) {
|
||||
fl->v3error("-j accepts positive integer, but '" << argv[i] << "' is passed");
|
||||
}
|
||||
|
@ -347,7 +347,7 @@ int V3Os::system(const string& command) {
|
||||
const int ret = ::system(command.c_str());
|
||||
if (VL_UNCOVERABLE(ret == -1)) {
|
||||
v3fatal("Failed to execute command:" // LCOV_EXCL_LINE
|
||||
<< command << " " << strerror(errno));
|
||||
<< command << " " << std::strerror(errno));
|
||||
return -1; // LCOV_EXCL_LINE
|
||||
} else {
|
||||
UASSERT(WIFEXITED(ret), "system(" << command << ") returned unexpected value of " << ret);
|
||||
|
@ -150,8 +150,8 @@ void V3ParseImp::lexVerilatorCmtLint(FileLine* fl, const char* textp, bool warnO
|
||||
|
||||
void V3ParseImp::lexVerilatorCmtBad(FileLine* fl, const char* textp) {
|
||||
string cmtparse = textp;
|
||||
if (cmtparse.substr(0, strlen("/*verilator")) == "/*verilator") {
|
||||
cmtparse.replace(0, strlen("/*verilator"), "");
|
||||
if (cmtparse.substr(0, std::strlen("/*verilator")) == "/*verilator") {
|
||||
cmtparse.replace(0, std::strlen("/*verilator"), "");
|
||||
}
|
||||
while (isspace(cmtparse[0])) cmtparse.replace(0, 1, "");
|
||||
string cmtname;
|
||||
@ -178,14 +178,14 @@ void V3ParseImp::lexErrorPreprocDirective(FileLine* fl, const char* textp) {
|
||||
}
|
||||
|
||||
string V3ParseImp::lexParseTag(const char* textp) {
|
||||
string tmp = textp + strlen("/*verilator tag ");
|
||||
string tmp = textp + std::strlen("/*verilator tag ");
|
||||
string::size_type pos;
|
||||
if ((pos = tmp.rfind("*/")) != string::npos) tmp.erase(pos);
|
||||
return tmp;
|
||||
}
|
||||
|
||||
double V3ParseImp::lexParseTimenum(const char* textp) {
|
||||
const size_t length = strlen(textp);
|
||||
const size_t length = std::strlen(textp);
|
||||
char* const strgp = new char[length + 1];
|
||||
char* dp = strgp;
|
||||
const char* sp = textp;
|
||||
@ -234,7 +234,7 @@ size_t V3ParseImp::ppInputToLex(char* buf, size_t max_size) {
|
||||
m_ppBuffers.push_front(remainder); // Put back remainder for next time
|
||||
len = (max_size - got);
|
||||
}
|
||||
memcpy(buf + got, front.c_str(), len);
|
||||
std::memcpy(buf + got, front.c_str(), len);
|
||||
got += len;
|
||||
}
|
||||
if (debug() >= 9) {
|
||||
|
@ -126,7 +126,7 @@ bom [\357\273\277]
|
||||
if (LEXP->m_protBytes > 0) {
|
||||
LEXP->curFilelinep()->v3warn(BADSTDPRAGMA, "multiple `pragma protected encoding sections");
|
||||
}
|
||||
res = sscanf(yytext + strlen("encoding"), " = (enctype = \"%15[A-Za-z0-9]\", line_length = %d, bytes = %d)", &enctype[0], &LEXP->m_protLength, &LEXP->m_protBytes);
|
||||
res = sscanf(yytext + std::strlen("encoding"), " = (enctype = \"%15[A-Za-z0-9]\", line_length = %d, bytes = %d)", &enctype[0], &LEXP->m_protLength, &LEXP->m_protBytes);
|
||||
if (res == 0)
|
||||
LEXP->curFilelinep()->v3warn(BADSTDPRAGMA, "`pragma protected encoding must have an \"enctype\" field");
|
||||
LEXP->m_encType = !VL_STRCASECMP(enctype, "uuencode") ? Enctype::UUENCODE :
|
||||
@ -242,7 +242,7 @@ bom [\357\273\277]
|
||||
<INITIAL,STRIFY>"`__LINE__" { FL_FWDC;
|
||||
static char buf[25];
|
||||
VL_SNPRINTF(buf, 25, "%d", LEXP->curFilelinep()->lastLineno());
|
||||
yytext = buf; yyleng = strlen(yytext);
|
||||
yytext = buf; yyleng = std::strlen(yytext);
|
||||
return VP_TEXT; }
|
||||
|
||||
/* Pass-through strings */
|
||||
|
@ -395,7 +395,7 @@ string V3PreProcImp::commentCleanup(const string& text) {
|
||||
}
|
||||
|
||||
bool V3PreProcImp::commentTokenMatch(string& cmdr, const char* strg) {
|
||||
int len = strlen(strg);
|
||||
int len = std::strlen(strg);
|
||||
if (VString::startsWith(cmdr, strg) && (cmdr[len] == '\0' || isspace(cmdr[len]))) {
|
||||
if (isspace(cmdr[len])) len++;
|
||||
cmdr = cmdr.substr(len);
|
||||
@ -425,27 +425,27 @@ void V3PreProcImp::comment(const string& text) {
|
||||
bool synth = false;
|
||||
bool vlcomment = false;
|
||||
if ((cp[0] == 'v' || cp[0] == 'V') && VString::startsWith(cp + 1, "erilator")) {
|
||||
cp += strlen("verilator");
|
||||
cp += std::strlen("verilator");
|
||||
if (*cp == '_') {
|
||||
fileline()->v3error("Extra underscore in meta-comment;"
|
||||
" use /*verilator {...}*/ not /*verilator_{...}*/");
|
||||
}
|
||||
vlcomment = true;
|
||||
} else if (VString::startsWith(cp, "synopsys")) {
|
||||
cp += strlen("synopsys");
|
||||
cp += std::strlen("synopsys");
|
||||
synth = true;
|
||||
if (*cp == '_') {
|
||||
fileline()->v3error("Extra underscore in meta-comment;"
|
||||
" use /*synopsys {...}*/ not /*synopsys_{...}*/");
|
||||
}
|
||||
} else if (VString::startsWith(cp, "cadence")) {
|
||||
cp += strlen("cadence");
|
||||
cp += std::strlen("cadence");
|
||||
synth = true;
|
||||
} else if (VString::startsWith(cp, "pragma")) {
|
||||
cp += strlen("pragma");
|
||||
cp += std::strlen("pragma");
|
||||
synth = true;
|
||||
} else if (VString::startsWith(cp, "ambit synthesis")) {
|
||||
cp += strlen("ambit synthesis");
|
||||
cp += std::strlen("ambit synthesis");
|
||||
synth = true;
|
||||
} else {
|
||||
return;
|
||||
@ -478,7 +478,7 @@ void V3PreProcImp::comment(const string& text) {
|
||||
string::size_type pos;
|
||||
if ((pos = cmd.find("public_flat_rw")) != string::npos) {
|
||||
// "/*verilator public_flat_rw @(foo) */" -> "/*verilator public_flat_rw*/ @(foo)"
|
||||
cmd = cmd.substr(pos + strlen("public_flat_rw"));
|
||||
cmd = cmd.substr(pos + std::strlen("public_flat_rw"));
|
||||
while (isspace(cmd[0])) cmd = cmd.substr(1);
|
||||
if (!printed) insertUnreadback("/*verilator public_flat_rw*/ " + cmd + " /**/");
|
||||
} else {
|
||||
@ -1593,7 +1593,7 @@ string V3PreProcImp::getline() {
|
||||
if (isEof()) return "";
|
||||
const char* rtnp;
|
||||
bool gotEof = false;
|
||||
while (nullptr == (rtnp = strchr(m_lineChars.c_str(), '\n')) && !gotEof) {
|
||||
while (nullptr == (rtnp = std::strchr(m_lineChars.c_str(), '\n')) && !gotEof) {
|
||||
string buf;
|
||||
const int tok = getFinalToken(buf /*ref*/);
|
||||
if (debug() >= 5) {
|
||||
|
@ -150,7 +150,7 @@ double VString::parseDouble(const string& str, bool* successp) {
|
||||
char* endp = strgp;
|
||||
const double d = strtod(strgp, &endp);
|
||||
const size_t parsed_len = endp - strgp;
|
||||
if (parsed_len != strlen(strgp)) {
|
||||
if (parsed_len != std::strlen(strgp)) {
|
||||
if (successp) *successp = false;
|
||||
}
|
||||
VL_DO_DANGLING(delete[] strgp, strgp);
|
||||
@ -402,7 +402,7 @@ void VHashSha256::selfTest() {
|
||||
|
||||
string VName::dehash(const string& in) {
|
||||
static const char VHSH[] = "__Vhsh";
|
||||
static const size_t DOT_LEN = strlen("__DOT__");
|
||||
static const size_t DOT_LEN = std::strlen("__DOT__");
|
||||
std::string dehashed;
|
||||
|
||||
// Need to split 'in' into components separated by __DOT__, 'last_dot_pos'
|
||||
|
@ -5963,7 +5963,7 @@ private:
|
||||
}
|
||||
if ((VN_IS(nodep, Add) && underp->width() == 1 && underp->isOne())
|
||||
|| (VN_IS(nodep, Sub) && underp->width() == 1 && underp->isOne()
|
||||
&& 0 == strcmp(side, "RHS"))) {
|
||||
&& 0 == std::strcmp(side, "RHS"))) {
|
||||
// "foo + 1'b1", or "foo - 1'b1" are very common, people assume
|
||||
// they extend correctly
|
||||
warnOn = false;
|
||||
|
@ -1004,7 +1004,7 @@ vnum {vnum1}|{vnum2}|{vnum3}|{vnum4}|{vnum5}
|
||||
return yaT_RESETALL; } // Rest handled by preproc
|
||||
"`suppress_faults" { FL_FWD; FL_BRK; } // Verilog-XL compatibility
|
||||
"`timescale"{ws}+[^\n\r]* { FL; PARSEP->lexTimescaleParse(yylval.fl,
|
||||
yytext + strlen("`timescale"));
|
||||
yytext + std::strlen("`timescale"));
|
||||
FL_BRK; }
|
||||
"`unconnected_drive"{ws}+"pull0" { FL; return yaT_UNCONNECTED_PULL0; }
|
||||
"`unconnected_drive"{ws}+"pull1" { FL; return yaT_UNCONNECTED_PULL1; }
|
||||
|
@ -1845,7 +1845,7 @@ sub _make_main {
|
||||
|
||||
if ($self->{savable}) {
|
||||
$fh->print(" const char* save_time_strp = contextp->commandArgsPlusMatch(\"save_time=\");\n");
|
||||
$fh->print(" unsigned int save_time = !save_time_strp[0] ? 0 : atoi(save_time_strp+strlen(\"+save_time=\"));\n");
|
||||
$fh->print(" unsigned int save_time = !save_time_strp[0] ? 0 : std::atoi(save_time_strp + std::strlen(\"+save_time=\"));\n");
|
||||
$fh->print(" const char* save_restore_strp = contextp->commandArgsPlusMatch(\"save_restore=\");\n");
|
||||
$fh->print(" unsigned int save_restore = !save_restore_strp[0] ? 0 : 1;\n");
|
||||
}
|
||||
|
@ -34,7 +34,7 @@ static const bool verbose = false;
|
||||
|
||||
#define TEST_CHECK_EQ(got, exp) TEST_CHECK(got, exp, ((got) == (exp)));
|
||||
#define TEST_CHECK_NE(got, exp) TEST_CHECK(got, exp, ((got) != (exp)));
|
||||
#define TEST_CHECK_CSTR(got, exp) TEST_CHECK(got, exp, 0 == strcmp((got), (exp)));
|
||||
#define TEST_CHECK_CSTR(got, exp) TEST_CHECK(got, exp, 0 == std::strcmp((got), (exp)));
|
||||
|
||||
#define TEST_CHECK_HEX_EQ(got, exp) \
|
||||
do { \
|
||||
|
@ -28,13 +28,13 @@ private:
|
||||
public:
|
||||
TestSimulator() {
|
||||
vpi_get_vlog_info(&m_info);
|
||||
if (0 == strcmp(m_info.product, "Verilator")) {
|
||||
if (0 == std::strcmp(m_info.product, "Verilator")) {
|
||||
m_simulators.verilator = true;
|
||||
} else if (0 == strcmp(m_info.product, "Verilator")) {
|
||||
} else if (0 == std::strcmp(m_info.product, "Verilator")) {
|
||||
m_simulators.icarus = true;
|
||||
} else if (0
|
||||
== strncmp(m_info.product, "Chronologic Simulation VCS",
|
||||
strlen("Chronologic Simulation VCS"))) {
|
||||
std::strlen("Chronologic Simulation VCS"))) {
|
||||
m_simulators.vcs = true;
|
||||
} else {
|
||||
printf("%%Warning: %s:%d: Unknown simulator in TestSimulator.h: %s\n", __FILE__,
|
||||
|
@ -168,10 +168,10 @@ void i_string(const char** x) {
|
||||
static int n = 0;
|
||||
printf("i_string %d\n", n);
|
||||
if (n++ % 2 == 0) {
|
||||
if (strcmp(*x, "Hello") != 0) stop();
|
||||
if (std::strcmp(*x, "Hello") != 0) stop();
|
||||
*x = "Good";
|
||||
} else {
|
||||
if (strcmp(*x, "World") != 0) stop();
|
||||
if (std::strcmp(*x, "World") != 0) stop();
|
||||
*x = "Bye";
|
||||
}
|
||||
}
|
||||
@ -296,10 +296,10 @@ void i_string_t(const char** x) {
|
||||
static int n = 0;
|
||||
printf("i_string_t %d\n", n);
|
||||
if (n++ % 2 == 0) {
|
||||
if (strcmp(*x, "World") != 0) stop();
|
||||
if (std::strcmp(*x, "World") != 0) stop();
|
||||
*x = "Bye";
|
||||
} else {
|
||||
if (strcmp(*x, "Hello") != 0) stop();
|
||||
if (std::strcmp(*x, "Hello") != 0) stop();
|
||||
*x = "Good";
|
||||
}
|
||||
}
|
||||
@ -962,10 +962,10 @@ void check_exports() {
|
||||
e_string(&x_string);
|
||||
if ((n % 2) == 0) {
|
||||
if (x_chandle) stop();
|
||||
if (strcmp(x_string, "Hello") != 0) stop();
|
||||
if (std::strcmp(x_string, "Hello") != 0) stop();
|
||||
} else {
|
||||
if (x_chandle) stop();
|
||||
if (strcmp(x_string, "World") != 0) stop();
|
||||
if (std::strcmp(x_string, "World") != 0) stop();
|
||||
}
|
||||
|
||||
x_bit = n % 2;
|
||||
@ -1045,10 +1045,10 @@ void check_exports() {
|
||||
e_string_t(&x_string_t);
|
||||
if ((n % 2) == 0) {
|
||||
if (x_chandle_t != NULL) stop();
|
||||
if (strcmp(x_string_t, "World") != 0) stop();
|
||||
if (std::strcmp(x_string_t, "World") != 0) stop();
|
||||
} else {
|
||||
if (x_chandle_t != NULL) stop();
|
||||
if (strcmp(x_string_t, "Hello") != 0) stop();
|
||||
if (std::strcmp(x_string_t, "Hello") != 0) stop();
|
||||
}
|
||||
|
||||
x_bit_t = n % 2;
|
||||
|
@ -155,9 +155,9 @@ void i_string(const char* i) {
|
||||
static int n = 0;
|
||||
printf("i_string %d\n", n);
|
||||
if (n++ % 2 == 0) {
|
||||
if (strcmp(i, "World") != 0) stop();
|
||||
if (std::strcmp(i, "World") != 0) stop();
|
||||
} else {
|
||||
if (strcmp(i, "Hello") != 0) stop();
|
||||
if (std::strcmp(i, "Hello") != 0) stop();
|
||||
}
|
||||
}
|
||||
|
||||
@ -266,9 +266,9 @@ void i_string_t(const char* i) {
|
||||
static int n = 0;
|
||||
printf("i_string_t %d\n", n);
|
||||
if (n++ % 2 == 0) {
|
||||
if (strcmp(i, "World") != 0) stop();
|
||||
if (std::strcmp(i, "World") != 0) stop();
|
||||
} else {
|
||||
if (strcmp(i, "Hello") != 0) stop();
|
||||
if (std::strcmp(i, "Hello") != 0) stop();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -711,9 +711,9 @@ void check_exports() {
|
||||
|
||||
e_string(&x_string);
|
||||
if ((n % 2) == 0) {
|
||||
if (strcmp(x_string, "Hello") != 0) stop();
|
||||
if (std::strcmp(x_string, "Hello") != 0) stop();
|
||||
} else {
|
||||
if (strcmp(x_string, "World") != 0) stop();
|
||||
if (std::strcmp(x_string, "World") != 0) stop();
|
||||
}
|
||||
|
||||
e_bit(&x_bit);
|
||||
@ -772,9 +772,9 @@ void check_exports() {
|
||||
|
||||
e_string_t(&x_string_t);
|
||||
if ((n % 2) == 0) {
|
||||
if (strcmp(x_string_t, "Hello") != 0) stop();
|
||||
if (std::strcmp(x_string_t, "Hello") != 0) stop();
|
||||
} else {
|
||||
if (strcmp(x_string_t, "World") != 0) stop();
|
||||
if (std::strcmp(x_string_t, "World") != 0) stop();
|
||||
}
|
||||
|
||||
e_bit_t(&x_bit_t);
|
||||
|
@ -115,9 +115,10 @@ int dpix_run_tests() {
|
||||
|
||||
#ifndef CADENCE // Unimplemented; how hard is it?
|
||||
printf("svDpiVersion: %s\n", svDpiVersion());
|
||||
CHECK_RESULT(
|
||||
bool,
|
||||
strcmp(svDpiVersion(), "1800-2005") == 0 || strcmp(svDpiVersion(), "P1800-2005") == 0, 1);
|
||||
CHECK_RESULT(bool,
|
||||
std::strcmp(svDpiVersion(), "1800-2005") == 0
|
||||
|| std::strcmp(svDpiVersion(), "P1800-2005") == 0,
|
||||
1);
|
||||
#endif
|
||||
|
||||
CHECK_RESULT(int, dpix_int123(), 0x123);
|
||||
|
@ -303,9 +303,9 @@ void check_exports() {
|
||||
#endif
|
||||
if (e_chandle()) stop();
|
||||
if ((n % 2) == 0) {
|
||||
if (strcmp(e_string(), "Hello") != 0) stop();
|
||||
if (std::strcmp(e_string(), "Hello") != 0) stop();
|
||||
} else {
|
||||
if (strcmp(e_string(), "World") != 0) stop();
|
||||
if (std::strcmp(e_string(), "World") != 0) stop();
|
||||
}
|
||||
if (e_bit() != (n % 2)) stop();
|
||||
if (e_logic() != !(n % 2)) stop();
|
||||
@ -327,9 +327,9 @@ void check_exports() {
|
||||
#endif
|
||||
if (e_chandle_t()) stop();
|
||||
if ((n % 2) == 0) {
|
||||
if (strcmp(e_string_t(), "Hello") != 0) stop();
|
||||
if (std::strcmp(e_string_t(), "Hello") != 0) stop();
|
||||
} else {
|
||||
if (strcmp(e_string_t(), "World") != 0) stop();
|
||||
if (std::strcmp(e_string_t(), "World") != 0) stop();
|
||||
}
|
||||
if (e_bit_t() != (n % 2)) stop();
|
||||
if (e_logic_t() != !(n % 2)) stop();
|
||||
|
@ -39,5 +39,5 @@ extern int dpii_string(const char* s);
|
||||
|
||||
int dpii_string(const char* s) {
|
||||
printf("dpii_string: %s\n", s);
|
||||
return strlen(s);
|
||||
return std::strlen(s);
|
||||
}
|
||||
|
@ -60,9 +60,9 @@ void mon_scope_name(const char* namep) {
|
||||
#ifdef TEST_VERBOSE
|
||||
VL_PRINTF("- mon_scope_name('%s', \"%s\");\n", modp, namep);
|
||||
#endif
|
||||
if (strcmp(namep, "t.sub"))
|
||||
if (std::strcmp(namep, "t.sub"))
|
||||
vl_fatal(__FILE__, __LINE__, "", (std::string{"Unexp scope name "} + namep).c_str());
|
||||
if (strcmp(modp, "t.sub"))
|
||||
if (std::strcmp(modp, "t.sub"))
|
||||
vl_fatal(__FILE__, __LINE__, "", (std::string{"Unexp dpiscope name "} + modp).c_str());
|
||||
}
|
||||
|
||||
|
@ -15,7 +15,7 @@ int sc_main(int argc, char* argv[]) {
|
||||
|
||||
/* We expect to find clk in here. */
|
||||
for (int i = 0; i < ch.size(); ++i) {
|
||||
if (!strcmp(ch[i]->basename(), "clk")) found = true;
|
||||
if (!std::strcmp(ch[i]->basename(), "clk")) found = true;
|
||||
}
|
||||
|
||||
if (found) {
|
||||
|
@ -100,7 +100,7 @@ int main(int argc, char** argv, char** env) {
|
||||
#endif
|
||||
|
||||
// Clear out the data
|
||||
memset(varData, 0, (varBits + 7) / 8);
|
||||
std::memset(varData, 0, (varBits + 7) / 8);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -71,7 +71,7 @@
|
||||
}
|
||||
|
||||
#define CHECK_RESULT_CSTR(got, exp) \
|
||||
if (strcmp((got), (exp))) { \
|
||||
if (std::strcmp((got), (exp))) { \
|
||||
printf("%%Error: %s:%d: GOT = '%s' EXP = '%s'\n", FILENM, __LINE__, \
|
||||
(got) ? (got) : "<null>", (exp) ? (exp) : "<null>"); \
|
||||
return __LINE__; \
|
||||
|
@ -61,7 +61,7 @@
|
||||
}
|
||||
|
||||
#define CHECK_RESULT_CSTR(got, exp) \
|
||||
if (strcmp((got), (exp))) { \
|
||||
if (std::strcmp((got), (exp))) { \
|
||||
printf("%%Error: %s:%d: GOT = '%s' EXP = '%s'\n", FILENM, __LINE__, \
|
||||
(got) ? (got) : "<null>", (exp) ? (exp) : "<null>"); \
|
||||
return __LINE__; \
|
||||
@ -100,7 +100,7 @@ int mon_check() {
|
||||
CHECK_RESULT_NZ(t_name);
|
||||
|
||||
// Icarus reports the top most module as "top"
|
||||
if (strcmp(t_name, "top") == 0) {
|
||||
if (std::strcmp(t_name, "top") == 0) {
|
||||
it = vpi_iterate(vpiModule, topmod);
|
||||
CHECK_RESULT_NZ(it);
|
||||
CHECK_RESULT(vpi_get(vpiType, it), vpiModule);
|
||||
@ -129,7 +129,7 @@ int mon_check() {
|
||||
CHECK_RESULT_NZ(mod3);
|
||||
|
||||
const char* mod_c_name = vpi_get_str(vpiName, mod3);
|
||||
if (strcmp(mod_c_name, "mod_b") == 0) {
|
||||
if (std::strcmp(mod_c_name, "mod_b") == 0) {
|
||||
// Full visibility in other simulators, skip mod_b
|
||||
TestVpiHandle mod4 = vpi_scan(it3);
|
||||
CHECK_RESULT_NZ(mod4);
|
||||
|
@ -71,7 +71,7 @@
|
||||
}
|
||||
|
||||
#define CHECK_RESULT_CSTR(got, exp) \
|
||||
if (strcmp((got), (exp))) { \
|
||||
if (std::strcmp((got), (exp))) { \
|
||||
printf("%%Error: %s:%d: GOT = '%s' EXP = '%s'\n", FILENM, __LINE__, \
|
||||
(got) ? (got) : "<null>", (exp) ? (exp) : "<null>"); \
|
||||
return __LINE__; \
|
||||
|
@ -66,7 +66,7 @@ unsigned int callback_count = 0;
|
||||
}
|
||||
|
||||
#define CHECK_RESULT_CSTR(got, exp) \
|
||||
if (strcmp((got), (exp))) { \
|
||||
if (std::strcmp((got), (exp))) { \
|
||||
printf("%%Error: %s:%d: GOT = '%s' EXP = '%s'\n", FILENM, __LINE__, \
|
||||
(got) ? (got) : "<null>", (exp) ? (exp) : "<null>"); \
|
||||
return __LINE__; \
|
||||
|
@ -90,7 +90,7 @@ bool verbose = false;
|
||||
}
|
||||
|
||||
#define CHECK_RESULT_CSTR(got, exp) \
|
||||
if (strcmp((got), (exp))) { \
|
||||
if (std::strcmp((got), (exp))) { \
|
||||
printf("%%Error: %s:%d: GOT = '%s' EXP = '%s'\n", FILENM, __LINE__, \
|
||||
((got) != NULL) ? (got) : "<null>", ((exp) != NULL) ? (exp) : "<null>"); \
|
||||
return __LINE__; \
|
||||
@ -117,7 +117,7 @@ int _mon_check_mcd() {
|
||||
}
|
||||
|
||||
status = vpi_mcd_printf(mcd, (PLI_BYTE8*)"hello %s", "vpi_mcd_printf");
|
||||
CHECK_RESULT(status, strlen("hello vpi_mcd_printf"));
|
||||
CHECK_RESULT(status, std::strlen("hello vpi_mcd_printf"));
|
||||
|
||||
status = vpi_mcd_printf(0, (PLI_BYTE8*)"empty");
|
||||
CHECK_RESULT(status, 0);
|
||||
@ -634,7 +634,7 @@ int _mon_check_vlog_info() {
|
||||
CHECK_RESULT_Z(vlog_info.argv[4]);
|
||||
if (TestSimulator::is_verilator()) {
|
||||
CHECK_RESULT_CSTR(vlog_info.product, "Verilator");
|
||||
CHECK_RESULT(strlen(vlog_info.version) > 0, 1);
|
||||
CHECK_RESULT(std::strlen(vlog_info.version) > 0, 1);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user