Compare commits

..

1 Commits

Author SHA1 Message Date
George Rennie a9138f6015
Merge 33d5138673 into 98b4affc4a 2024-11-26 06:03:02 -07:00
10 changed files with 15 additions and 51 deletions

View File

@ -32,9 +32,9 @@ jobs:
# oldest supported # oldest supported
- 'clang-14' - 'clang-14'
- 'gcc-10' - 'gcc-10'
# newest, make sure to update maximum standard step to match # newest
- 'clang-18' - 'clang'
- 'gcc-13' - 'gcc'
include: include:
# macOS # macOS
- os: macos-13 - os: macos-13
@ -72,7 +72,7 @@ jobs:
# maximum standard, only on newest compilers # maximum standard, only on newest compilers
- name: Build C++20 - name: Build C++20
if: ${{ matrix.compiler == 'clang-18' || matrix.compiler == 'gcc-13' }} if: ${{ matrix.compiler == 'clang' || matrix.compiler == 'gcc'}}
shell: bash shell: bash
run: | run: |
make config-$CC_SHORT make config-$CC_SHORT

View File

@ -155,7 +155,7 @@ ifeq ($(OS), Haiku)
CXXFLAGS += -D_DEFAULT_SOURCE CXXFLAGS += -D_DEFAULT_SOURCE
endif endif
YOSYS_VER := 0.47+135 YOSYS_VER := 0.47+121
# Note: We arrange for .gitcommit to contain the (short) commit hash in # Note: We arrange for .gitcommit to contain the (short) commit hash in
# tarballs generated with git-archive(1) using .gitattributes. The git repo # tarballs generated with git-archive(1) using .gitattributes. The git repo

View File

@ -242,7 +242,7 @@ Processes
Declares a process, with zero or more attributes, with the given identifier in Declares a process, with zero or more attributes, with the given identifier in
the enclosing module. The body of a process consists of zero or more the enclosing module. The body of a process consists of zero or more
assignments followed by zero or more switches and zero or more syncs. assignments, exactly one switch, and zero or more syncs.
See :ref:`sec:rtlil_process` for an overview of processes. See :ref:`sec:rtlil_process` for an overview of processes.
@ -250,7 +250,7 @@ See :ref:`sec:rtlil_process` for an overview of processes.
<process> ::= <attr-stmt>* <proc-stmt> <process-body> <proc-end-stmt> <process> ::= <attr-stmt>* <proc-stmt> <process-body> <proc-end-stmt>
<proc-stmt> ::= process <id> <eol> <proc-stmt> ::= process <id> <eol>
<process-body> ::= <assign-stmt>* <switch>* <sync>* <process-body> ::= <assign-stmt>* <switch>? <assign-stmt>* <sync>*
<assign-stmt> ::= assign <dest-sigspec> <src-sigspec> <eol> <assign-stmt> ::= assign <dest-sigspec> <src-sigspec> <eol>
<dest-sigspec> ::= <sigspec> <dest-sigspec> ::= <sigspec>
<src-sigspec> ::= <sigspec> <src-sigspec> ::= <sigspec>
@ -262,8 +262,8 @@ Switches
Switches test a signal for equality against a list of cases. Each case specifies Switches test a signal for equality against a list of cases. Each case specifies
a comma-separated list of signals to check against. If there are no signals in a comma-separated list of signals to check against. If there are no signals in
the list, then the case is the default case. The body of a case consists of zero the list, then the case is the default case. The body of a case consists of zero
or more assignments followed by zero or more switches. Both switches and cases or more switches and assignments. Both switches and cases may have zero or more
may have zero or more attributes. attributes.
.. code:: BNF .. code:: BNF
@ -272,7 +272,7 @@ may have zero or more attributes.
<case> ::= <attr-stmt>* <case-stmt> <case-body> <case> ::= <attr-stmt>* <case-stmt> <case-body>
<case-stmt> ::= case <compare>? <eol> <case-stmt> ::= case <compare>? <eol>
<compare> ::= <sigspec> (, <sigspec>)* <compare> ::= <sigspec> (, <sigspec>)*
<case-body> ::= <assign-stmt>* <switch>* <case-body> ::= (<switch> | <assign-stmt>)*
<switch-end-stmt> ::= end <eol> <switch-end-stmt> ::= end <eol>
Syncs Syncs

View File

@ -56,9 +56,6 @@ if os.getenv("READTHEDOCS"):
else: else:
release = yosys_ver release = yosys_ver
todo_include_todos = False todo_include_todos = False
elif os.getenv("YOSYS_DOCS_RELEASE") is not None:
release = yosys_ver
todo_include_todos = False
else: else:
release = yosys_ver release = yosys_ver
todo_include_todos = True todo_include_todos = True
@ -90,9 +87,5 @@ def setup(app: Sphinx) -> None:
from util.RtlilLexer import RtlilLexer from util.RtlilLexer import RtlilLexer
app.add_lexer("RTLIL", RtlilLexer) app.add_lexer("RTLIL", RtlilLexer)
try: from furo_ys.lexers.YoscryptLexer import YoscryptLexer
from furo_ys.lexers.YoscryptLexer import YoscryptLexer app.add_lexer("yoscrypt", YoscryptLexer)
app.add_lexer("yoscrypt", YoscryptLexer)
except ModuleNotFoundError:
from pygments.lexers.special import TextLexer
app.add_lexer("yoscrypt", TextLexer)

View File

@ -31,11 +31,6 @@ void rtlil_frontend_yyerror(char const *s)
YOSYS_NAMESPACE_PREFIX log_error("Parser error in line %d: %s\n", rtlil_frontend_yyget_lineno(), s); YOSYS_NAMESPACE_PREFIX log_error("Parser error in line %d: %s\n", rtlil_frontend_yyget_lineno(), s);
} }
void rtlil_frontend_yywarning(char const *s)
{
YOSYS_NAMESPACE_PREFIX log_warning("In line %d: %s\n", rtlil_frontend_yyget_lineno(), s);
}
YOSYS_NAMESPACE_BEGIN YOSYS_NAMESPACE_BEGIN
struct RTLILFrontend : public Frontend { struct RTLILFrontend : public Frontend {

View File

@ -42,7 +42,6 @@ YOSYS_NAMESPACE_END
extern int rtlil_frontend_yydebug; extern int rtlil_frontend_yydebug;
int rtlil_frontend_yylex(void); int rtlil_frontend_yylex(void);
void rtlil_frontend_yyerror(char const *s); void rtlil_frontend_yyerror(char const *s);
void rtlil_frontend_yywarning(char const *s);
void rtlil_frontend_yyrestart(FILE *f); void rtlil_frontend_yyrestart(FILE *f);
int rtlil_frontend_yyparse(void); int rtlil_frontend_yyparse(void);
int rtlil_frontend_yylex_destroy(void); int rtlil_frontend_yylex_destroy(void);

View File

@ -344,16 +344,6 @@ assign_stmt:
TOK_ASSIGN sigspec sigspec EOL { TOK_ASSIGN sigspec sigspec EOL {
if (attrbuf.size() != 0) if (attrbuf.size() != 0)
rtlil_frontend_yyerror("dangling attribute"); rtlil_frontend_yyerror("dangling attribute");
// See https://github.com/YosysHQ/yosys/pull/4765 for discussion on this
// warning
if (!switch_stack.back()->empty()) {
rtlil_frontend_yywarning(
"case rule assign statements after switch statements may cause unexpected behaviour. "
"The assign statement is reordered to come before all switch statements."
);
}
case_stack.back()->actions.push_back(RTLIL::SigSig(*$2, *$3)); case_stack.back()->actions.push_back(RTLIL::SigSig(*$2, *$3));
delete $2; delete $2;
delete $3; delete $3;

View File

@ -364,7 +364,7 @@ public:
unsigned int hash() const unsigned int hash() const
{ {
unsigned int inner = 0; unsigned int inner;
switch (type_) switch (type_)
{ {
case DriveType::NONE: case DriveType::NONE:
@ -385,9 +385,6 @@ public:
case DriveType::MULTIPLE: case DriveType::MULTIPLE:
inner = multiple_.hash(); inner = multiple_.hash();
break; break;
default:
log_abort();
break;
} }
return mkhash((unsigned int)type_, inner); return mkhash((unsigned int)type_, inner);
} }
@ -915,7 +912,7 @@ public:
unsigned int hash() const unsigned int hash() const
{ {
unsigned int inner = 0; unsigned int inner;
switch (type_) switch (type_)
{ {
case DriveType::NONE: case DriveType::NONE:
@ -936,9 +933,6 @@ public:
case DriveType::MULTIPLE: case DriveType::MULTIPLE:
inner = multiple_.hash(); inner = multiple_.hash();
break; break;
default:
log_abort();
break;
} }
return mkhash((unsigned int)type_, inner); return mkhash((unsigned int)type_, inner);
} }

View File

@ -814,7 +814,6 @@ struct RTLIL::AttrObject
void set_bool_attribute(const RTLIL::IdString &id, bool value=true); void set_bool_attribute(const RTLIL::IdString &id, bool value=true);
bool get_bool_attribute(const RTLIL::IdString &id) const; bool get_bool_attribute(const RTLIL::IdString &id) const;
[[deprecated("Use Module::get_blackbox_attribute() instead.")]]
bool get_blackbox_attribute(bool ignore_wb=false) const { bool get_blackbox_attribute(bool ignore_wb=false) const {
return get_bool_attribute(ID::blackbox) || (!ignore_wb && get_bool_attribute(ID::whitebox)); return get_bool_attribute(ID::blackbox) || (!ignore_wb && get_bool_attribute(ID::whitebox));
} }
@ -1292,10 +1291,6 @@ public:
virtual void optimize(); virtual void optimize();
virtual void makeblackbox(); virtual void makeblackbox();
bool get_blackbox_attribute(bool ignore_wb=false) const {
return get_bool_attribute(ID::blackbox) || (!ignore_wb && get_bool_attribute(ID::whitebox));
}
void connect(const RTLIL::SigSig &conn); void connect(const RTLIL::SigSig &conn);
void connect(const RTLIL::SigSpec &lhs, const RTLIL::SigSpec &rhs); void connect(const RTLIL::SigSpec &lhs, const RTLIL::SigSpec &rhs);
void new_connections(const std::vector<RTLIL::SigSig> &new_conn); void new_connections(const std::vector<RTLIL::SigSig> &new_conn);

View File

@ -1003,10 +1003,8 @@ struct HierarchyPass : public Pass {
if (top_mod == nullptr) if (top_mod == nullptr)
for (auto mod : design->modules()) for (auto mod : design->modules())
if (mod->get_bool_attribute(ID::top)) { if (mod->get_bool_attribute(ID::top))
log("Attribute `top' found on module `%s'. Setting top module to %s.\n", log_id(mod), log_id(mod));
top_mod = mod; top_mod = mod;
}
if (top_mod == nullptr) if (top_mod == nullptr)
{ {