mirror of
https://github.com/verilator/verilator.git
synced 2025-01-01 04:07:34 +00:00
Fix spelling
This commit is contained in:
parent
6566e853cd
commit
f3ae4b8786
@ -11,7 +11,7 @@
|
||||
|
||||
# Tool names.
|
||||
# These are computed at configuration time, and most are not ?=
|
||||
# to avoid picking up potentilly incorrect Make implicit variables
|
||||
# to avoid picking up potentially incorrect Make implicit variables
|
||||
AR = @AR@
|
||||
CXX = @CXX@
|
||||
LINK = @CXX@
|
||||
@ -154,7 +154,7 @@ ifeq ($(VM_SC),1)
|
||||
LDFLAGS += $(SYSTEMC_CXX_FLAGS) $(addprefix -L, $(SYSTEMC_LIBDIR))
|
||||
SC_LIBS = -lsystemc
|
||||
ifneq ($(wildcard $(SYSTEMC_LIBDIR)/*numeric_bit*),)
|
||||
# Systemc 1.2.1beta
|
||||
# SystemC 1.2.1beta
|
||||
SC_LIBS += -lnumeric_bit -lqt
|
||||
endif
|
||||
endif
|
||||
|
@ -230,12 +230,12 @@ public:
|
||||
|
||||
// Set time units (s/ms, defaults to ns)
|
||||
// Users should not need to call this, as for Verilated models, these
|
||||
// propage from the Verilated default timeunit
|
||||
// propagate from the Verilated default timeunit
|
||||
void set_time_unit(const char* unitp) VL_MT_SAFE { m_sptrace.set_time_unit(unitp); }
|
||||
void set_time_unit(const std::string& unit) VL_MT_SAFE { m_sptrace.set_time_unit(unit); }
|
||||
// Set time resolution (s/ms, defaults to ns)
|
||||
// Users should not need to call this, as for Verilated models, these
|
||||
// propage from the Verilated default timeprecision
|
||||
// propagate from the Verilated default timeprecision
|
||||
void set_time_resolution(const char* unitp) VL_MT_SAFE {
|
||||
m_sptrace.set_time_resolution(unitp);
|
||||
}
|
||||
|
@ -301,12 +301,12 @@ public:
|
||||
|
||||
// Set time units (s/ms, defaults to ns)
|
||||
// Users should not need to call this, as for Verilated models, these
|
||||
// propage from the Verilated default timeunit
|
||||
// propagate from the Verilated default timeunit
|
||||
void set_time_unit(const char* unit) VL_MT_SAFE { m_sptrace.set_time_unit(unit); }
|
||||
void set_time_unit(const std::string& unit) VL_MT_SAFE { m_sptrace.set_time_unit(unit); }
|
||||
// Set time resolution (s/ms, defaults to ns)
|
||||
// Users should not need to call this, as for Verilated models, these
|
||||
// propage from the Verilated default timeprecision
|
||||
// propagate from the Verilated default timeprecision
|
||||
void set_time_resolution(const char* unit) VL_MT_SAFE { m_sptrace.set_time_resolution(unit); }
|
||||
void set_time_resolution(const std::string& unit) VL_MT_SAFE {
|
||||
m_sptrace.set_time_resolution(unit);
|
||||
|
@ -2248,7 +2248,7 @@ public:
|
||||
// statement is unlikely to be taken
|
||||
virtual bool isUnlikely() const { return false; }
|
||||
virtual int instrCount() const { return 0; }
|
||||
// Iff node is identical to anouther node
|
||||
// Iff node is identical to another node
|
||||
virtual bool isSame(const AstNode* samep) const {
|
||||
return type() == samep->type() && same(samep);
|
||||
}
|
||||
|
@ -120,7 +120,7 @@ private:
|
||||
// All class types are castable to each other. If they are of different types,
|
||||
// a compilation error will be thrown, so an explicit cast is required. Types were
|
||||
// already checked by V3Width and dtypep of a condition operator is a type of their
|
||||
// common base class, so both classes can be safetly casted.
|
||||
// common base class, so both classes can be safely casted.
|
||||
const AstClassRefDType* const thenClassDtypep
|
||||
= VN_CAST(nodep->thenp()->dtypep(), ClassRefDType);
|
||||
const AstClassRefDType* const elseClassDtypep
|
||||
|
@ -14,7 +14,7 @@
|
||||
//
|
||||
//*************************************************************************
|
||||
//
|
||||
// Convert and AstModule to a DfgGraph. We proceed by visiting convertable logic blocks (e.g.:
|
||||
// Convert and AstModule to a DfgGraph. We proceed by visiting convertible logic blocks (e.g.:
|
||||
// AstAssignW of appropriate type and with no delays), recursively constructing DfgVertex instances
|
||||
// for the expressions that compose the subject logic block. If all expressions in the current
|
||||
// logic block can be converted, then we delete the logic block (now represented in the DfgGraph),
|
||||
|
@ -95,7 +95,7 @@ class DataflowExtractVisitor final : public VNVisitor {
|
||||
// VISIT methods
|
||||
|
||||
void visit(AstNetlist* nodep) override {
|
||||
// Analyse the whole design
|
||||
// Analyze the whole design
|
||||
iterateChildrenConst(nodep);
|
||||
|
||||
// Replace candidate expressions only reading combinationally driven signals with variables
|
||||
|
@ -66,16 +66,16 @@ struct ReductionToBitwiseImpl {};
|
||||
template <> struct ReductionToBitwiseImpl<DfgRedAnd> { using type = DfgAnd; };
|
||||
template <> struct ReductionToBitwiseImpl<DfgRedOr> { using type = DfgOr; };
|
||||
template <> struct ReductionToBitwiseImpl<DfgRedXor> { using type = DfgXor; };
|
||||
template <typename T_Reductoin>
|
||||
using ReductionToBitwise = typename ReductionToBitwiseImpl<T_Reductoin>::type;
|
||||
template <typename T_Reduction>
|
||||
using ReductionToBitwise = typename ReductionToBitwiseImpl<T_Reduction>::type;
|
||||
|
||||
template <typename T_Bitwise>
|
||||
struct BitwiseToReductionImpl {};
|
||||
template <> struct BitwiseToReductionImpl<DfgAnd> { using type = DfgRedAnd; };
|
||||
template <> struct BitwiseToReductionImpl<DfgOr> { using type = DfgRedOr; };
|
||||
template <> struct BitwiseToReductionImpl<DfgXor> { using type = DfgRedXor; };
|
||||
template <typename T_Reductoin>
|
||||
using BitwiseToReduction = typename BitwiseToReductionImpl<T_Reductoin>::type;
|
||||
template <typename T_Reduction>
|
||||
using BitwiseToReduction = typename BitwiseToReductionImpl<T_Reduction>::type;
|
||||
|
||||
namespace {
|
||||
template<typename Vertex> void foldOp(V3Number& out, const V3Number& src);
|
||||
|
@ -25,7 +25,7 @@
|
||||
// tasks to carry their own frames and as such they require their own
|
||||
// variable scopes.
|
||||
// There are two mechanisms that work together to achieve that. ForkVisitor
|
||||
// moves bodies of forked prcesses into new tasks, which results in them getting their
|
||||
// moves bodies of forked processes into new tasks, which results in them getting their
|
||||
// own scopes. The original statements get replaced with a call to the task which
|
||||
// passes the required variables by value.
|
||||
// The second mechanism, DynScopeVisitor, is designed to handle variables which can't be
|
||||
@ -249,7 +249,7 @@ private:
|
||||
|
||||
//######################################################################
|
||||
// Dynamic scope visitor, creates classes and objects for dynamic scoping of variables and
|
||||
// replaces references to varibles that need a dynamic scope with references to object's
|
||||
// replaces references to variables that need a dynamic scope with references to object's
|
||||
// members
|
||||
|
||||
class DynScopeVisitor final : public VNVisitor {
|
||||
@ -388,7 +388,7 @@ private:
|
||||
}
|
||||
void visit(AstNodeFTaskRef* nodep) override {
|
||||
visit(static_cast<AstNodeExpr*>(nodep));
|
||||
// We are before V3Timing, so unfortnately we need to treat any calls as suspending,
|
||||
// We are before V3Timing, so unfortunately we need to treat any calls as suspending,
|
||||
// just to be safe. This might be improved if we could propagate suspendability
|
||||
// before doing all the other timing-related stuff.
|
||||
m_afterTimingControl = true;
|
||||
|
@ -30,7 +30,7 @@ class AstNetlist;
|
||||
class V3Fork final {
|
||||
public:
|
||||
// Move/copy variables to "anonymous" objects if their lifetime might exceed the scope of a
|
||||
// procedure that declared them. Update the references apropriately.
|
||||
// procedure that declared them. Update the references appropriately.
|
||||
static void makeDynamicScopes(AstNetlist* nodep) VL_MT_DISABLED;
|
||||
// Create tasks out of blocks/statments that can outlive processes in which they were forked.
|
||||
// Return value: number of tasks created
|
||||
|
@ -2537,7 +2537,7 @@ private:
|
||||
// m_curSymp is symbol table of outer expression
|
||||
// m_ds.m_dotSymp is symbol table relative to "."'s above now
|
||||
UASSERT_OBJ(m_ds.m_dotSymp, nodep, "nullptr lookup symbol table");
|
||||
// Generally resolved during Primay, but might be at param time under AstUnlinkedRef
|
||||
// Generally resolved during Primary, but might be at param time under AstUnlinkedRef
|
||||
UASSERT_OBJ(m_statep->forPrimary() || m_statep->forPrearray(), nodep,
|
||||
"ParseRefs should no longer exist");
|
||||
const DotStates lastStates = m_ds;
|
||||
|
@ -223,7 +223,7 @@ class CodeMotionAnalysisVisitor final : public VNVisitorConst {
|
||||
}
|
||||
}
|
||||
|
||||
// Analyse this statement
|
||||
// Analyze this statement
|
||||
analyzeNode(nodep);
|
||||
|
||||
// If there is an enclosing statement, propagate properties upwards
|
||||
@ -261,7 +261,7 @@ class CodeMotionAnalysisVisitor final : public VNVisitorConst {
|
||||
if (!singletonListStart) m_stack.emplace_back(m_hasher);
|
||||
}
|
||||
|
||||
// Analyse node
|
||||
// Analyze node
|
||||
if (AstNodeStmt* const stmtp = VN_CAST(nodep, NodeStmt)) {
|
||||
analyzeStmt(stmtp, /*tryCondMatch:*/ !singletonListStart);
|
||||
} else if (AstVarRef* const vrefp = VN_CAST(nodep, VarRef)) {
|
||||
@ -281,7 +281,7 @@ class CodeMotionAnalysisVisitor final : public VNVisitorConst {
|
||||
}
|
||||
|
||||
public:
|
||||
// Analyse the statement list starting at nodep, filling in stmtProperties.
|
||||
// Analyze the statement list starting at nodep, filling in stmtProperties.
|
||||
static void analyze(AstNode* nodep, StmtPropertiesAllocator& stmtProperties) {
|
||||
CodeMotionAnalysisVisitor{nodep, stmtProperties};
|
||||
}
|
||||
@ -475,7 +475,7 @@ private:
|
||||
AstNode* currp = m_workQueuep->front();
|
||||
m_workQueuep->pop();
|
||||
|
||||
// Analyse sub-tree list for code motion and conditional merging
|
||||
// Analyze sub-tree list for code motion and conditional merging
|
||||
CodeMotionAnalysisVisitor::analyze(currp, stmtProperties);
|
||||
// Perform the code motion within the whole sub-tree list
|
||||
if (v3Global.opt.fMergeCondMotion()) {
|
||||
|
@ -39,7 +39,7 @@
|
||||
|
||||
#define VL_LOCK_SPINS 50000 /// Number of times to spin for a mutex before yielding
|
||||
|
||||
// MutexConfig class that allows to configure how mutex and lockgurads behave
|
||||
// MutexConfig class that allows to configure how mutex and lockguards behave
|
||||
// once configured and locked, it cannot be changed. Configuration and lock needs to be
|
||||
// done before starting any additional threads.
|
||||
class V3MutexConfig final {
|
||||
|
@ -1,6 +1,6 @@
|
||||
// -*- mode: C++; c-file-style: "cc-mode" -*-
|
||||
//*************************************************************************
|
||||
// DESCRIPTION: Verilator: Buitd DPI protected C++ and SV
|
||||
// DESCRIPTION: Verilator: Build DPI protected C++ and SV
|
||||
//
|
||||
// Code available from: https://verilator.org
|
||||
//
|
||||
|
@ -198,7 +198,7 @@ private:
|
||||
AstBasicDType* const basicp = varp->dtypep()->skipRefp()->basicp();
|
||||
UASSERT_OBJ(basicp, varp, "Unexpected randc variable dtype");
|
||||
if (basicp->width() > 32) {
|
||||
varp->v3error("Maxiumum implemented width for randc is 32 bits, "
|
||||
varp->v3error("Maximum implemented width for randc is 32 bits, "
|
||||
<< varp->prettyNameQ() << " is " << basicp->width() << " bits");
|
||||
varp->isRandC(false);
|
||||
varp->isRand(true);
|
||||
|
@ -174,7 +174,7 @@ public:
|
||||
uint64_t digestUInt64(); // Return 64-bits of digest
|
||||
static void selfTest(); // Test this class
|
||||
|
||||
// Inerting hash data
|
||||
// Inserting hash data
|
||||
void insert(const void* datap, size_t length); // Process data into the digest
|
||||
void insert(const string& data) {
|
||||
insert(data.data(), data.length());
|
||||
|
@ -117,7 +117,7 @@ class V3ThreadPool final {
|
||||
if (!m_mutex.try_lock()) {
|
||||
if (m_jobsInProgress != 0) {
|
||||
// ThreadPool shouldn't be destroyed when jobs are running and mutex is locked,
|
||||
// something is wrong. Most likely Verilator is exitting as a result of failed
|
||||
// something is wrong. Most likely Verilator is exiting as a result of failed
|
||||
// assert in critical section. Do nothing, let it exit.
|
||||
return;
|
||||
}
|
||||
@ -169,7 +169,7 @@ public:
|
||||
bool waitIfStopRequested() VL_MT_SAFE VL_EXCLUDES(m_stoppedJobsMutex);
|
||||
|
||||
// Waits for future.
|
||||
// This function can be interupted by exclusive access request.
|
||||
// This function can be interrupted by exclusive access request.
|
||||
// When other thread requested exclusive access to processing,
|
||||
// current thread is stopped and waits until it is resumed.
|
||||
// Returns future result
|
||||
@ -177,7 +177,7 @@ public:
|
||||
static T waitForFuture(std::future<T>& future) VL_MT_SAFE_EXCLUDES(m_mutex);
|
||||
|
||||
// Waits for list of futures
|
||||
// This function can be interupted by exclusive access request.
|
||||
// This function can be interrupted by exclusive access request.
|
||||
// When other thread requested exclusive access to processing,
|
||||
// current thread is stopped and waits until it is resumed.
|
||||
// This function uses function overload instead of template
|
||||
|
@ -1,6 +1,6 @@
|
||||
// -*- mode: C++; c-file-style: "cc-mode" -*-
|
||||
//*************************************************************************
|
||||
// DESCRIPTION: Verilator: Definitions for thread safety checing
|
||||
// DESCRIPTION: Verilator: Definitions for thread safety checking
|
||||
//
|
||||
// Code available from: https://verilator.org
|
||||
//
|
||||
|
@ -259,7 +259,7 @@ private:
|
||||
const size_t pos = path.rfind('.');
|
||||
const std::string name = path.substr(pos == string::npos ? 0 : pos + 1);
|
||||
|
||||
// Compute the type of the scope beign fixed up
|
||||
// Compute the type of the scope being fixed up
|
||||
AstNodeModule* const modp = scopep->aboveCellp()->modp();
|
||||
const VTracePrefixType scopeType = VN_IS(modp, Iface)
|
||||
? VTracePrefixType::SCOPE_INTERFACE
|
||||
@ -427,7 +427,7 @@ private:
|
||||
|
||||
// Assume only references under the same parent scope reference
|
||||
// the same interface.
|
||||
// TODO: This is not actually correct. An inteface can propagate
|
||||
// TODO: This is not actually correct. An interface can propagate
|
||||
// upwards and sideways when passed to a port via a downward
|
||||
// hierarchical reference, which we will miss here.
|
||||
if (!VString::startsWith(refName, parentPath)) continue;
|
||||
|
@ -4318,14 +4318,14 @@ private:
|
||||
return valuep;
|
||||
}
|
||||
|
||||
static void checkEventAssignement(const AstNodeAssign* const asgnp) {
|
||||
static void checkEventAssignment(const AstNodeAssign* const asgnp) {
|
||||
string unsupEvtAsgn;
|
||||
if (!usesDynamicScheduler(asgnp->lhsp())) unsupEvtAsgn = "to";
|
||||
if (asgnp->rhsp()->dtypep()->isEvent() && !usesDynamicScheduler(asgnp->rhsp())) {
|
||||
unsupEvtAsgn += (unsupEvtAsgn.empty() ? "from" : " and from");
|
||||
}
|
||||
if (!unsupEvtAsgn.empty()) {
|
||||
asgnp->v3warn(E_UNSUPPORTED, "Assignement "
|
||||
asgnp->v3warn(E_UNSUPPORTED, "Assignment "
|
||||
<< unsupEvtAsgn
|
||||
<< " event in statically scheduled context.\n"
|
||||
<< asgnp->warnMore()
|
||||
@ -4811,7 +4811,7 @@ private:
|
||||
}
|
||||
|
||||
if (nodep->hasDType() && nodep->dtypep()->isEvent()) {
|
||||
checkEventAssignement(nodep);
|
||||
checkEventAssignment(nodep);
|
||||
v3Global.setAssignsEvents();
|
||||
}
|
||||
}
|
||||
|
@ -690,7 +690,7 @@ static void verilate(const string& argString) {
|
||||
const V3MtDisabledLockGuard mtDisabler{v3MtDisabledLock()};
|
||||
|
||||
UASSERT(v3Global.opt.hierarchical(), "hierarchical must be set");
|
||||
UASSERT(!v3Global.opt.hierChild(), "This must not be a hierarhcical-child run");
|
||||
UASSERT(!v3Global.opt.hierChild(), "This must not be a hierarchical-child run");
|
||||
UASSERT(v3Global.opt.hierBlocks().empty(), "hierarchical-block must not be set");
|
||||
if (v3Global.opt.gmake()) {
|
||||
v3Global.hierPlanp()->writeCommandArgsFiles(false);
|
||||
|
18
src/astgen
18
src/astgen
@ -647,7 +647,7 @@ def read_types(filename, Nodes, prefix):
|
||||
op = node.getOp(n)
|
||||
if op is None:
|
||||
error(lineno,
|
||||
"Alaised op" + str(n) + " is not defined")
|
||||
"Aliased op" + str(n) + " is not defined")
|
||||
else:
|
||||
node.addOp(n, ident, *op[1:])
|
||||
else:
|
||||
@ -700,7 +700,7 @@ def check_types(sortedTypes, prefix, abstractPrefix):
|
||||
hasOrderingError = True
|
||||
pred = expect[node]
|
||||
print(
|
||||
"{file}:{lineno}: %Error: Definition of '{p}{n}' is out of order. Shold be {where}."
|
||||
"{file}:{lineno}: %Error: Definition of '{p}{n}' is out of order. Should be {where}."
|
||||
.format(file=file,
|
||||
lineno=node.lineno,
|
||||
p=prefix,
|
||||
@ -806,7 +806,7 @@ def write_report(filename):
|
||||
|
||||
|
||||
################################################################################
|
||||
# Common code genaration
|
||||
# Common code generation
|
||||
################################################################################
|
||||
|
||||
|
||||
@ -904,7 +904,7 @@ def write_type_tests(prefix, nodeList):
|
||||
|
||||
|
||||
################################################################################
|
||||
# Ast code genaration
|
||||
# Ast code generation
|
||||
################################################################################
|
||||
|
||||
|
||||
@ -1032,7 +1032,7 @@ def write_ast_yystype(filename):
|
||||
|
||||
|
||||
################################################################################
|
||||
# DFG code genaration
|
||||
# DFG code generation
|
||||
################################################################################
|
||||
|
||||
|
||||
@ -1086,7 +1086,7 @@ def write_dfg_auto_classes(filename):
|
||||
fh.write(textwrap.dedent(pattern).format(**fmt))
|
||||
|
||||
for node in DfgVertexList:
|
||||
# Only generate code for automatically derieved leaf nodes
|
||||
# Only generate code for automatically derived leaf nodes
|
||||
if (node.file is not None) or not node.isLeaf:
|
||||
continue
|
||||
|
||||
@ -1106,7 +1106,7 @@ def write_dfg_auto_classes(filename):
|
||||
def write_dfg_ast_to_dfg(filename):
|
||||
with open_file(filename) as fh:
|
||||
for node in DfgVertexList:
|
||||
# Only generate code for automatically derieved leaf nodes
|
||||
# Only generate code for automatically derived leaf nodes
|
||||
if (node.file is not None) or (not node.isLeaf):
|
||||
continue
|
||||
|
||||
@ -1144,7 +1144,7 @@ def write_dfg_ast_to_dfg(filename):
|
||||
def write_dfg_dfg_to_ast(filename):
|
||||
with open_file(filename) as fh:
|
||||
for node in DfgVertexList:
|
||||
# Only generate code for automatically derieved leaf nodes
|
||||
# Only generate code for automatically derived leaf nodes
|
||||
if (node.file is not None) or (not node.isLeaf):
|
||||
continue
|
||||
|
||||
@ -1259,7 +1259,7 @@ for node in AstNodeList:
|
||||
op = node.getOp(n)
|
||||
if op is not None:
|
||||
name, monad, kind = op
|
||||
assert monad == "", "Cannot represnt AstNode as DfgVertex"
|
||||
assert monad == "", "Cannot represent AstNode as DfgVertex"
|
||||
vertex.addOp(n, name, "", "")
|
||||
|
||||
# Compute derived properties over the whole DfgVertex hierarchy
|
||||
|
@ -1,6 +1,6 @@
|
||||
// -*- mode: C++; c-file-style: "cc-mode" -*-
|
||||
//*************************************************************************
|
||||
// DESCRIPTION: Verilator: Bison grammer file
|
||||
// DESCRIPTION: Verilator: Bison grammar file
|
||||
//
|
||||
// Code available from: https://verilator.org
|
||||
//
|
||||
@ -1054,7 +1054,7 @@ BISONPRE_VERSION(3.7,%define api.header.include {"V3ParseBison.h"})
|
||||
%token<fl> yP_SSRIGHTEQ ">>>="
|
||||
|
||||
// [* is not an operator, as "[ * ]" is legal
|
||||
// [= and [-> could be repitition operators, but to match [* we don't add them.
|
||||
// [= and [-> could be repetition operators, but to match [* we don't add them.
|
||||
// '( is not an operator, as "' (" is legal
|
||||
|
||||
//********************
|
||||
@ -2189,7 +2189,7 @@ struct_union_memberList<memberDTypep>: // IEEE: { struct_union_member }
|
||||
;
|
||||
|
||||
struct_union_member<memberDTypep>: // ==IEEE: struct_union_member
|
||||
// // UNSUP random_qualifer not propagagted until have randomize support
|
||||
// // UNSUP random_qualifer not propagated until have randomize support
|
||||
random_qualifierE data_type_or_void
|
||||
/*mid*/ { GRAMMARP->m_memDTypep = $2; } // As a list follows, need to attach this dtype to each member.
|
||||
/*cont*/ list_of_member_decl_assignments ';'
|
||||
@ -5988,7 +5988,7 @@ property_port_itemDirE:
|
||||
|
||||
property_declarationBody<nodep>: // IEEE: part of property_declaration
|
||||
//UNSUP assertion_variable_declarationList property_statement_spec {}
|
||||
// // IEEE-2012: Incorectly hasyCOVER ySEQUENCE then property_spec here.
|
||||
// // IEEE-2012: Incorrectly has yCOVER ySEQUENCE then property_spec here.
|
||||
// // Fixed in IEEE 1800-2017
|
||||
property_spec { $$ = $1; }
|
||||
| property_spec ';' { $$ = $1; }
|
||||
@ -6301,7 +6301,7 @@ cycle_delay_range<nodep>: // IEEE: ==cycle_delay_range
|
||||
BBUNSUP($<fl>1, "Unsupported: ## () cycle delay range expression"); }
|
||||
// // In 1800-2009 ONLY:
|
||||
// // IEEE: yP_POUNDPOUND constant_primary
|
||||
// // UNSUP: This causes a big grammer ambiguity
|
||||
// // UNSUP: This causes a big grammar ambiguity
|
||||
// // as ()'s mismatch between primary and the following statement
|
||||
// // the sv-ac committee has been asked to clarify (Mantis 1901)
|
||||
| yP_POUNDPOUND anyrange
|
||||
@ -6493,7 +6493,7 @@ trans_list<nodep>: // ==IEEE: trans_list
|
||||
|
||||
trans_set<nodep>: // ==IEEE: trans_set
|
||||
trans_range_list { $$ = $1; }
|
||||
// // Note the { => } in the grammer, this is really a list
|
||||
// // Note the { => } in the grammar, this is really a list
|
||||
| trans_set yP_EQGT trans_range_list
|
||||
{ $$ = $1; BBUNSUP($<fl>2, "Unsupported: cover trans set '=>'"); }
|
||||
;
|
||||
@ -6843,7 +6843,7 @@ checker_generate_item<nodep>: // ==IEEE: checker_generate_item
|
||||
|
||||
class_declaration<nodep>: // ==IEEE: part of class_declaration
|
||||
// // IEEE-2012: using this also for interface_class_declaration
|
||||
// // The classExtendsE rule relys on classFront having the
|
||||
// // The classExtendsE rule relies on classFront having the
|
||||
// // new class scope correct via classFront
|
||||
classFront parameter_port_listE classExtendsE classImplementsE ';'
|
||||
/*mid*/ { // Allow resolving types declared in base extends class
|
||||
@ -6881,7 +6881,7 @@ classVirtualE<cbool>:
|
||||
;
|
||||
|
||||
classExtendsE<classExtendsp>: // IEEE: part of class_declaration
|
||||
// // The classExtendsE rule relys on classFront having the
|
||||
// // The classExtendsE rule relies on classFront having the
|
||||
// // new class scope correct via classFront
|
||||
/* empty */ { $$ = nullptr; $<scp>$ = nullptr; }
|
||||
| yEXTENDS classExtendsList { $$ = $2; $<scp>$ = $<scp>2; }
|
||||
|
@ -1,17 +1,17 @@
|
||||
%Error-UNSUPPORTED: t/t_event_copy.v:100:13: Assignement to and from event in statically scheduled context.
|
||||
%Error-UNSUPPORTED: t/t_event_copy.v:100:13: Assignment to and from event in statically scheduled context.
|
||||
: ... note: In instance 't'
|
||||
: Static event scheduling won't be able to handle this.
|
||||
: ... Suggest move the event into a completely dynamic context, eg. a class, and reference it only from such context.
|
||||
100 | e4 = e3;
|
||||
| ^
|
||||
... For error description see https://verilator.org/warn/UNSUPPORTED?v=latest
|
||||
%Error-UNSUPPORTED: t/t_event_copy.v:101:13: Assignement to and from event in statically scheduled context.
|
||||
%Error-UNSUPPORTED: t/t_event_copy.v:101:13: Assignment to and from event in statically scheduled context.
|
||||
: ... note: In instance 't'
|
||||
: Static event scheduling won't be able to handle this.
|
||||
: ... Suggest move the event into a completely dynamic context, eg. a class, and reference it only from such context.
|
||||
101 | e3 = e2;
|
||||
| ^
|
||||
%Error-UNSUPPORTED: t/t_event_copy.v:128:13: Assignement to event in statically scheduled context.
|
||||
%Error-UNSUPPORTED: t/t_event_copy.v:128:13: Assignment to event in statically scheduled context.
|
||||
: ... note: In instance 't'
|
||||
: Static event scheduling won't be able to handle this.
|
||||
: ... Suggest move the event into a completely dynamic context, eg. a class, and reference it only from such context.
|
||||
|
@ -1,4 +1,4 @@
|
||||
%Error: t/t_randc_oversize_bad.v:8:21: Maxiumum implemented width for randc is 32 bits, 'i' is 38 bits
|
||||
%Error: t/t_randc_oversize_bad.v:8:21: Maximum implemented width for randc is 32 bits, 'i' is 38 bits
|
||||
: ... note: In instance 't'
|
||||
8 | randc bit [37:0] i;
|
||||
| ^
|
||||
|
Loading…
Reference in New Issue
Block a user