mirror of https://github.com/YosysHQ/yosys.git
commit
f3fc58db7e
|
|
@ -50,7 +50,6 @@ block()
|
||||||
install(TARGETS slang_driver RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
install(TARGETS slang_driver RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||||
install(TARGETS slang_hier RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
install(TARGETS slang_hier RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||||
install(TARGETS slang_reflect RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
install(TARGETS slang_reflect RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||||
install(TARGETS rewriter RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
|
||||||
install(TARGETS slang_tidy RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
install(TARGETS slang_tidy RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
|
||||||
|
|
@ -1032,7 +1032,7 @@ struct OptDffWorker
|
||||||
uint16_t flags;
|
uint16_t flags;
|
||||||
|
|
||||||
bool operator==(const SigKey &o) const {
|
bool operator==(const SigKey &o) const {
|
||||||
return flags == o.flags && clk == o.clk && ce == o.ce && srst == o.srst && arst == o.arst
|
return flags == o.flags && clk == o.clk && ce == o.ce && srst == o.srst && arst == o.arst
|
||||||
&& aload == o.aload && clr == o.clr && set == o.set && cell_type == o.cell_type;
|
&& aload == o.aload && clr == o.clr && set == o.set && cell_type == o.cell_type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1076,7 +1076,7 @@ struct OptDffWorker
|
||||||
if (ff.has_arst && !is_def(ff.val_arst[i])) continue;
|
if (ff.has_arst && !is_def(ff.val_arst[i])) continue;
|
||||||
|
|
||||||
// Class members are assumed equal in the current cycle and proven equal in the next, which needs
|
// Class members are assumed equal in the current cycle and proven equal in the next, which needs
|
||||||
// a base case anchoring them to a common known value
|
// a base case anchoring them to a common known value
|
||||||
bool def_init = is_def(ff.val_init[i]);
|
bool def_init = is_def(ff.val_init[i]);
|
||||||
if (!def_init && !ff.has_srst && !ff.has_arst)
|
if (!def_init && !ff.has_srst && !ff.has_arst)
|
||||||
continue;
|
continue;
|
||||||
|
|
@ -1208,7 +1208,7 @@ struct OptDffWorker
|
||||||
|
|
||||||
// Build the next-state function n_lit[idx] of every candidate bit by
|
// Build the next-state function n_lit[idx] of every candidate bit by
|
||||||
// folding the FF's control logic on top of the D input (-> next value)
|
// folding the FF's control logic on top of the D input (-> next value)
|
||||||
|
|
||||||
// Two bits are equivalent if their next states always agree whenever their
|
// Two bits are equivalent if their next states always agree whenever their
|
||||||
// current states (and those of every other candidate pair) agree
|
// current states (and those of every other candidate pair) agree
|
||||||
for (auto &cls : classes) {
|
for (auto &cls : classes) {
|
||||||
|
|
@ -1249,7 +1249,7 @@ struct OptDffWorker
|
||||||
|
|
||||||
// Assume the induction hypo (that every current class is internally equal in the present cycle), and try
|
// Assume the induction hypo (that every current class is internally equal in the present cycle), and try
|
||||||
// to prove that the members of each class therefore also agree in the next cycle
|
// to prove that the members of each class therefore also agree in the next cycle
|
||||||
|
|
||||||
// A class survives only if no counterexample exists under that hypo, so combined with the common init/reset
|
// A class survives only if no counterexample exists under that hypo, so combined with the common init/reset
|
||||||
// value that every class shares, this makes the equality an inductive invariant -> bits are eq and safe to merge
|
// value that every class shares, this makes the equality an inductive invariant -> bits are eq and safe to merge
|
||||||
std::vector<int> worklist;
|
std::vector<int> worklist;
|
||||||
|
|
|
||||||
|
|
@ -62,4 +62,3 @@ assign X = AA ^ BB;
|
||||||
|
|
||||||
endmodule
|
endmodule
|
||||||
`endif
|
`endif
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue