Bug #5597
closed[efsm] Processing of loops
100%
Description
Processing of loops seems having been unimplemented in cfg-cgaa transformer yet.
... 2015.02.03 15:34:52.283. WARNING: Loop is found 2015.02.03 15:34:52.283. WARNING: Loop is found 2015.02.03 15:34:52.283. WARNING: Loop is found 2015.02.03 15:34:52.284. INFO: Retrascope is shutting down Exception in thread "main" java.lang.StackOverflowError at java.text.DecimalFormat.getPositivePrefixFieldPositions(DecimalFormat.java:2415) at java.text.DecimalFormat.subformat(DecimalFormat.java:1639) at java.text.DecimalFormat.format(DecimalFormat.java:712) at java.text.DecimalFormat.format(DecimalFormat.java:646) at java.text.SimpleDateFormat.zeroPaddingNumber(SimpleDateFormat.java:1393) at java.text.SimpleDateFormat.subFormat(SimpleDateFormat.java:1332) at java.text.SimpleDateFormat.format(SimpleDateFormat.java:966) at java.text.SimpleDateFormat.format(SimpleDateFormat.java:936) at java.text.DateFormat.format(DateFormat.java:345) at ru.ispras.retrascope.util.Log$LogFormatter.format(Log.java:52) at java.util.logging.StreamHandler.publish(StreamHandler.java:211) at java.util.logging.ConsoleHandler.publish(ConsoleHandler.java:116) at java.util.logging.Logger.log(Logger.java:738) at java.util.logging.Logger.doLog(Logger.java:765) at java.util.logging.Logger.log(Logger.java:788) at ru.ispras.retrascope.engine.cfg.transformer.cgaa.CfgCgaaTransformerBuilder.onCaseBegin(CfgCgaaTransformerBuilder.java:591) at ru.ispras.retrascope.model.cfg.CfgWalker.visitCase(CfgWalker.java:235) at ru.ispras.retrascope.model.cfg.CfgWalker.visitNode(CfgWalker.java:149) at ru.ispras.retrascope.model.cfg.CfgWalker.visit(CfgWalker.java:119) at ru.ispras.retrascope.model.cfg.CfgWalker.visitSwitch(CfgWalker.java:222) at ru.ispras.retrascope.model.cfg.CfgWalker.visitNode(CfgWalker.java:155) at ru.ispras.retrascope.model.cfg.CfgWalker.visit(CfgWalker.java:119) at ru.ispras.retrascope.model.cfg.CfgWalker.visitMerge(CfgWalker.java:229) at ru.ispras.retrascope.model.cfg.CfgWalker.visitNode(CfgWalker.java:152) ...
Updated by Mikhail Chupilko almost 10 years ago
Command to reach the bug:
src/test/verilog/fifo_mod/fifo.v --target efsm
Updated by Sergey Smolov over 9 years ago
- Status changed from Open to Feedback
For 'while(true)' infinite loops the Verilog parser constructs Switch node of CFG, where an expression is stored at the NodeVariable object. This NodeVariable object keeps 'true' value too. The problem is that the CfgLoopBackend tries to check rather loop is infinite by calling ExprUtils.isSAT(Node expr) on Switch expression. Having NodeVariable as input, the method returns 'false' and this is incorrect. Here are the possible variants:
1) The Switch should keep NodeValue object rather than NodeVariable (and it looks much preferable);
2) The Fortress should be able to solve such NodeVariables, that also contain their values (we need to discuss it with Andrei Tatarnikov as Fortress main developer).
Updated by Sergey Smolov over 9 years ago
The NodeVariable object keeps 'true' as a name. That's incorrect.
Updated by Sergey Smolov over 9 years ago
- Status changed from Feedback to Open
The problem will be fixed via Verilog Translator improvement (#5651).
Updated by Sergey Smolov over 9 years ago
- Status changed from Open to Resolved
- % Done changed from 0 to 100
- Published in build set to r1605
The fifo.v
module was slightly modified.
Updated by Sergey Smolov over 9 years ago
- Status changed from Resolved to Closed
- Published in build changed from r1605 to 20150307