Open-Source Projects: Issueshttps://forge.ispras.ru/https://forge.ispras.ru/favicon.ico?16490126692016-10-25T10:57:22ZOpen-Source Projects
Redmine MicroTESK - Bug #7628 (Closed): Methods 'dist' and 'range' are not supported in data sectionshttps://forge.ispras.ru/issues/76282016-10-25T10:57:22ZAndrei Tatarnikovandrewt@ispras.ru
<p>Subject. The code below gives error: <code>(MTRubyError) Method 'range' is not available in data sections</code>.</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="n">data</span> <span class="p">{</span>
<span class="n">int32_dist</span> <span class="o">=</span> <span class="n">dist</span><span class="p">(</span><span class="n">range</span><span class="p">(</span><span class="ss">:value</span> <span class="o">=></span> <span class="mi">0</span><span class="p">,</span> <span class="ss">:bias</span> <span class="o">=></span> <span class="mi">25</span><span class="p">),</span>
<span class="n">range</span><span class="p">(</span><span class="ss">:value</span> <span class="o">=></span> <span class="mi">1</span><span class="o">..</span><span class="mi">2</span><span class="p">,</span> <span class="ss">:bias</span> <span class="o">=></span> <span class="mi">25</span><span class="p">),</span>
<span class="n">range</span><span class="p">(</span><span class="ss">:value</span> <span class="o">=></span> <span class="mh">0xffffFFFE</span><span class="o">..</span><span class="mh">0xffffFFFF</span><span class="p">,</span> <span class="ss">:bias</span> <span class="o">=></span> <span class="mi">50</span><span class="p">))</span>
<span class="n">word</span> <span class="n">int32_dist</span><span class="p">.</span><span class="nf">next_value</span><span class="p">,</span>
<span class="n">int32_dist</span><span class="p">.</span><span class="nf">next_value</span><span class="p">,</span>
<span class="n">int32_dist</span><span class="p">.</span><span class="nf">next_value</span>
<span class="p">}</span>
</code></pre>
<p>It must be supported.</p> MicroTESK - Bug #7461 (Closed): Block-level prologue and epilogue must stay prologue and epilogue...https://forge.ispras.ru/issues/74612016-08-11T14:14:15ZAndrei Tatarnikovandrewt@ispras.ru
<p>Block-level prologue and epilogue are destroyed when blocks are merged by a wrapping block.</p>
<p>First of all, they must remain atomic even if there is a muti-level nesting that does complex blending. Second, they must be always attached to the top and to the bottom of the sequence respectively. This will unsure that they will do proper initialization and finalization for sequences when they are mixed. This is needed to be able to mix self-contained sequences that required initialization and finalization.</p>
<p>E.g. the correct result of the code below must be as follows (now it gives a random mix):</p>
<pre>
// Global prologue starts
// Global prologue ends
// Root block prologue starts
// Root block prologue ends
// Sequence 1 prologue starts
// Sequence 1 prologue ends
// Sequence 2 prologue starts
// Sequence 2 prologue ends
and $4, $2, $15
sub $2, $15, $4
or $14, $14, $4
add $4, $22, $14
// Sequence 1 epilogue starts
// Sequence 1 epilogue ends
// Sequence 2 epilogue starts
// Sequence 2 epilogue ends
// Root block epilogue starts
// Root block epilogue ends
// Global epilogue starts
// Global epilogue ends
</pre>
<p>Template code:</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="k">class</span> <span class="nc">PrologueEpilogueTemplate</span> <span class="o"><</span> <span class="no">MiniMipsBaseTemplate</span>
<span class="k">def</span> <span class="nf">run</span>
<span class="n">prologue</span> <span class="p">{</span>
<span class="n">pseudo</span> <span class="s1">'// Global prologue starts'</span>
<span class="n">pseudo</span> <span class="s1">'// Global prologue ends'</span>
<span class="p">}</span>
<span class="n">epilogue</span> <span class="p">{</span>
<span class="n">pseudo</span> <span class="s1">'// Global epilogue starts'</span>
<span class="n">pseudo</span> <span class="s1">'// Global epilogue ends'</span>
<span class="p">}</span>
<span class="n">block</span><span class="p">(</span><span class="ss">combinator: </span><span class="s1">'diagonal'</span><span class="p">,</span> <span class="ss">compositor: </span><span class="s1">'catenation'</span><span class="p">,</span> <span class="ss">obfuscator: </span><span class="s1">'random'</span><span class="p">)</span> <span class="p">{</span>
<span class="n">prologue</span> <span class="p">{</span>
<span class="n">pseudo</span> <span class="s1">'// Root block prologue starts'</span>
<span class="n">pseudo</span> <span class="s1">'// Root block prologue ends'</span>
<span class="p">}</span>
<span class="n">sequence</span> <span class="p">{</span>
<span class="n">prologue</span> <span class="p">{</span>
<span class="n">pseudo</span> <span class="s1">'// Sequence 1 prologue starts'</span>
<span class="n">pseudo</span> <span class="s1">'// Sequence 1 prologue ends'</span>
<span class="p">}</span>
<span class="n">add</span> <span class="n">reg</span><span class="p">(</span><span class="n">_</span><span class="p">),</span> <span class="n">reg</span><span class="p">(</span><span class="n">_</span><span class="p">),</span> <span class="n">reg</span><span class="p">(</span><span class="n">_</span><span class="p">)</span>
<span class="nb">sub</span> <span class="n">reg</span><span class="p">(</span><span class="n">_</span><span class="p">),</span> <span class="n">reg</span><span class="p">(</span><span class="n">_</span><span class="p">),</span> <span class="n">reg</span><span class="p">(</span><span class="n">_</span><span class="p">)</span>
<span class="n">epilogue</span> <span class="p">{</span>
<span class="n">pseudo</span> <span class="s1">'// Sequence 1 epilogue starts'</span>
<span class="n">pseudo</span> <span class="s1">'// Sequence 1 epilogue ends'</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="n">sequence</span> <span class="p">{</span>
<span class="n">prologue</span> <span class="p">{</span>
<span class="n">pseudo</span> <span class="s1">'// Sequence 2 prologue starts'</span>
<span class="n">pseudo</span> <span class="s1">'// Sequence 2 prologue ends'</span>
<span class="p">}</span>
<span class="no">And</span> <span class="n">reg</span><span class="p">(</span><span class="n">_</span><span class="p">),</span> <span class="n">reg</span><span class="p">(</span><span class="n">_</span><span class="p">),</span> <span class="n">reg</span><span class="p">(</span><span class="n">_</span><span class="p">)</span>
<span class="no">Or</span> <span class="n">reg</span><span class="p">(</span><span class="n">_</span><span class="p">),</span> <span class="n">reg</span><span class="p">(</span><span class="n">_</span><span class="p">),</span> <span class="n">reg</span><span class="p">(</span><span class="n">_</span><span class="p">)</span>
<span class="n">epilogue</span> <span class="p">{</span>
<span class="n">pseudo</span> <span class="s1">'// Sequence 2 epilogue starts'</span>
<span class="n">pseudo</span> <span class="s1">'// Sequence 2 epilogue ends'</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="n">epilogue</span> <span class="p">{</span>
<span class="n">pseudo</span> <span class="s1">'// Root block epilogue starts'</span>
<span class="n">pseudo</span> <span class="s1">'// Root block epilogue ends'</span>
<span class="p">}</span>
<span class="p">}.</span><span class="nf">run</span> <span class="mi">10</span>
<span class="k">end</span>
<span class="k">end</span>
</code></pre> MicroTESK - Bug #7385 (Closed): The 'prepare' function does not work with randomly selected regis...https://forge.ispras.ru/issues/73852016-07-11T12:26:17ZAndrei Tatarnikovandrewt@ispras.ru
<p>Code like this:</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="n">prepare</span> <span class="n">reg</span><span class="p">(</span><span class="n">_</span><span class="p">),</span> <span class="mh">0xDEADBEEF</span>
</pre></code>
<p>leads to the following error:</p>
<pre>
Preparator invocation: REG = 0xdeadbeef
********************************************************************************
ATTENTION! An unexpected error has occurred:
java.lang.IllegalStateException: Value is not set.
The program will be terminated. Please contact us at:
microtesk-support@ispras.ru
We are sorry for the inconvenience.
Exception stack:
java.lang.IllegalStateException: Value is not set.
at ru.ispras.microtesk.test.template.UnknownImmediateValue.getValue(ru/ispras/microtesk/test/template/UnknownImmediateValue.java:111)
at ru.ispras.microtesk.test.template.Argument.getImmediateValue(ru/ispras/microtesk/test/template/Argument.java:119)
at ru.ispras.microtesk.test.template.Preparator.isMatch(ru/ispras/microtesk/test/template/Preparator.java:140)
at ru.ispras.microtesk.test.template.PreparatorStore.getPreparator(ru/ispras/microtesk/test/template/PreparatorStore.java:124)
at ru.ispras.microtesk.test.template.PreparatorStore.getPreparator(ru/ispras/microtesk/test/template/PreparatorStore.java:83)
at ru.ispras.microtesk.test.template.Template.addPreparatorCall(ru/ispras/microtesk/test/template/Template.java:633)
at java.lang.reflect.Method.invoke(java/lang/reflect/Method.java:606)
at RUBY.prepare(/home/andrewt/Documents/ISPRAS/src/microtesk/trunk/microtesk/dist/lib/ruby/template.rb:662)
at RUBY.run(/home/andrewt/Documents/ISPRAS/src/microtesk/trunk/microtesk/dist/arch/minimips/templates/euclid.rb:34)
at RUBY.generate(/home/andrewt/Documents/ISPRAS/src/microtesk/trunk/microtesk/dist/lib/ruby/template.rb:961)
at RUBY.main(/home/andrewt/Documents/ISPRAS/src/microtesk/trunk/microtesk/dist/lib/ruby/microtesk.rb:35)
at org.jruby.RubyHash.each(org/jruby/RubyHash.java:1342)
at RUBY.main(/home/andrewt/Documents/ISPRAS/src/microtesk/trunk/microtesk/dist/lib/ruby/microtesk.rb:31)
at RUBY.(root)(/home/andrewt/Documents/ISPRAS/src/microtesk/trunk/microtesk/dist/lib/ruby/microtesk.rb:54)
at ru.ispras.microtesk.test.TestEngine.generate(ru/ispras/microtesk/test/TestEngine.java:153)
at ru.ispras.microtesk.MicroTESK.generate(ru/ispras/microtesk/MicroTESK.java:290)
at ru.ispras.microtesk.MicroTESK.main(ru/ispras/microtesk/MicroTESK.java:72)
</pre></pre> MicroTESK - Bug #6910 (Closed): The is_global flag for data sectionshttps://forge.ispras.ru/issues/69102016-03-01T08:45:34ZAndrei Tatarnikovandrewt@ispras.ru
<p>It should be possible to treat data defined inside of blocks, which are normally treated as test case data, as global data. This is important for code libraries.</p> MicroTESK - Bug #5708 (Closed): MicroTESK build fails: SsaAssembler - symbol Changes is not definedhttps://forge.ispras.ru/issues/57082015-03-13T11:06:24ZAndrei Tatarnikovandrewt@ispras.ru
<p>Artem, please add the Changes class to the SVN source code base. Now the build fails:</p>
<pre>
javac.core:
[mkdir] Created dir: /srv/hudson/jobs/MicroTESK/workspace/bin/microtesk
[javac] Compiling 272 source files to /srv/hudson/jobs/MicroTESK/workspace/bin/microtesk
[javac] /srv/hudson/jobs/MicroTESK/workspace/src/main/java/core/ru/ispras/microtesk/translator/simnml/coverage/ssa/SsaAssembler.java:42: error: cannot find symbol
[javac] Deque<Changes> changesStack;
[javac] ^
[javac] symbol: class Changes
[javac] location: class SsaAssembler
[javac] /srv/hudson/jobs/MicroTESK/workspace/src/main/java/core/ru/ispras/microtesk/translator/simnml/coverage/ssa/SsaAssembler.java:43: error: cannot find symbol
[javac] Changes changes;
[javac] ^
[javac] symbol: class Changes
[javac] location: class SsaAssembler
[javac] /srv/hudson/jobs/MicroTESK/workspace/src/main/java/core/ru/ispras/microtesk/translator/simnml/coverage/ssa/SsaAssembler.java:169: error: cannot find symbol
[javac] private static void join(Changes repo, Collection<GuardedBlock> blocks, Collection<Changes> containers, NodeTransformer xform) {
[javac] ^
[javac] symbol: class Changes
[javac] location: class SsaAssembler
[javac] /srv/hudson/jobs/MicroTESK/workspace/src/main/java/core/ru/ispras/microtesk/translator/simnml/coverage/ssa/SsaAssembler.java:169: error: cannot find symbol
[javac] private static void join(Changes repo, Collection<GuardedBlock> blocks, Collection<Changes> containers, NodeTransformer xform) {
[javac] ^
[javac] symbol: class Changes
[javac] location: class SsaAssembler
[javac] /srv/hudson/jobs/MicroTESK/workspace/src/main/java/core/ru/ispras/microtesk/translator/simnml/coverage/ssa/SsaAssembler.java:185: error: cannot find symbol
[javac] private static Node getJointFallback(String name, Changes master, Changes branch) {
[javac] ^
[javac] symbol: class Changes
[javac] location: class SsaAssembler
[javac] /srv/hudson/jobs/MicroTESK/workspace/src/main/java/core/ru/ispras/microtesk/translator/simnml/coverage/ssa/SsaAssembler.java:185: error: cannot find symbol
[javac] private static Node getJointFallback(String name, Changes master, Changes branch) {
[javac] ^
[javac] symbol: class Changes
[javac] location: class SsaAssembler
[javac] /srv/hudson/jobs/MicroTESK/workspace/src/main/java/core/ru/ispras/microtesk/translator/simnml/coverage/ssa/SsaAssembler.java:62: error: unexpected type
[javac] this.changesStack = new ArrayDeque<>();
[javac] ^
[javac] required: class
[javac] found: <E>ArrayDeque<E>
[javac] where E is a type-variable:
[javac] E extends Object declared in class ArrayDeque
[javac] /srv/hudson/jobs/MicroTESK/workspace/src/main/java/core/ru/ispras/microtesk/translator/simnml/coverage/ssa/SsaAssembler.java:65: error: cannot find symbol
[javac] this.changes = new Changes(changesStore, changesStore);
[javac] ^
[javac] symbol: class Changes
[javac] location: class SsaAssembler
[javac] /srv/hudson/jobs/MicroTESK/workspace/src/main/java/core/ru/ispras/microtesk/translator/simnml/coverage/ssa/SsaAssembler.java:130: error: cannot find symbol
[javac] final Collection<Changes> containers = changes.fork(size);
[javac] ^
[javac] symbol: class Changes
[javac] location: class SsaAssembler
[javac] /srv/hudson/jobs/MicroTESK/workspace/src/main/java/core/ru/ispras/microtesk/translator/simnml/coverage/ssa/SsaAssembler.java:131: error: cannot find symbol
[javac] final Iterator<Changes> rebasers = containers.iterator();
[javac] ^
[javac] symbol: class Changes
[javac] location: class SsaAssembler
[javac] /srv/hudson/jobs/MicroTESK/workspace/src/main/java/core/ru/ispras/microtesk/translator/simnml/coverage/ssa/SsaAssembler.java:172: error: cannot find symbol
[javac] for (Changes diff : containers) {
[javac] ^
[javac] symbol: class Changes
[javac] location: class SsaAssembler
[javac] Note: /srv/hudson/jobs/MicroTESK/workspace/src/main/java/core/ru/ispras/microtesk/translator/simnml/coverage/ssa/SsaAssembler.java uses unchecked or unsafe operations.
[javac] Note: Recompile with -Xlint:unchecked for details.
[javac] 11 errors
BUILD FAILED
/srv/hudson/jobs/MicroTESK/workspace/build.xml:217: Compile failed; see the compiler error output for details.
Total time: 18 seconds
[WARNINGS] Skipping publisher since build result is FAILURE
Recording test results
Finished: FAILURE
</pre> MicroTESK - Task #5673 (Closed): Memory scalability for large memory ranges (address space for 48...https://forge.ispras.ru/issues/56732015-03-03T08:54:58ZAndrei Tatarnikovandrewt@ispras.ru
<p>Verify and review (if needed) the scalability of memory in the simulator for large memory ranges (address space for 48 and 64 bit addresses).</p>
<p>Question:</p>
<blockquote>
<p>o ISPRAS to review and confirm the sparseness of the implementation of memory<br />• Does memory use of generation scale with number of locations touched or the range of (min, max)</p>
</blockquote>
<p>Answer</p>
<blockquote>
<p>In the current implementation of the simulator, memory is divided into 4KB regions which are allocated only when touched (written to).</p>
</blockquote>
<p>Check whether the current way to avoid excessive memory consumption is sufficient. This includes more intensive testing. If not, the algorithm must be reviewed.</p>
<p>Basic ideas on sparse distributed memory:</p>
<p><a class="external" href="http://en.wikipedia.org/wiki/Sparse_distributed_memory">http://en.wikipedia.org/wiki/Sparse_distributed_memory</a></p> MicroTESK - Task #5672 (Closed): Support for UNPREDICTED and UNDEFINEDhttps://forge.ispras.ru/issues/56722015-03-03T08:35:05ZAndrei Tatarnikovandrewt@ispras.ru
<p>Support for handling branches of instruction logic marked as UNPREDICTED and UNDEFINED:</p>
<ol>
<li>In the nML translator (keywords UNPREDICTED or UNDEFINED);</li>
<li>In the coverage extractor (corresponding constraints)</li>
</ol> MicroTESK - Bug #5671 (Rejected): Robustness of test template processing logic must be improvedhttps://forge.ispras.ru/issues/56712015-03-03T08:16:57ZAndrei Tatarnikovandrewt@ispras.ru
<p>The issue: coding mistakes in test templates cause unhandled exceptions.</p>
<p>All such situations (e.g. like in Bug <a class="issue tracker-1 status-6 priority-5 priority-high3 closed" title="Bug: Exception when no test situation is specified. (Rejected)" href="https://forge.ispras.ru/issues/5650">#5650</a>) must be handled in a proper way.<br />That means, MicroTESK should print an understandable error or warning messages and stop processing of the test template or ignore the problematic part (depending on severity of the error).</p>
There two error handling policies to be covered:
<ul>
<li>For errors causes by mistakes in test templates which occurred at first stages of template processing</li>
<li>For errors causes by mistakes in test templates and specifications which occurred during simulation</li>
</ul>
<p>Intensive negative testing of the feature is required.</p> MicroTESK - Bug #5668 (Closed): Issues with large memory addresses (48 and 64 bits) must be fixedhttps://forge.ispras.ru/issues/56682015-03-03T07:50:50ZAndrei Tatarnikovandrewt@ispras.ru
<p>Subj. Top priority.</p>
<p>Basic test LargeAddrTestCase fails marking the current version as unstable.</p>
<p>Also, tests and examples (nML + test templates) are required.</p> MicroTESK - Task #5667 (Closed): Support splitting generated test programs into several source fileshttps://forge.ispras.ru/issues/56672015-03-03T07:44:14ZAndrei Tatarnikovandrewt@ispras.ru
<p>For large tests, it is important to create a sequence of test programs instead of a single source file.<br />Corresponding options should be added.</p>
<p>For example, each test (a template description of a test problem that results in a series of test cases) can be stored in a separate file.</p> MicroTESK - Task #5666 (Closed): Estimate generation speedhttps://forge.ispras.ru/issues/56662015-03-03T07:38:30ZAndrei Tatarnikovandrewt@ispras.ru
<p>Performance benchmarks and corresponding examples are needed.</p> Fortress - Task #5665 (Closed): Support for CVC4https://forge.ispras.ru/issues/56652015-03-03T07:30:20ZAndrei Tatarnikovandrewt@ispras.ru
<p>Implement support for CVC4, a SMT solver that has no limits on its use (see <a class="external" href="http://cvc4.cs.nyu.edu/web/copyright/">http://cvc4.cs.nyu.edu/web/copyright/</a>).</p> MicroTESK - Task #5654 (Closed): [template] User-defined seed for random generationhttps://forge.ispras.ru/issues/56542015-02-24T11:19:25ZAndrei Tatarnikovandrewt@ispras.ru
<p>Need an option to specify a user-defined seed for random generation.</p> MicroTESK - Task #5344 (Closed): Metamodel should provide information on argument types and wheth...https://forge.ispras.ru/issues/53442014-10-13T17:41:49ZAndrei Tatarnikovandrewt@ispras.ru
<p>Метаданные должны предоставлять информацию о типе аргументов (тип значения для immediate values и addressing modes), а также о том, являются ли они входными или выходными (присваиваются ли им значения).</p> MicroTESK - Bug #4109 (Closed): [template] Update needed: Test templates do not work after change...https://forge.ispras.ru/issues/41092013-04-15T06:30:24ZAndrei Tatarnikovandrewt@ispras.ru
<p>У меня не запускаются скрипты. Ревизия последняя. Вот что выводится в консоль:</p>
<p>andrewt@uragan:~/Documents/ISPRAS/src/microtesk/trunk/microtesk> svn update<br />Updating '.':<br />At revision 1177.<br />andrewt@uragan:~/Documents/ISPRAS/src/microtesk/trunk/microtesk> sh generate.sh arm dist/scripts/templates/templates/arm_demo.rb <br />Creating model object<br />Model object created<br />' doesn't exist. File '/home/andrewt/Documents/ISPRAS/src/microtesk/trunk/microtesk/dist/scripts/templates/templates/arm_demo.rb<br />generate.sh: line 3: $'\r': command not found</p>