Open-Source Projects: Issueshttps://forge.ispras.ru/https://forge.ispras.ru/favicon.ico?16490126692015-03-13T11:06:24ZOpen-Source Projects
Redmine 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 #5678 (Closed): Support for named branches in ISA specificationshttps://forge.ispras.ru/issues/56782015-03-03T10:46:59ZAndrei Tatarnikovandrewt@ispras.ru
<p>Named branches in ISA specifications must be supported:</p>
<ol>
<li>Support the construct "<code>branch("BranchName");</code>" in the nML translator;</li>
<li>Support situations for named branches in the coverage extractor.</li>
</ol> 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 - 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> MicroTESK - Task #5658 (Closed): Need a single entry point for the translator and test generator ...https://forge.ispras.ru/issues/56582015-02-25T19:37:45ZAndrei Tatarnikovandrewt@ispras.ru
<p>The current situation:</p>
<p>1. The entry point for the translator (modelling subsystem) is method MicroTESK.main (ru.ispras.microtesk).<br />2. The entry point for the test template processor (testing subsystem) is method main in microtesk.rb (launched via JRuby).</p>
<p>Need a unified entry point (in a Java class). The MicroTESK.main should run a proper code depending on command line switches. Also, <strong>unified exception handling policy is needed</strong>.</p> MicroTESK - Bug #5514 (Closed): The implementation of 'coerce' needs a reviewhttps://forge.ispras.ru/issues/55142014-12-19T07:57:17ZAndrei Tatarnikovandrewt@ispras.ru
<p>The implementation is very simple: size is changed, extra bits are set to zero. <br />Sign extension is not supported, which causes bugs. Also, conversion from different data type families (e.g float to integer is not supported)/</p> MicroTESK - Task #5403 (Closed): Test sequence generation logic (blocks, combinators, compositors...https://forge.ispras.ru/issues/54032014-10-31T15:44:13ZAndrei Tatarnikovandrewt@ispras.ru
<p>Необходимо проработать логику генерации тестовых последовательностей (блоки и комбинаторы/композиторы). Необходимо:</p>
<ol>
<li>Уточнение требований</li>
<li>Реализация</li>
<li>Примеры</li>
<li>Документация</li>
</ol>
<p>Следующие случаи должны быть проработаны:</p>
<ol>
<li>atomic { I1, ..., In } - возвращает итератор, который возвращает одну единственную последовательность.</li>
<li>atomic { I1, ..., In, block {...}, In+1, ..., Im} - возвращает итератор, который возвращает столько последовательностей, сколько из дает block: (I1, ..., In, seq1, In+1, ..., Im), ..., (I1, ..., In, seqk, In+1, ..., Im).</li>
<li>atomic { I1, ..., In, block {...}, In+1, ..., Im, block {…}, Im+1, …, Ik} - (вложенные блоки дают разное количество последовательностей) <strong>- ???</strong></li>
<li>block { I1, ..., In } - возвращает итератор, который выдает n последовательностей, состоящих из одного элемента каждая. </li>
<li>block { I1, ..., In, block {...}, In+1, ..., Im} <strong>- ???</strong></li>
<li>block { I1, ..., In, block {...}, In+1, ..., Im, block {…}, Im+1, …, Ik} <strong>- ???</strong></li>
</ol>
<p>P.S. Cейчас из этого только atomic { I1, ..., In } и block { I1, ..., In } работают корректно. Более сложные случаи не проработаны: atomic { ... } объединяет все в единственную последовательность, а block { ... } создает на основе n вложенных элементов (инструкций или блоков) n последовательностей, которые получаются путем объединения всех последовательностей, возвращаемых соответствующим элементом.</p> MicroTESK - Bug #4996 (Closed): [translator] It should be possible to define the "instruction" op...https://forge.ispras.ru/issues/49962014-06-18T11:42:22ZAndrei Tatarnikovandrewt@ispras.ru
<p>The current version has an unreasonable limitation: the "instruction" operation (root) can be defined as an AND rule only. This should be changed. It should be allowed to define the "instruction" operation as an OR rule.</p> MicroTESK - Task #4900 (Rejected): Printing information on the model should be possiblehttps://forge.ispras.ru/issues/49002014-05-07T07:51:14ZAndrei Tatarnikovandrewt@ispras.ru
<p>Нужно предоставить возможность выводить информацию о модели на экран и в файл. Эта информация может понадобиться пользователю при написании тестовых шаблонов. Для этого Артемием Утехиным был создан файл make_doc.rb (он не очень хорошо написан). Также каждая модель умеет печатать информацию о себе в консоль (метод printInformation). Нужно довести до ума эту функциональность и предоставить возможность пользователю выводить информацию (отдельный скрипт или параметр командной строки), а make_doc.rb убрать за ненадобностью (т.к. гораздо удобнее иметь эту логику в Java-коде).</p> MicroTESK - Task #4283 (Closed): [translator] Support for custom attributes in operations and add...https://forge.ispras.ru/issues/42832013-07-01T10:24:28ZAndrei Tatarnikovandrewt@ispras.ru
<p>Транслятор и модель должны поддерживатить использование <strong>кастомных аттрибутов</strong>. Например, в приведённом ниже куске используется аттрибут loop, который организует цикл путём рекурсии. Для трансляции модели MIPS требуется эта возможность.</p>
<pre>
op CLZ(rd : index, rs : REG_IND_ZERO)
syntax = format ("CLZ %d,%s", rd, rs.syntax)
image = format ("011100%s%5b%5b00000100000", rs.image, rd, rd)
action = {
tmp_signed_byte = 31;
GPR [rd] = 32;
loop;
}
loop = {
if tmp_signed_byte >= 0 then
if ( rs < tmp_signed_byte..tmp_signed_byte > == 0 ) then
tmp_signed_byte = tmp_signed_byte - 1;
else
GPR [ rd ] = 31 - tmp_signed_byte;
tmp_signed_byte = -1;
endif;
loop;
endif;
}
</pre> MicroTESK - Bug #4281 (Closed): [translator] Support for aliases in memory (aka mem) definitions.https://forge.ispras.ru/issues/42812013-07-01T06:29:20ZAndrei Tatarnikovandrewt@ispras.ru
<p>Подобные конструкции сейчас не поддерживаются транслятором Sim-nML:</p>
<pre>
mem tmp_signed_half_word [1, int(16)]
mem tmp_signed_half_word_A0 [1, int(8)] alias = tmp_signed_half_word[8]
</pre>
<p>Это одна из причин, по которой не удаётся оттранслировать спецификацию процессора MIPS.</p> MicroTESK - Bug #4161 (Rejected): Observing the design state via addressing modeshttps://forge.ispras.ru/issues/41612013-05-08T16:37:18ZAndrei Tatarnikovandrewt@ispras.ru
<p>Нужно сделать возможность читать данные из модели при помощи обектов режимов адресации. Когда мы будем решать ограничения для инструкций, мы не будем знать где именно лежат значения параметров. У нас будут только режимы адресации, параметризированные некими константами. Нам нужно прочитать оттуда входные значения. Т.к. нужно через State Observer полутить туда доступ, создав объект соотвествующего Addressing Mode'а.</p> MicroTESK - Task #4116 (Closed): [model] Lazy memory allocation in memory modelshttps://forge.ispras.ru/issues/41162013-04-16T17:46:16ZAndrei Tatarnikovandrewt@ispras.ru
<p>При моделировании линейки памяти сейчас создаётся массив (ArrayList) соответствующего размера. При этом, если линейка большой длины, программа расходует всю доступную память и падает. Нужно сделать, чтобы память свыше определённого размера (например, 1 МБ) выделялась по требованию (при обращению).</p>
<p>public static final MemoryBase M = new MemoryBase(EMemoryKind.MEM, "M", byte_t, (int)Math.pow(2, 10));</p> MicroTESK - Task #3988 (Rejected): Support for forward definitions in the nML translatorhttps://forge.ispras.ru/issues/39882013-03-04T09:18:49ZAndrei Tatarnikovandrewt@ispras.ru
<p>Сейчас forward definitions не поддерживаются в Sim-nML трансляторе. Т.е. если код ссылается на какой-либо внешний элемент,<br />то он должен быть определён ранее в коде. Например, следующий код не будет транслироваться т.к. OR-rule setU ссылается на элементы setUon и setUoff, которые ещё не определены:</p>
<p>mode setU = setUon | setUoff</p>
<p>mode setUon() = 0b1<br /> syntax = "+" <br /> image = "1" <br /> action = {<br /> }</p>
<p>mode setUoff() = 0b0<br /> syntax = "-" <br /> image = "0" <br /> action = {<br /> }</p>