Open-Source Projects: Issueshttps://forge.ispras.ru/https://forge.ispras.ru/favicon.ico?16490126692019-11-13T12:01:33ZOpen-Source Projects
Redmine Verilog Translator - Bug #9915 (Closed): "Cycle inclusion has been detected in fine <filename>" e...https://forge.ispras.ru/issues/99152019-11-13T12:01:33ZSergey Smolovsmolov@ispras.ru
<p>The tool reports "Cycle inclusion has been detected in fine <filename>" error for the case when "a.v" and "b.v" modules include "c.v" module.</p>
<p>To reproduce the bug, checkout to <a class="changeset" title="hdl-benchmark submodule update Signed-off-by: chudnovmaxim <chudnov@ispras.ru>" href="https://forge.ispras.ru/projects/veritrans/repository/veritrans/revisions/5ca788cdbc460bf393ccdef4b9cd6451f71acdd0">5ca788cd</a> commit and run <strong>ru.ispras.verilog.parser.VerilogQuipTestCase</strong>. It should be fail-free, but it is not.</p>
<p>IMPORTANT: please run all the project tests before push and compare your results with Jenkins!</p> Retrascope - Task #9911 (Closed): merge "*/sample/*TestCase" Java test cases https://forge.ispras.ru/issues/99112019-11-12T08:52:05ZSergey Smolovsmolov@ispras.ru
<p>There are separate "*/sample/*TestCase" Java classes in the project. They contain duplicated code and should be merged the same way as benchmark-related test case collections at Verilog Translator project. See <strong>ru.ispras.verilog.parser.VerilogQuipTestCase</strong> for example.</p> QEMU4V - Bug #9288 (Closed): /target/mips/translate.c:2617:9: error: ‘else’ without a previous ‘if’https://forge.ispras.ru/issues/92882018-09-28T08:44:54ZSergey Smolovsmolov@ispras.ru
<p>Compilation error:</p>
<pre>
/srv/****/workspace/QEMU4V/target/mips/translate.c: In function ‘gen_logic_imm’:
/srv/****/workspace/QEMU4V/target/mips/translate.c:2617:9: error: ‘else’ without a previous ‘if’
else {
^~~~
/srv/****/workspace/QEMU4V/rules.mak:69: recipe for target 'target/mips/translate.o' failed
make[1]: *** [target/mips/translate.o] Error 1
Makefile:481: recipe for target 'subdir-mips-softmmu' failed
make: *** [subdir-mips-softmmu] Error 2
:make FAILED
</pre> Fortress - Bug #7557 (Closed): ConstCastTestCase: java.lang.AssertionError: Calculator failed to ...https://forge.ispras.ru/issues/75572016-09-07T16:54:35ZSergey Smolovsmolov@ispras.ru
<p>Probable bug in calculator, because ConstCastTestCase falls upon calling it.</p>
<pre>
Calculator failed to substitute result:
(AND (EQ (POWER y 3) z))
-> (LET () (AND (EQ (POWER y 3) z)))
-> (AND (EQ (POWER y 3) z))
-> (AND (EQ (POWER y 3) z))
java.lang.AssertionError: Calculator failed to substitute result:
(AND (EQ (POWER y 3) z))
-> (LET () (AND (EQ (POWER y 3) z)))
-> (AND (EQ (POWER y 3) z))
-> (AND (EQ (POWER y 3) z))
at org.junit.Assert.fail(Assert.java:88)
at org.junit.Assert.assertTrue(Assert.java:41)
at ru.ispras.fortress.solver.constraint.GenericSolverTestBase.checkResult(GenericSolverTestBase.java:210)
at ru.ispras.fortress.solver.constraint.GenericSolverTestBase.solveAndCheckResult(GenericSolverTestBase.java:174)
at ru.ispras.fortress.solver.constraint.GenericSolverTestBase.runSolverTests(GenericSolverTestBase.java:110)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
</pre> Retrascope - Task #6367 (Closed): Fortress expressions printing in an SMV formathttps://forge.ispras.ru/issues/63672015-10-25T18:19:41ZSergey Smolovsmolov@ispras.ru
<p>We need utility methods for Fortress expressions printing in an SMV format.</p>
<p>The most wanted use case is:</p>
<p>we have a collection of Fortress expressions: <code>e[1]</code>, <code>e[2]</code>, ... , <code>e[n]</code>;<br />we want to produce and SMV file of the following structure (it is supposed to be so):</p>
<pre>
declarations(e[1])
...
declarations(e[n])
formula(e[1])
...
formula(e[n])
</pre>
<p>where i = 1, ... , n; <code>declarations(e[i])</code> is a list of variable declarations that are used in <code>e[i]</code> expression; <code>formula(e[i])</code> is an SMV equivalent for <code>e[i]</code> expression.</p> Retrascope - Bug #6263 (Closed): Crash when test generation engine elaborates EFSMs from alu.vhd:...https://forge.ispras.ru/issues/62632015-09-05T15:27:50ZSergey Smolovsmolov@ispras.ru
<p>Here is the tool log:</p>
<pre>
2015.09.05 17:34:14.643. INFO: Retrascope is starting
2015.09.05 17:34:14.644. INFO: Running: vhdl-parser
2015.09.05 17:34:14.644. INFO: Options: {args=D:\Bot\projects\retrascope.svn\trunk\retrascope\src\test\vhdl\plasma\alu.vhd --target test --toplevel alu --engine efsm-fate-test-generator --loop-limit 25, vhd=[D:\Bot\projects\retrascope.svn\trunk\retrascope\src\test\vhdl\plasma\alu.vhd]}
2015.09.05 17:34:15.256. INFO: Storing: cfg
2015.09.05 17:34:15.257. INFO: Running: cfg-cgaa-transformer
2015.09.05 17:34:15.257. INFO: Options: {args=D:\Bot\projects\retrascope.svn\trunk\retrascope\src\test\vhdl\plasma\alu.vhd --target test --toplevel alu --engine efsm-fate-test-generator --loop-limit 25, cfg=<cfg>}
2015.09.05 17:34:15.257. INFO: Storing: cgaa
2015.09.05 17:34:15.257. INFO: Running: cgaa-efsm-transformer
2015.09.05 17:34:15.257. INFO: Options: {cgaa=<cgaa>, args=D:\Bot\projects\retrascope.svn\trunk\retrascope\src\test\vhdl\plasma\alu.vhd --target test --toplevel alu --engine efsm-fate-test-generator --loop-limit 25}
2015.09.05 17:34:15.902. INFO: Number of GADD paths: 33
2015.09.05 17:34:15.902. INFO: ======================================
2015.09.05 17:34:15.902. INFO: Clock-like variables: [].
2015.09.05 17:34:15.902. INFO: Transforming the process of module: ALU.
2015.09.05 17:34:15.902. INFO: 1 states are extracted.
2015.09.05 17:34:15.902. INFO: The state-like variables are: [].
2015.09.05 17:34:16.126. INFO: 9 transitions are extracted.
2015.09.05 17:34:16.126. WARNING: No initial state found.
2015.09.05 17:34:16.126. WARNING: The first is chosen as initial: true.
2015.09.05 17:34:16.126. INFO: Clock-like variables: [].
2015.09.05 17:34:16.126. INFO: Transforming the process of module: ALU.
2015.09.05 17:34:16.126. INFO: 1 states are extracted.
2015.09.05 17:34:16.126. INFO: The state-like variables are: [].
2015.09.05 17:34:16.151. INFO: 1 transitions are extracted.
2015.09.05 17:34:16.151. WARNING: No initial state found.
2015.09.05 17:34:16.151. WARNING: The first is chosen as initial: true.
2015.09.05 17:34:16.151. INFO: 2 EFSM(s) are extracted.
2015.09.05 17:34:16.152. INFO: Storing: efsm
2015.09.05 17:34:16.152. INFO: Running: efsm-fate-test-generator
2015.09.05 17:34:16.152. INFO: Options: {efsm=<efsm>, args=D:\Bot\projects\retrascope.svn\trunk\retrascope\src\test\vhdl\plasma\alu.vhd --target test --toplevel alu --engine efsm-fate-test-generator --loop-limit 25}
2015.09.05 17:34:16.152. INFO: EFSM.FATE: sequence length isn't specified. Setting it to the default value: 4
2015.09.05 17:34:16.152. INFO: EFSM.FATE: amount of sequences isn't specified. Setting it to the default value: 3
2015.09.05 17:34:16.181. ERROR: The exception has been encountered: java.lang.IllegalArgumentException
at ru.ispras.fortress.util.InvariantChecks.checkTrue(InvariantChecks.java:41)
at ru.ispras.fortress.util.InvariantChecks.checkNotNull(InvariantChecks.java:69)
at ru.ispras.fortress.expression.NodeBinding.bindVariable(NodeBinding.java:213)
at ru.ispras.retrascope.engine.efsm.simulator.EfsmSimulator.substituteVariables(EfsmSimulator.java:749)
at ru.ispras.retrascope.engine.efsm.simulator.EfsmSimulator.executeAssignment(EfsmSimulator.java:709)
at ru.ispras.retrascope.engine.efsm.simulator.EfsmSimulator.executeAction(EfsmSimulator.java:609)
at ru.ispras.retrascope.engine.efsm.simulator.EfsmSimulator.initialise(EfsmSimulator.java:335)
at ru.ispras.retrascope.engine.efsm.simulator.EfsmSimulator.processEvents(EfsmSimulator.java:289)
at ru.ispras.retrascope.engine.efsm.generator.test.fate.RandomFateGenerator.generateInputVectorRandomly(RandomFateGenerator.java:197)
at ru.ispras.retrascope.engine.efsm.generator.test.fate.RandomFateGenerator$RandomFateSequenceIterator.next(RandomFateGenerator.java:519)
at ru.ispras.retrascope.engine.efsm.generator.test.fate.RandomFateGenerator$RandomFateSequenceIterator.next(RandomFateGenerator.java:504)
at ru.ispras.retrascope.engine.efsm.generator.test.fate.EfsmFateTestGenerator.start(EfsmFateTestGenerator.java:270)
at ru.ispras.retrascope.engine.efsm.generator.test.fate.EfsmFateTestGenerator.start(EfsmFateTestGenerator.java:53)
at ru.ispras.retrascope.basis.Engine.start(Engine.java:200)
at ru.ispras.retrascope.basis.ToolChain.start(ToolChain.java:102)
at ru.ispras.retrascope.basis.Engine.start(Engine.java:200)
at ru.ispras.retrascope.Retrascope$ToolRun.start(Retrascope.java:195)
at ru.ispras.retrascope.Retrascope.main(Retrascope.java:378)
at ru.ispras.retrascope.Retrascope.main(Retrascope.java:395)
at ru.ispras.retrascope.util.VhdlUtilTest.runRetrascope(VhdlUtilTest.java:169)
at ru.ispras.retrascope.util.VhdlUtilTest.runVhdl(VhdlUtilTest.java:81)
at ru.ispras.retrascope.util.HdlUtilTest.runVhdl(HdlUtilTest.java:97)
at ru.ispras.retrascope.engine.efsm.generator.test.fate.EfsmFateTestGeneratorVhdlTestCase.generate(EfsmFateTestGeneratorVhdlTestCase.java:36)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.runTestClass(JUnitTestClassExecuter.java:86)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.execute(JUnitTestClassExecuter.java:49)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassProcessor.processTestClass(JUnitTestClassProcessor.java:64)
at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:50)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.messaging.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
at org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
at com.sun.proxy.$Proxy2.processTestClass(Unknown Source)
at org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:106)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.messaging.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:360)
at org.gradle.internal.concurrent.DefaultExecutorFactory$StoppableExecutorImpl$1.run(DefaultExecutorFactory.java:64)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
2015.09.05 17:34:16.182. INFO: Retrascope is shutting down
</pre> Retrascope - Bug #5719 (Closed): EFSM Test Generator hangs on b11https://forge.ispras.ru/issues/57192015-03-18T07:20:55ZSergey Smolovsmolov@ispras.ru
<p>The EFSM Test Generator that is run at <strong>EfsmTestGeneratorVhdlTestCase</strong> hangs on b11 VHDL design (or this testcase continues more than <strong>8 hours</strong> - it is very suspicious).</p>
<p>The log fragment is attached below.</p> Retrascope - Bug #5680 (Closed): [efsm][generator][test][fate] DirectedFateGenerator.generateSequ...https://forge.ispras.ru/issues/56802015-03-04T08:01:26ZSergey Smolovsmolov@ispras.ru
<p>The error appears upon b07 design processing.</p>
<p>The stack trace:</p>
<p>[stack]<br />java.lang.NullPointerException<br /> at ru.ispras.retrascope.engine.efsm.generator.test.fate.DirectedFateGenerator.generateSequence(DirectedFateGenerator.java:226)<br /> at ru.ispras.retrascope.engine.efsm.generator.test.fate.DirectedFateGenerator.getNextSequenceIterator(DirectedFateGenerator.java:163)<br /> at ru.ispras.retrascope.engine.efsm.generator.test.fate.EfsmFateTestGenerator.start(EfsmFateTestGenerator.java:315)<br /> at ru.ispras.retrascope.engine.efsm.generator.test.fate.EfsmFateTestGenerator.start(EfsmFateTestGenerator.java:52)<br /> at ru.ispras.retrascope.basis.Engine.start(Engine.java:200)<br /> at ru.ispras.retrascope.basis.ToolChain.start(ToolChain.java:106)<br /> at ru.ispras.retrascope.basis.Engine.start(Engine.java:200)<br /> at ru.ispras.retrascope.Retrascope$Run.start(Retrascope.java:116)<br /> at ru.ispras.retrascope.Retrascope.main(Retrascope.java:333)<br /> at ru.ispras.retrascope.Retrascope.main(Retrascope.java:355)<br /> at ru.ispras.retrascope.util.VhdlUtilTest.runRetrascope(VhdlUtilTest.java:148)<br /> at ru.ispras.retrascope.util.VhdlUtilTest.runVhdl(VhdlUtilTest.java:73)<br /> at ru.ispras.retrascope.util.HdlUtilTest.runVhdl(HdlUtilTest.java:94)<br /> at ru.ispras.retrascope.engine.efsm.generator.test.fate.EfsmFateTestGeneratorVhdlTestCase.generate(EfsmFateTestGeneratorVhdlTestCase.java:32)<br />[/stack]</p>
<p>Full log is attached below.</p> Retrascope - Bug #5648 (Rejected): EfsmSimulator.executeAssignment -> Unsupported data type of ra...https://forge.ispras.ru/issues/56482015-02-22T16:18:15ZSergey Smolovsmolov@ispras.ru
<p>Command line arguments: src\test\vhdl\itc99-poli2\b12\b12.vhd --target test --toplevel b12 --engine efsm-fate-test-generator</p>
<pre>
java.lang.IllegalArgumentException: Unsupported data type of ranged variable: (MAP LOGIC_INTEGER LOGIC_INTEGER)
at ru.ispras.retrascope.engine.efsm.simulator.EfsmSimulator.executeAssignment(EfsmSimulator.java:623)
at ru.ispras.retrascope.engine.efsm.simulator.EfsmSimulator.executeAction(EfsmSimulator.java:578)
at ru.ispras.retrascope.engine.efsm.simulator.EfsmSimulator.initialise(EfsmSimulator.java:300)
at ru.ispras.retrascope.engine.efsm.simulator.EfsmSimulator.processEvents(EfsmSimulator.java:259)
at ru.ispras.retrascope.engine.efsm.generator.test.fate.RandomFateGenerator.generateInputVectorRandomly(RandomFateGenerator.java:194)
at ru.ispras.retrascope.engine.efsm.generator.test.fate.RandomFateGenerator$RandomFateSequenceIterator.next(RandomFateGenerator.java:506)
at ru.ispras.retrascope.engine.efsm.generator.test.fate.RandomFateGenerator$RandomFateSequenceIterator.next(RandomFateGenerator.java:490)
at ru.ispras.retrascope.engine.efsm.generator.test.fate.EfsmFateTestGenerator.start(EfsmFateTestGenerator.java:264)
at ru.ispras.retrascope.engine.efsm.generator.test.fate.EfsmFateTestGenerator.start(EfsmFateTestGenerator.java:51)
at ru.ispras.retrascope.basis.Engine.start(Engine.java:199)
at ru.ispras.retrascope.basis.ToolChain.start(ToolChain.java:106)
at ru.ispras.retrascope.basis.Engine.start(Engine.java:199)
at ru.ispras.retrascope.Retrascope$Run.start(Retrascope.java:115)
at ru.ispras.retrascope.Retrascope.main(Retrascope.java:331)
at ru.ispras.retrascope.Retrascope.main(Retrascope.java:353)
</pre> Retrascope - Bug #5608 (Closed): [efsm][generator][test][fate] FATE generator hangs at b03 descri...https://forge.ispras.ru/issues/56082015-02-11T05:58:33ZSergey Smolovsmolov@ispras.ru
<p>The FATE test generator hangs on b03 description. The last part of it's log is the following:</p>
<pre>
[ant-junit] 2015.02.11 01:32:24.946. INFO: RandomFateGenerator.WORK.B03(BEHAV)_0: the transition has been traversed successfully
[ant-junit] 2015.02.11 01:32:24.946. INFO: RandomFateGenerator.WORK.B03(BEHAV)_0: input vector: {events: {posedge of CLOCK}; transaction: {RESET = 0}}
[ant-junit] 2015.02.11 01:32:24.946. INFO: RandomFateGenerator.WORK.B03(BEHAV)_0: current coverage: 0.6% (3 of 467 transitions)
[ant-junit] 2015.02.11 01:32:25.083. INFO: EFSM.Simulator.WORK.B03(BEHAV)_0: processing the events: {posedge of CLOCK}
[ant-junit] 2015.02.11 01:32:25.083. INFO: EFSM.Simulator.WORK.B03(BEHAV)_0: input dump: {REQUEST3 = 0; REQUEST4 = 0; RESET = 0; REQUEST1 = 0; REQUEST2 = 0}
[ant-junit] 2015.02.11 01:32:25.533. INFO: EFSM.Simulator.WORK.B03(BEHAV)_0: traversing the transition {source state: (AND (AND (AND (AND (AND (NOT (EQ STATO 0)) (EQ STATO 1)) (EQ FU1 0)) (EQ FU2 0)) (EQ FU3 0)) (EQ FU4 0)); destination state: (AND (AND (AND (NOT (EQ STATO 0)) (NOT (EQ STATO 1))) (EQ STATO 2)) (NOT (EQ (BVOR (BVOR (BVOR FU1 FU2) FU3) FU4) 1))); guarded action: {{posedge of CLOCK}: {predicate: (AND (AND (NOT (EQ RESET 1)) (NOT (EQ RU1 1)) (NOT (EQ RU2 1)) (NOT (EQ RU3 1)) (NOT (EQ RU4 1))) (NOT (EQ (BVOR (BVOR (BVOR RU1 RU2) RU3) RU4) 1)))}->{{assignment: BLOCK_GRANT_O_0 := GRANT; assignment: GRANT_O := BLOCK_GRANT_O_0; assignment: FU1 := RU1; assignment: FU2 := RU2; assignment: FU3 := RU3; assignment: FU4 := RU4; assignment: STATO := 2}}}}
[ant-junit] 2015.02.11 01:32:25.533. INFO: EFSM.Simulator.WORK.B03(BEHAV)_0: traversing has been finished successfully
[ant-junit] 2015.02.11 01:32:25.533. INFO: EFSM.Simulator.WORK.B03(BEHAV)_0: current state: (AND (AND (AND (NOT (EQ STATO 0)) (NOT (EQ STATO 1))) (EQ STATO 2)) (NOT (EQ (BVOR (BVOR (BVOR FU1 FU2) FU3) FU4) 1)))
[ant-junit] 2015.02.11 01:32:25.533. INFO: EFSM.Simulator.WORK.B03(BEHAV)_0: inner variables' dump: {BLOCK_GRANT_O_0 = 0000; FU3 = 0; FU4 = 0; FU1 = 0; RU1 = 0; GRANT = 0000; FU2 = 0; RU2 = 0; STATO = 2; CODA1 = 000; CODA2 = 000; CODA3 = 000; RU4 = 0; RU3 = 0; CODA0 = 000}
[ant-junit] 2015.02.11 01:32:25.533. INFO: EFSM.Simulator.WORK.B03(BEHAV)_0: output dump: {GRANT_O = 0000}
[ant-junit] 2015.02.11 01:32:25.563. INFO: EFSM.FATE: the vector has been generated successfully: {events: {posedge of CLOCK}; transaction: {RESET = 0}; transaction: {REQUEST3 = 0; REQUEST4 = 0; REQUEST1 = 0; REQUEST2 = 0}}
[ant-junit] 2015.02.11 01:32:25.563. INFO: EFSM.FATE: current coverage: 1.1% (5 of 467 transitions)
[ant-junit] 2015.02.11 01:32:25.563. INFO: EFSM.FATE: the random phase of generation has been finished successfully. Total coverage: 1.1% (5 of 467 transitions)
[ant-junit] 2015.02.11 01:32:25.563. INFO: EFSM.FATE: starting the directed phase of generation
[ant-junit] 2015.02.11 01:32:25.564. INFO: EFSM.FATE: the WORK.B03(BEHAV)_0 EFSM has uncovered transitions. Processing it
[ant-junit] 2015.02.11 01:32:25.565. INFO: EFSM.FATE.DirectedGenerator.WORK.B03(BEHAV)_0: detecting control dependencies
[ant-junit] 2015.02.11 01:32:29.068. INFO: EFSM.FATE.DirectedGenerator.WORK.B03(BEHAV)_0: control dependencies have been processed successfully
[ant-junit] 2015.02.11 01:32:29.068. INFO: EFSM.FATE.DirectedGenerator.WORK.B03(BEHAV)_0: detecting data dependencies
[ant-junit] 2015.02.11 01:34:15.931. INFO: EFSM.FATE.DirectedGenerator.WORK.B03(BEHAV)_0: data dependencies have been processed successfully
[ant-junit] 2015.02.11 01:34:15.931. INFO: EFSM.FATE.DirectedGenerator.WORK.B03(BEHAV)_0: detecting counters
</pre>
<p>The full log of Retrascope tests is attached below.</p> Retrascope - Bug #5510 (Closed): [efsm][generator][test] RandomFateSequenceIterator compilation e...https://forge.ispras.ru/issues/55102014-12-17T07:20:12ZSergey Smolovsmolov@ispras.ru
<pre>
[javac] /src/main/java/ru/ispras/retrascope/engine/efsm/generator/test/fate/RandomFateSequenceIterator.java:25: error: RandomFateSequenceIterator is not abstract and does not override abstract method remove() in Iterator
[javac] public class RandomFateSequenceIterator implements Iterator<Vector> {
[javac] ^
[javac] 1 error
</pre> Fortress - Bug #5461 (Closed): [arrays] Insufficient arrays supporthttps://forge.ispras.ru/issues/54612014-12-04T06:57:34ZSergey Smolovsmolov@ispras.ru
<p>Реализованная в проекте поддержка массивов имеет два существенных ограничения.</p>
<p>1) radix элементов массива должен совпадать с radix индексов;</p>
<p>2) метод getTypeRadix для MAP всегда возвращает 10.</p>
<p>Эти ограничения, в частности, не позволяют создавать массивы битовых векторов (очень распространенный объект в HDL-описаниях), а также получить для них radix элементов массива.</p>
<p>Проблема 1) частично решена ревизией r715 (теперь все массивы имеют radix=10 для индексов - см. блок TODO), что позволяет успешно обрабатывать код HDL-описаний. Если решение устраивает - можно блок TODO удалить. Если есть необходимость создавать массивы, у которых radix индексов не всегда равен 10, то нужно эту возможность учитывать.</p> Fortress - Bug #5453 (Closed): [arrays] Unexpected solver output: " (INSTQUEUE ((as const (Array ...https://forge.ispras.ru/issues/54532014-11-27T15:46:10ZSergey Smolovsmolov@ispras.ru
<p>При анализе HDL-описаний инструментом Retrascope иногда возникает ошибка со следующим логом:</p>
<p>[log]</p>
<p>java.lang.AssertionError: Unexpected solver output: " (INSTQUEUE ((as const (Array Int Int)) 0))" <br /> at ru.ispras.fortress.solver.engine.z3.Z3TextSolver.solve(Z3TextSolver.java:136)<br /> at ru.ispras.fortress.solver.constraint.ConstraintUtils.solve(ConstraintUtils.java:69)<br /> at ru.ispras.fortress.expression.ExprUtils.isSAT(ExprUtils.java:303)<br /> at ru.ispras.fortress.expression.ExprUtils.areCompatible(ExprUtils.java:288)</p>
<p>[/log]</p>
<p>Ошибка плавающая, т.е. пока не удалось так подобрать аргументы программы, чтобы сделать её воспроизводимой.</p> Retrascope - Bug #5263 (Rejected): [efsm][generator][test] EfsmTestGeneratorTestCase -> java.lang...https://forge.ispras.ru/issues/52632014-09-11T10:29:41ZSergey Smolovsmolov@ispras.ru
<p>Тест падает спустя два часа работы с ошибкой:</p>
<p><code>java.lang.OutOfMemoryError: Java heap space</code></p>
<p>Характеристики машины, на которой выполнялся тест:</p>
<p>cpu: AMD Athlon(tm) 64 X2 Dual Core Processor 4200+, 2211 MHz<br />RAM: 2 GB</p> С++TESK Development Environment - Task #3756 (New): Генерация C++ кода для модели сообщенийhttps://forge.ispras.ru/issues/37562012-12-05T15:32:06ZSergey Smolovsmolov@ispras.ru
<p>Небходимо разработать метод генерации C++ кода для модели сообщений.</p>
<p>На вход методу подается несколько объектов класса Adapter. В виде какой структуры данных эти "несколько" будут подаваться - на твое усмотрение. Например, можно взять ту же, что использовалась<br />в инструменте signalsGrouper для хранения набора накликанных "интерфейсов".<br />Т.к. все адаптеры между собой различны и полных совпадений между ними быть не должно, то из самых общих соображений могу предложить использовать java.util.Set.</p>
<p>Суть метода такова: проходим по всем адаптерам и извлекаем из них объекты MessageType и помещаем их в промежуточное хранилище (возможно, тот же Set). При этом необходимо проверять, что в хранилище ещё нет такого же типа сообщений (а при разработке адаптеров для разных интерфейсов вполне реально, что они будут использовать сообщения одного типа)- делать такую проверку лучше всего посредством разработки метода сравнения equals в классе MessageType.</p>
<p><strong>Шаблон для *.h-файла</strong></p>
<pre>
#pragma once
#include <hw/message.hpp>
namespace имя_пространства_имен {
</pre> Про извлечение название пространства имен смотри <a class="issue tracker-2 status-1 priority-4 priority-default" title="Task: namespace name for test system prototypes (New)" href="https://forge.ispras.ru/issues/3755">#3755</a>
<p>Для каждого типа сообщений далее генерируем следующий код:<br /><pre>
MESSAGE(имя_типа_сообщений)
{
public:
имя_типа_сообщений();
virtual ~имя_типа_сообщений();
SUPPORT_CLONE(имя_типа_сообщений);
</pre></p>
<p>Далее для всех полей сообщения данного типа генерируем вызов соответствующего макроса. Макросы бывают следующие:<br />1) Если размер поля больше 64 бит, то нужно использовать<br /> - CPPTESK_DECLARE_FIELD_ARRAY(имя_поля, размер_массива, размер_поля); - если маска не задана<br /> - CPPTESK_DECLARE_MASKED_FIELD_ARRAY(имя_поля, размер_массива, размер_поля, маска_поля); - если маска задана</p>
<p>В силу особенностей реализации параметр размер_поля делаем равным 64, а параметр размер_массива делаем таким, чтобы удовлетворялось следующее неравенство:</p>
<p>capacity <= размер_поля*размер_массива</p>
<p>где capacity - одноименное поле соответствующего экземпляра класса MessageField.</p>
<p>2) Если размер поля меньше, или равен 64 бит, то нужно использовать<br /> - CPPTESK_DECLARE_FIELD(имя_поля, размер_поля);<br /> - CPPTESK_DECLARE_MASKED_FIELD(имя_поля, размер_поля, маска_поля);<br /> - CPPTESK_DECLARE_BIT(имя_поля); - если размер поля равен 1</p>
<pre>
};
}
</pre>
<p>Заголовочный файл называем имя_пространства_имен_msg.h</p>
<p><strong>Шаблон для .cpp файла</strong></p>
<pre>
include <имя_пространства_имен_msg.h>
namespace имя_пространства_имен {
</pre>
<p>Для каждого из типов сообщений генерируем следующий код конструктора и деструктора</p>
<pre>
имя_типа_сообщений::имя_типа_сообщений(void)
{
</pre>
<p>Для всех полей сообщения, у которых incomparable равно false (см. <a class="issue tracker-2 status-5 priority-4 priority-default closed" title="Task: флаг incomparable в полях сообщений (Closed)" href="https://forge.ispras.ru/issues/3754">#3754</a>):<br /><pre>
ADD_FIELD(имя_типа_сообщений::имя_поля);
</pre></p>
<p>Для всех полей сообщения, у которых incomparable равно true (см. <a class="issue tracker-2 status-5 priority-4 priority-default closed" title="Task: флаг incomparable в полях сообщений (Closed)" href="https://forge.ispras.ru/issues/3754">#3754</a>):<br /><pre>
ADD_INCOMPARABLE_FIELD(имя_типа_сообщений::имя_поля);
</pre></p>
<p>Рандомизируем значения полей - только если оно соответствует входному интерфейсу!<br /><pre>
RANDOMIZE_MESSAGE(*this);
}
имя_типа_сообщений::~имя_типа_сообщений(void) {}
}
</pre></p>
<p>Рекомендация - данную задачу стоить решать посредством разработки нескольких относительно простых методов в соответствующих классах, а не одного сложного.</p>