Open-Source Projects: Issueshttps://forge.ispras.ru/https://forge.ispras.ru/favicon.ico?16490126692022-11-02T10:34:51ZOpen-Source Projects
Redmine MicroTESK - Task #12027 (New): SMT Solvers: CVC4 -> CVC5https://forge.ispras.ru/issues/120272022-11-02T10:34:51ZAlexander Protsenkoprotsenko@ispras.ru
<p>Обновить используемый в инструменте MicroTESK SMT Solvers CVC4 до CVC5.</p> MicroTESK - Bug #11695 (New): error: cannot find symbol (зависимость mode от op)https://forge.ispras.ru/issues/116952022-06-28T10:27:08ZAlexander Protsenkoprotsenko@ispras.ru
<p>Описание ошибки:<br /><pre>
internal op imm4_syntax_i32(imm: imm4)
init = {}
syntax = format("0x%x", sign_extend(i32, imm))
mode BRANCH_IMM4(imm: int(4)) = imm
init = {
jump_imm4 = imm;
}
syntax = format("%s", imm4_syntax_i32(imm).syntax)
image = format("%s", imm)
</pre></p>
<p>Ошибка:<br /><pre>
mode\BRANCH_IMM4.java:72: error: cannot find symbol
return String.format("%s", new imm4_syntax_i32(imm).text(vars__));
^
symbol: class imm4_syntax_i32
location: class BRANCH_IMM4
</pre></p>
<p>В BRANCH_IMM4.java отсутствует импорт imm4_syntax_i32.</p> MicroTESK - Bug #10832 (New): Parser allows bit vector extraction of array typeshttps://forge.ispras.ru/issues/108322021-05-06T19:07:40ZAlexander Protsenkoprotsenko@ispras.ru
<p>Ошибка:<br /><pre>
Translating to MIR...
********************************************************************************
ATTENTION! An unexpected error has occurred:
java.lang.UnsupportedOperationException: null
The program will be terminated. Please contact us at:
microtesk-support@ispras.ru
We are sorry for the inconvenience.
Exception stack:
java.lang.UnsupportedOperationException
at ru.ispras.microtesk.translator.mir.MirArray.getSize(MirTy.java:213)
at ru.ispras.microtesk.translator.mir.NmlIrTrans$WriteAccess.shiftLeft(NmlIrTrans.java:902)
at ru.ispras.microtesk.translator.mir.NmlIrTrans$WriteAccess.write(NmlIrTrans.java:887)
at ru.ispras.microtesk.translator.mir.NmlIrTrans$WriteAccess.accessMemory(NmlIrTrans.java:873)
at ru.ispras.microtesk.translator.mir.NmlIrTrans.translateAccess(NmlIrTrans.java:696)
at ru.ispras.microtesk.translator.mir.NmlIrTrans.translateWrite(NmlIrTrans.java:666)
at ru.ispras.microtesk.translator.mir.NmlIrTrans.translateAssignment(NmlIrTrans.java:321)
at ru.ispras.microtesk.translator.mir.NmlIrTrans.translate(NmlIrTrans.java:314)
at ru.ispras.microtesk.translator.mir.NmlIrTrans.translate(NmlIrTrans.java:194)
at ru.ispras.microtesk.translator.mir.NmlIrTrans.translate(NmlIrTrans.java:117)
at ru.ispras.microtesk.translator.mir.NmlIrTrans.translate(NmlIrTrans.java:74)
at ru.ispras.microtesk.translator.mir.MirTransHandler.translateIr(MirTransHandler.java:106)
at ru.ispras.microtesk.translator.mir.MirTransHandler.processIr(MirTransHandler.java:69)
at ru.ispras.microtesk.translator.mir.MirTransHandler.processIr(MirTransHandler.java:52)
at ru.ispras.microtesk.translator.Translator.processIr(Translator.java:84)
at ru.ispras.microtesk.translator.nml.NmlTranslator.start(NmlTranslator.java:131)
at ru.ispras.microtesk.translator.Translator.translate(Translator.java:201)
at ru.ispras.microtesk.MicroTESK.translate(MicroTESK.java:150)
at ru.ispras.microtesk.MicroTESK.runTask(MicroTESK.java:142)
at ru.ispras.microtesk.MicroTESK.main(MicroTESK.java:80)
********************************************************************************
</pre></p>
<p>Ошибка возникает на спецификации ВМ от 2021.05.06.</p> MicroTESK - Task #10193 (New): Cache instances configurationhttps://forge.ispras.ru/issues/101932020-04-01T07:23:10ZAlexander Kamkinaskamkin@gmail.com
<p>MMU specifications look like they are written for a single core. That's OK and, I think, it should be so. However, it is unclear how to instantiate the caches and connects them with the cores, the main memory and each other in multi-core settings. There should be a kind of configuration.</p>
<p>The modeling library provides the following mechanisms.</p>
<p><code>CacheUnit</code>'s constructor has the <code>next</code> parameter, which is a reference to the next-level cache instance or the main memory (<code>null</code> if the <code>next</code> attribute is not specified):</p>
<pre><code class="java syntaxhl" data-language="java"><span class="kd">public</span> <span class="nf">CacheUnit</span><span class="o">(...,</span> <span class="kd">final</span> <span class="nc">Buffer</span><span class="o"><?</span> <span class="kd">extends</span> <span class="nc">Struct</span><span class="o"><?>,</span> <span class="no">A</span><span class="o">></span> <span class="n">next</span><span class="o">)</span>
</code></pre>
<p>Also, <code>CacheUnit</code> implements the <code>addNeighbor</code> method that links the cache instance with the same-level ones:</p>
<pre><code class="java syntaxhl" data-language="java"><span class="kd">public</span> <span class="kt">void</span> <span class="nf">addNeighbor</span><span class="o">(</span><span class="kd">final</span> <span class="nc">CacheUnit</span><span class="o"><?,</span> <span class="no">A</span><span class="o">></span> <span class="n">other</span><span class="o">)</span>
</code></pre> MicroTESK - Bug #10061 (New): Buffers are now shared among all processing elementshttps://forge.ispras.ru/issues/100612020-01-23T08:22:05ZAlexander Kamkinaskamkin@gmail.com
<ol>
<li>By default, each buffer (unless it is memory mapped) is local.</li>
<li>To make a buffer global, one should write <code>shared</code> before the buffer declaration.</li>
<li>The memory plugin is not responsible for resetting memory- and register-mapped buffers.</li>
</ol>
<p>Classes to be modified: <code>Model</code>, <code>ProcessingElement</code>, <code>MmuPlugin</code>, etc.</p> MicroTESK - Bug #8696 (New): Parsing an mmu-file with empty read and write definitions causes Ill...https://forge.ispras.ru/issues/86962018-01-30T13:22:00ZAlexander Kamkinaskamkin@gmail.com
<pre>
java.lang.IllegalArgumentException: Failed to determine target buffer for attribute: read
at ru.ispras.fortress.util.InvariantChecks.checkTrue(InvariantChecks.java:53)
at ru.ispras.fortress.util.InvariantChecks.checkNotNull(InvariantChecks.java:109)
at ru.ispras.microtesk.mmu.translator.generation.spec.MemoryControlFlowExplorer.<init>(MemoryControlFlowExplorer.java:49)
at ru.ispras.microtesk.mmu.translator.generation.sim.SimGenerator.processIr(SimGenerator.java:60)
at ru.ispras.microtesk.mmu.translator.generation.sim.SimGenerator.processIr(SimGenerator.java:36)
at ru.ispras.microtesk.translator.Translator.processIr(Translator.java:84)
at ru.ispras.microtesk.mmu.translator.MmuTranslator.start(MmuTranslator.java:136)
at ru.ispras.microtesk.translator.Translator.translate(Translator.java:201)
at ru.ispras.microtesk.MicroTESK.translate(MicroTESK.java:162)
at ru.ispras.microtesk.MicroTESK.runTask(MicroTESK.java:135)
at ru.ispras.microtesk.MicroTESK.main(MicroTESK.java:73)
</pre> MicroTESK - Feature #8587 (New): ISA subsetshttps://forge.ispras.ru/issues/85872017-11-22T10:08:29ZSergey Smolovsmolov@ispras.ru
<p>Several ISA have subsets for instructions. Each subset is marked by the string name.</p>
<p>For example, in RISC-V architecture they are the following: A (atomic memory operation instructions), M (multiply\divide instructions), F (floating-point instructions), etc.</p>
<p>The ISA subset name can be associated with instruction somehow and can be printed in MicroTESK trace when the instruction is simulated.<br />The MicroTESK trace format even has the appropriate field for this information.</p> MicroTESK - Task #8186 (New): Full support for 'struct' in nmlhttps://forge.ispras.ru/issues/81862017-05-02T13:23:52ZAlexander Protsenkoprotsenko@ispras.ru
<pre>
struct mod_STR (
r: card(3),
e: card(3),
m: card(2)
)
var mod[mod_STR]
op mov_1(r: R4, r2: R4)
init = {
...
mod = 0;
mod.m = 0b00;
...
}
image = format("%8s", mod)
op mov_2(r: R4, r2: R4)
init = {
...
mod = 0;
mod.m = 0b11;
...
}
image = format("%8s", mod)
</pre>
<p>Result:<br /><pre>
Warning: Group MovOp contains two items mov_1 and mov_2 with the same opcode 00000000
</pre></p>
<p>But:<br />mov_1 -> mod.m = 0b00;<br />mov_2 -> mod.m = 0b11;</p> MicroTESK - Bug #8060 (New): Attributes image and syntax and static instanceshttps://forge.ispras.ru/issues/80602017-04-13T10:48:57ZAndrei Tatarnikovandrewt@ispras.ru
<p>The following construct is illegal:<br /><pre>image = slt(rd, X(0), rs).image</pre><br />nML translator forces to write it like this:<br /><pre>image = format("%s", slt(rd, X(0), rs).image)</pre><br />This is inconvenient and redundant.</p>
<p>Constructs like in the first example must be supported.</p> MicroTESK - Bug #7401 (New): int_to_float is not supported for constant expressionshttps://forge.ispras.ru/issues/74012016-07-14T10:20:38ZAlexander Protsenkoprotsenko@ispras.ru
<p>Error:<br /><pre>
641:18 ERROR (SEMANTIC): "int_to_float is not supported for constant expressions."
641:18 ERROR (SEMANTIC): "Failed to recognize the grammar structure. It will be ignored: 'int_to_float(FLOAT32,coerce(WORD,1))'."
</pre></p>
<p>Code:<br /><pre>
temp_fp_s = int_to_float(FLOAT32, coerce(WORD, 1));
</pre></p> MicroTESK - Bug #6380 (New): Possibility to specify initial values for registershttps://forge.ispras.ru/issues/63802015-10-29T12:24:31ZAndrei Tatarnikovandrewt@ispras.ru
<p>Possibility to specify initial values for registers must be provided in nML:</p>
<pre>reg R[1, card(32)] initial = 100</pre> MicroTESK - Task #6065 (New): Handling marks with exported symbols in the coverage extractorhttps://forge.ispras.ru/issues/60652015-06-19T03:54:09ZAlexander Kamkinaskamkin@gmail.com
<ol>
<li>External variables should be stored in the internal representation.</li>
<li>There should be a possibility to write constrains over external variables.</li>
</ol> TestBase - Task #5725 (New): Meta-information provider requiredhttps://forge.ispras.ru/issues/57252015-03-20T03:58:07ZAlexander Kamkinaskamkin@gmail.com
<p>TestBase should provide information on available test data constraints and generators.</p> Fortress - Task #4713 (New): SMT-LIB structureshttps://forge.ispras.ru/issues/47132014-03-17T06:59:53ZSergey Smolovsmolov@ispras.ru
<p>Реализовать поддержку структур (record) как типа данных языка SMT-LIB.</p> Fortress - Task #4523 (New): Implementing a solver for simple constraintshttps://forge.ispras.ru/issues/45232013-10-03T04:32:56ZAlexander Kamkinaskamkin@gmail.com
<p>Цель - генерация рандомизированных данных, удовлетворяющих несложным ограничениям (constrained random generation).</p>
<ol>
<li>Определить и описать в Wiki класс рассматриваемых ограничений.</li>
<li>Реализовать солвер (постараться добиться равномерного распределение данных, удовлетворяющих ограничениям).</li>
<li>Протестировать солвер (не берется за сложные ограничения, решает простые ограничения, решает их правильно, распределение данных близко к равномерному).</li>
</ol>