Open-Source Projects: Issueshttps://forge.ispras.ru/https://forge.ispras.ru/favicon.ico?16490126692016-11-28T13:25:42ZOpen-Source Projects
Redmine TestBase - Bug #7759 (Closed): Avoid using lambda functionshttps://forge.ispras.ru/issues/77592016-11-28T13:25:42ZAndrei Tatarnikovandrewt@ispras.ru
<p>Использование lambda-функций (<a href="http://forge.ispras.ru/projects/testbase/repository/revisions/50f3ae809bbfc504fc7745eee8b626a5e7f4b019/entry/src/main/java/ru/ispras/testbase/storage/SQLiteStorage/db/dao/FormulaDAO.java" class="external">как здесь</a>) в реализации нежелательно. Они не поддерживаются в Java 1.7, которая сейчас используется для сборки всех проектов.</p> MicroTESK - Bug #6194 (Rejected): Automated extraction of addressable unit sizehttps://forge.ispras.ru/issues/61942015-07-13T07:36:34ZAndrei Tatarnikovandrewt@ispras.ru
<p>Need to automatically extract size of addressable unit (by default, byte) from ISA specifications.</p> Fortress - Task #5819 (Closed): Calculator for bit vectorshttps://forge.ispras.ru/issues/58192015-04-09T13:18:19ZAndrei Tatarnikovandrewt@ispras.ru
<p>Subj. must be implemented.</p> Fortress - Bug #5775 (Closed): BitVector.longValue returns incorrect valueshttps://forge.ispras.ru/issues/57752015-03-27T09:00:32ZAndrei Tatarnikovandrewt@ispras.ru
<p>Subject. The code blow fails:</p>
<pre><code class="java syntaxhl" data-language="java"><span class="kd">final</span> <span class="nc">BitVector</span> <span class="n">bv1</span> <span class="o">=</span> <span class="nc">BitVector</span><span class="o">.</span><span class="na">valueOf</span><span class="o">(</span><span class="mh">0x00000000000A0000</span><span class="no">L</span><span class="o">,</span> <span class="mi">64</span><span class="o">);</span>
<span class="nc">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="n">bv1</span><span class="o">.</span><span class="na">toHexString</span><span class="o">());</span>
<span class="nc">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="nc">Long</span><span class="o">.</span><span class="na">toHexString</span><span class="o">(</span><span class="n">bv1</span><span class="o">.</span><span class="na">longValue</span><span class="o">()));</span>
<span class="n">assertEquals</span><span class="o">(</span><span class="mh">0x00000000000A0000</span><span class="no">L</span><span class="o">,</span> <span class="n">bv1</span><span class="o">.</span><span class="na">longValue</span><span class="o">());</span>
<span class="kd">final</span> <span class="nc">BitVector</span> <span class="n">bv2</span> <span class="o">=</span> <span class="nc">BitVector</span><span class="o">.</span><span class="na">valueOf</span><span class="o">(</span><span class="mh">0xFFFFFFFFFFF5FFFF</span><span class="no">L</span><span class="o">,</span> <span class="mi">64</span><span class="o">);</span>
<span class="nc">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="n">bv2</span><span class="o">.</span><span class="na">toHexString</span><span class="o">());</span>
<span class="nc">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="nc">Long</span><span class="o">.</span><span class="na">toHexString</span><span class="o">(</span><span class="n">bv2</span><span class="o">.</span><span class="na">longValue</span><span class="o">()));</span>
<span class="n">assertEquals</span><span class="o">(</span><span class="mh">0xFFFFFFFFFFF5FFFF</span><span class="no">L</span><span class="o">,</span> <span class="n">bv2</span><span class="o">.</span><span class="na">longValue</span><span class="o">());</span>
<span class="kd">final</span> <span class="nc">BitVector</span> <span class="n">bv3</span> <span class="o">=</span> <span class="nc">BitVector</span><span class="o">.</span><span class="na">valueOf</span><span class="o">(</span><span class="mh">0xDEADBEEFBAADF00D</span><span class="no">L</span><span class="o">,</span> <span class="mi">64</span><span class="o">);</span>
<span class="nc">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="n">bv3</span><span class="o">.</span><span class="na">toHexString</span><span class="o">());</span>
<span class="nc">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="nc">Long</span><span class="o">.</span><span class="na">toHexString</span><span class="o">(</span><span class="n">bv3</span><span class="o">.</span><span class="na">longValue</span><span class="o">()));</span>
<span class="n">assertEquals</span><span class="o">(</span><span class="mh">0xDEADBEEFBAADF00D</span><span class="no">L</span><span class="o">,</span> <span class="n">bv3</span><span class="o">.</span><span class="na">longValue</span><span class="o">());</span>
</code></pre> MicroTESK - Task #5676 (Closed): [generator] Random generation - weighting / biasing distribution https://forge.ispras.ru/issues/56762015-03-03T09:20:51ZAndrei Tatarnikovandrewt@ispras.ru
<p>Subj. must be implemented.</p>
<p>Discussion about the randomisation/seeding/biasing/buckets point (Randomisation and seeding / Biasing – not just :min, :max , but buckets):</p>
<blockquote>
<p>we were thinking about something available in languages with support for constrained-random activity, like Specman 'e' and SystemVerilog.</p>
<p>For instance this is a SystemVerilog example taken from <a class="external" href="http://www.asic-world.com/systemverilog/random_constraint7.html">http://www.asic-world.com/systemverilog/random_constraint7.html</a> :<br /><pre>
constraint src {
src_port dist {
0 := 1,
1 := 1,
2 := 5,
4 := 1
};
}
constraint des {
des_port dist {
[0 : 5 ] :/ 5,
[6 : 100 ] := 1,
[101 : 200 ] := 1,
[201 : 255 ] := 1
};
}
</pre><br />Basically the "dist" construct allows a "distribution" of probability to be specified.</p>
<p>For instance the value of "src_port" can have values 0,1,2,4, where values 0,1,4 all have the same weight whereas value 2 has five times the weight of the others.</p>
<p>As the total sum of all the weights is 8, values 0,1,4 will be extracted 1/8 of the time each (i.e. 12.5%), whereas value 2 will have a probability of 5/8 (i.e. 62.5%).</p>
<p>The second example for "dst_port" is a bit more complex (you can find an explanation of the operators here: <a class="external" href="http://www.testbench.in/CR_15_CONSTRAINT_EXPRESSION.html">http://www.testbench.in/CR_15_CONSTRAINT_EXPRESSION.html</a> ).</p>
<p>Basically all the values comprised for instance in the second range [6:100] will all have a weight of 1 each; whereas those in the first range will share the same weight of 5 (so the six numbers will have a weight of 5/6 each).</p>
<p>Each of these ranges can be considered a "bucket" (but we usually refer to this as "distributions" at the time of generation and "bucketing" at the time of collecting coverage).</p>
<p>In addition of getting generating values match the desired distribution across multiple generated tests, it is desirable to be able to generate exactly the same test again if the generator is invoked with the same randomization seed (typically from the command line).</p>
<p>Please note that the probability distribution doesn't necessarily have to only work with numbers, for instance something like this could be envisaged for load instructions:<br /><pre>
constraint c_LD_instr {
LD_instr dist {
LDR := 1,
LDRB := 1,
LDRH := 5,
LDUR := 1
};
}
</pre></p>
</blockquote> 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> Fortress - Bug #5217 (Closed): [expression] NodeBinding: hashCode and equals must be implementedhttps://forge.ispras.ru/issues/52172014-08-23T09:15:42ZAndrei Tatarnikovandrewt@ispras.ru
<p>У класса NodeBinding должны быть определены методы hashCode и equals, как это сделано в других классах Node.</p> Fortress - Task #5176 (Closed): [expression] Possibility to calculate the expression typehttps://forge.ispras.ru/issues/51762014-07-31T07:35:32ZAndrei Tatarnikovandrewt@ispras.ru
<p>Необходимо реализовать во всех подклассах Node метод getDataType для вычисления типа данных подвыражения:</p>
<pre>
public DataType getDataType()
</pre> Fortress - Task #4693 (Closed): [data] Реализации операций над битовыми векторами (BitVector)https://forge.ispras.ru/issues/46932014-02-13T11:58:00ZAndrei Tatarnikovandrewt@ispras.ru
<p>Необходима реализация стандартного набора операций над битовыми векторами (BitVector) включая побитовые операции, логические операции и часто используемые арифметические операции. Подобная реализация существует в виде наброска в Model API MicroTESK. Ещё нужно перенести в Fortress, унифицировать, расширить и создать для неё модульные тесты.</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> MicroTESK - Task #4104 (Closed): [translator] Reset VAR values after an instruction callhttps://forge.ispras.ru/issues/41042013-04-13T20:16:19ZAndrei Tatarnikovandrewt@ispras.ru
<p>Согласно спецификации переменные (объявлены ключевым словом var) не сохраняют своих значений между вызовами инструкции (в отличие от reg-ов и mem-ов). Нужно сбрасывать их значения, что бы там не скапливался мусор, который может привести к некорректным результатам.</p> MicroTESK - Bug #4015 (Closed): [translator] Shift and Rotate operations: negative distancehttps://forge.ispras.ru/issues/40152013-03-17T15:00:02ZAndrei Tatarnikovandrewt@ispras.ru
<p>Для данных, моделируемых через RawData, не будут работать операторы сдвига и поворота, если второй операнд (на сколько сдвигаем/поворачиваем) будет отрицательным.</p> MicroTESK - Bug #3996 (Closed): [translator] Support for long types (64-bit) in expressionshttps://forge.ispras.ru/issues/39962013-03-11T09:47:24ZAndrei Tatarnikovandrewt@ispras.ru
<p>Сейчас не поддерживаются числа больше 32-х бит (int). При трансляции встречаются выражения, использующие 64-битные константы и транслирующиеся напрямую в Java код (без упаковки в классы Data/RawData). Такие выражения мы не можем оттраслировать т.к. не используем тип long при трансляции в Java. Нужно его использовать.</p>
<p>if (sum < 0xffffffff80000001) then <br /> GPR[rd] = 0x80000001;<br /> CPSR<27..27> = 1;<br />else<br /> GPR[rd] = op1 - op2;<br />endif;</p> MicroTESK - Bug #3995 (Closed): [translator] Support for bitfields using non-constant expressionshttps://forge.ispras.ru/issues/39952013-03-11T09:39:51ZAndrei Tatarnikovandrewt@ispras.ru
<p>Для правильной индентификации типов при обращении к битовым полям вычисляется размер поля (на этапе трансляции).<br />Индексные выражения, как правило, - статически вычисляемые константные выражения. Однако, возможны следующие варианты:</p>
<p>shifter_carry_out = GPR[r]<amount-1..amount-1>;</p>
<p>Такой код не будет транслироваться т.к. amount - не константа. Однако, размер поля можно посчтитать и видно, что он будет равен 1.<br />В модели ARM встречается несколько подобных симметричных конструкций. Для них можно и НУЖНО вычислять размер поля.</p>