Fix DECLFILENAME warning on .
This commit is contained in:
parent
8b47c4e307
commit
410e6ff203
|
|
@ -1736,13 +1736,14 @@ private:
|
|||
bool m_modTrace:1; // Tracing this module
|
||||
bool m_inLibrary:1; // From a library, no error if not used, never top level
|
||||
bool m_dead:1; // LinkDot believes is dead; will remove in Dead visitors
|
||||
bool m_internal:1; // Internally created
|
||||
int m_level; // 1=top module, 2=cell off top module, ...
|
||||
int m_varNum; // Incrementing variable number
|
||||
public:
|
||||
AstNodeModule(FileLine* fl, const string& name)
|
||||
: AstNode (fl)
|
||||
,m_name(name), m_origName(name)
|
||||
,m_modPublic(false), m_modTrace(false), m_inLibrary(false), m_dead(false)
|
||||
,m_modPublic(false), m_modTrace(false), m_inLibrary(false), m_dead(false), m_internal(false)
|
||||
,m_level(0), m_varNum(0) { }
|
||||
ASTNODE_BASE_FUNCS(NodeModule)
|
||||
virtual void dump(ostream& str);
|
||||
|
|
@ -1769,6 +1770,8 @@ public:
|
|||
bool modTrace() const { return m_modTrace; }
|
||||
void dead(bool flag) { m_dead = flag; }
|
||||
bool dead() const { return m_dead; }
|
||||
void internal(bool flag) { m_internal = flag; }
|
||||
bool internal() const { return m_internal; }
|
||||
};
|
||||
|
||||
//######################################################################
|
||||
|
|
|
|||
|
|
@ -4504,11 +4504,14 @@ struct AstNetlist : public AstNode {
|
|||
// Children: MODULEs & CFILEs
|
||||
private:
|
||||
AstTypeTable* m_typeTablep; // Reference to top type table, for faster lookup
|
||||
AstPackage* m_dollarUnitPkgp;
|
||||
public:
|
||||
AstNetlist() : AstNode(new FileLine("AstRoot",0)) {
|
||||
m_typeTablep = NULL;
|
||||
m_dollarUnitPkgp = NULL;
|
||||
}
|
||||
ASTNODE_NODE_FUNCS(Netlist, NETLIST)
|
||||
virtual bool broken() const { return (m_dollarUnitPkgp && !m_dollarUnitPkgp->brokeExists()); }
|
||||
AstNodeModule* modulesp() const { return op1p()->castNodeModule();} // op1 = List of modules
|
||||
AstNodeModule* topModulep() const { return op1p()->castNodeModule(); } // * = Top module in hierarchy (first one added, for now)
|
||||
void addModulep(AstNodeModule* modulep) { addOp1p(modulep); }
|
||||
|
|
@ -4518,6 +4521,16 @@ public:
|
|||
void addMiscsp(AstNode* nodep) { addOp3p(nodep); }
|
||||
AstTypeTable* typeTablep() { return m_typeTablep; }
|
||||
void addTypeTablep(AstTypeTable* nodep) { m_typeTablep = nodep; addMiscsp(nodep); }
|
||||
AstPackage* dollarUnitPkgp() const { return m_dollarUnitPkgp; }
|
||||
AstPackage* dollarUnitPkgAddp() {
|
||||
if (!m_dollarUnitPkgp) {
|
||||
m_dollarUnitPkgp = new AstPackage(fileline(), AstPackage::dollarUnitName());
|
||||
m_dollarUnitPkgp->inLibrary(true); // packages are always libraries; don't want to make them a "top"
|
||||
m_dollarUnitPkgp->modTrace(false); // may reconsider later
|
||||
m_dollarUnitPkgp->internal(true);
|
||||
addModulep(m_dollarUnitPkgp);
|
||||
}
|
||||
return m_dollarUnitPkgp; }
|
||||
};
|
||||
|
||||
//######################################################################
|
||||
|
|
|
|||
|
|
@ -179,7 +179,8 @@ private:
|
|||
m_modp = nodep;
|
||||
UINFO(2,"Link Module: "<<nodep<<endl);
|
||||
if (nodep->fileline()->filebasenameNoExt() != nodep->prettyName()
|
||||
&& !v3Global.opt.isLibraryFile(nodep->fileline()->filename())) {
|
||||
&& !v3Global.opt.isLibraryFile(nodep->fileline()->filename())
|
||||
&& !nodep->internal()) {
|
||||
// We only complain once per file, otherwise library-like files have a huge mess of warnings
|
||||
if (m_declfnWarned.find(nodep->fileline()->filename()) == m_declfnWarned.end()) {
|
||||
m_declfnWarned.insert(nodep->fileline()->filename());
|
||||
|
|
|
|||
|
|
@ -112,11 +112,8 @@ public:
|
|||
// Find one made earlier?
|
||||
AstPackage* pkgp = SYMP->symRootp()->findIdFlat(AstPackage::dollarUnitName())->nodep()->castPackage();
|
||||
if (!pkgp) {
|
||||
pkgp = new AstPackage(fl, AstPackage::dollarUnitName());
|
||||
pkgp->inLibrary(true); // packages are always libraries; don't want to make them a "top"
|
||||
pkgp->modTrace(false); // may reconsider later
|
||||
pkgp = PARSEP->rootp()->dollarUnitPkgAddp();
|
||||
GRAMMARP->m_modp = pkgp; GRAMMARP->m_modTypeImpNum = 0;
|
||||
PARSEP->rootp()->addModulep(pkgp);
|
||||
SYMP->reinsert(pkgp, SYMP->symRootp()); // Don't push/pop scope as they're global
|
||||
}
|
||||
return pkgp;
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ endfunction
|
|||
|
||||
package p;
|
||||
typedef int package_type_t;
|
||||
integer pi = 123;
|
||||
function [3:0] plusone(input [3:0] i);
|
||||
plusone = i+1;
|
||||
endfunction
|
||||
|
|
@ -38,6 +39,8 @@ module t (/*AUTOARG*/
|
|||
if (unit_plusone(1) !== 2) $stop;
|
||||
if ($unit::unit_plusone(1) !== 2) $stop;
|
||||
if (p::plusone(1) !== 2) $stop;
|
||||
p::pi = 124;
|
||||
if (p::pi !== 124) $stop;
|
||||
|
||||
$write("*-* All Finished *-*\n");
|
||||
$finish;
|
||||
|
|
@ -53,5 +56,6 @@ module t2;
|
|||
initial begin
|
||||
if (plusone(1) !== 2) $stop;
|
||||
if (plustwo(1) !== 3) $stop;
|
||||
if (p::pi !== 123 && p::pi !== 124) $stop; // may race with other initial, so either value
|
||||
end
|
||||
endmodule
|
||||
|
|
|
|||
Loading…
Reference in New Issue