Project

General

Profile

Bug #5597

[efsm] Processing of loops

Added by Mikhail Chupilko over 4 years ago. Updated over 4 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Category:
-
Target version:
Start date:
02/03/2015
Due date:
% Done:

100%

Estimated time:
Detected in build:
svn
Platform:
Published in build:
20150307

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)
    ...


Related issues

Related to Retrascope - Task #5161: [parser][cfg] Обработка циклов Closed07/28/2014

Actions

History

#1

Updated by Mikhail Chupilko over 4 years ago

Command to reach the bug:

src/test/verilog/fifo_mod/fifo.v --target efsm

#2

Updated by Sergey Smolov over 4 years ago

  • Status changed from New to Open
#3

Updated by Sergey Smolov over 4 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).

#4

Updated by Sergey Smolov over 4 years ago

The NodeVariable object keeps 'true' as a name. That's incorrect.

#5

Updated by Sergey Smolov over 4 years ago

  • Status changed from Feedback to Open

The problem will be fixed via Verilog Translator improvement (#5651).

#6

Updated by Sergey Smolov over 4 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.

#7

Updated by Sergey Smolov over 4 years ago

  • Status changed from Resolved to Closed
  • Published in build changed from r1605 to 20150307

Also available in: Atom PDF