Open-Source Projects: Issueshttps://forge.ispras.ru/https://forge.ispras.ru/favicon.ico?16490126692022-06-14T09:01:27ZOpen-Source Projects
Redmine MicroTESK - Developer Request #11653 (New): При формировании теста не учитывают внутреннее состоя...https://forge.ispras.ru/issues/116532022-06-14T09:01:27ZAlexander Protsenkoprotsenko@ispras.ru
<p>При генерации теста для ВМ, при формирование его в ассемблерном виде не учитывается внутренне состояние.</p>
<p>На текущей момент изменение внутреннего состояния, для корректного формирования теста, производится с помощью псевдо инструкций (pseudo op) и их атрибутов init().</p> MicroTESK - Task #10867 (New): Поддержка big-endian/little-endian для кодировки инструкцииhttps://forge.ispras.ru/issues/108672021-06-28T11:34:55ZAlexander Protsenkoprotsenko@ispras.ru
<p>Необходима возможность указывать формат кодировки инструкции: big-endian или little-endian.</p>
<p>Порядок байт по умолчанию: big-endian.</p> MicroTESK - Bug #10747 (New): Переопределение define_section_text (в соответствии с microtesk-2.5...https://forge.ispras.ru/issues/107472021-03-11T13:49:57ZAlexander Protsenkoprotsenko@ispras.ru
<pre>
def define_section_text
section_text(:prefix => '#', :pa => 0x0) {}
end
</pre>
<pre>
def pre
################################################################################################
define_section_text
...
end
</pre>
<p>Ошибка:<br /><pre>
ATTENTION! An unexpected error has occurred:
java.lang.IllegalArgumentException: null
The program will be terminated. Please contact us at:
microtesk-support@ispras.ru
We are sorry for the inconvenience.
Exception stack:
java.lang.IllegalArgumentException
at ru.ispras.fortress.util.InvariantChecks.checkTrue(ru/ispras/fortress/util/InvariantChecks.java:54)
at ru.ispras.fortress.util.InvariantChecks.checkTrue(ru/ispras/fortress/util/InvariantChecks.java:38)
at ru.ispras.microtesk.model.memory.Section.<init>(ru/ispras/microtesk/model/memory/Section.java:61)
at ru.ispras.microtesk.test.template.Template.beginSectionText(ru/ispras/microtesk/test/template/Template.java:1264)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
</pre></p>
<p>Если определить ":va => 0x0" ошибки не будет.</p>
<p>(Нужна корректная диагностика, как минимум.)</p> MicroTESK - Task #10715 (New): Подготовка данных для внутренних регистровhttps://forge.ispras.ru/issues/107152021-02-12T18:04:30ZAlexander Protsenkoprotsenko@ispras.ru
<p>1. Если в операции участвуют, например, 1 входной регистр и 1 внутренний регистр, то для таких операций не отслуживается зависимость по данным.</p>
<p>2. Данные для внутреннего регистра необходимо подготавливать самостоятельно. А хотелось бы иметь возможность использовать "preparator".</p> MicroTESK - Bug #10698 (New): ArgumentError: wrong number of arguments calling `target` (2 for 0)https://forge.ispras.ru/issues/106982021-01-29T20:26:39ZAlexander Protsenkoprotsenko@ispras.ru
<p>В качестве примера используется проект: <a href="https://forge.ispras.ru/projects/microtesk-plasma/repository" class="external">MicroTESK for Plasma</a></p>
<p>Диагностика<br /><pre>
********************************************************************************
ATTENTION! An unexpected error has occurred:
org.jruby.exceptions.RaiseException: (ArgumentError) wrong number of arguments calling `target` (2 for 0)
The program will be terminated. Please contact us at:
microtesk-support@ispras.ru
We are sorry for the inconvenience.
Exception stack:
org.jruby.exceptions.RaiseException: (ArgumentError) wrong number of arguments calling `target` (2 for 0)
at RUBY.pre(D:/WorkProjects/MicroTESK/microtesk-plasma/src/main/arch/plasma/templates/plasma_base.rb:96)
at org.jruby.RubyBasicObject.instance_eval(org/jruby/RubyBasicObject.java:1594)
at RUBY.create_preparator(D:/WorkProjects/MicroTESK/microtesk-plasma/build/target/lib/ruby/template.rb:614)
at RUBY.preparator(D:/WorkProjects/MicroTESK/microtesk-plasma/build/target/lib/ruby/template.rb:566)
at RUBY.pre(D:/WorkProjects/MicroTESK/microtesk-plasma/src/main/arch/plasma/templates/plasma_base.rb:95)
at RUBY.generate(D:/WorkProjects/MicroTESK/microtesk-plasma/build/target/lib/ruby/template.rb:1007)
at RUBY.main(D:\WorkProjects\MicroTESK\microtesk-plasma\build\target\lib\ruby\microtesk.rb:33)
at org.jruby.RubyHash.each(org/jruby/RubyHash.java:1342)
at RUBY.main(D:\WorkProjects\MicroTESK\microtesk-plasma\build\target\lib\ruby\microtesk.rb:29)
at RUBY.(root)(D:\WorkProjects\MicroTESK\microtesk-plasma\build\target\lib\ruby\microtesk.rb:52)
********************************************************************************
</pre></p>
<p>Код вызывающий ошибку:<br /><pre>
preparator(:target => 'R') {
ori target target, value(16, 31)
sll target, target, 16
ori target, target, value(0, 15)
}
</pre></p>
<p>Код не вызывающий ошибку:<br /><pre>
preparator(:target => 'R') {
ori target, target, value(16, 31)
sll target, target, 16
ori target, target, value(0, 15)
}
</pre></p>
<p>Нужна корректная диагностика.</p> MicroTESK - Bug #10696 (New): Error: Failed to load custom data generators for plasma.https://forge.ispras.ru/issues/106962021-01-29T20:12:49ZAlexander Protsenkoprotsenko@ispras.ru
<p>В качестве примера используется проект: <a href="https://forge.ispras.ru/projects/microtesk-plasma/repository" class="external">MicroTESK for Plasma</a></p>
<p>Пример лога:<br /><pre>
ru.ispras.microtesk.model.plasma.InstructionAluTestCase > test STANDARD_OUT
Command line: -g -ae -tl -cl -cfp instruction_alu plasma src/main/arch/plasma/templates/instruction_alu.rb
Error: Failed to load custom data generators for plasma.
</pre></p>
<p>Этого можно добиться, убрав ссылки в settings.xml<br /><pre>
<extension name="beq-if-then" path="ru.ispras.microtesk.mips.test.branch.MipsEqDataGenerator"/>
</pre></p>
<p>Или в сборке<br /><pre>
'-ed',
"${project.projectDir}/build/target/arch/plasma/extensions"
</pre></p>
<p>Что нужно сделать:<br />1. Описать в документации (и возможно подробнее в логе) что же такое эти "custom data generators", зачем они нужны (например, в пустом тесте) и как их создать.<br />2. Если это возможно, сделать генератор по умолчанию.</p> MicroTESK - Task #10676 (New): Реализовать метод для получения размера операции в nml спецификацииhttps://forge.ispras.ru/issues/106762021-01-20T19:18:35ZAlexander Protsenkoprotsenko@ispras.ru
<p>Метод должен возвращать размер операции:<br />operation.size или operation.image.size</p> MicroTESK - Bug #10657 (New): Некорректная диагностика: вывод имени файла при указании строк для ...https://forge.ispras.ru/issues/106572020-12-30T09:21:12ZAlexander Protsenkoprotsenko@ispras.ru
<p>В ошибках Bug <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug: (let) java.lang.NullPointerException: null (Closed)" href="https://forge.ispras.ru/issues/10649">#10649</a> Bug <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug: Некорректная диагностика: java.lang.IllegalArgumentException: null (Closed)" href="https://forge.ispras.ru/issues/10643">#10643</a> необходимо выводить имя файла.</p> MicroTESK - Bug #10653 (New): MicroTESK mode: IsaPrimitive cannot be convertedhttps://forge.ispras.ru/issues/106532020-12-28T17:17:21ZAlexander Protsenkoprotsenko@ispras.ru
<p>Пример кода:<br /><pre>
reg RRR [256, LONG]
mode V4 (i: card(4)) = RRR[i]
syntax = format("v%s", i)
image = format("%4s", i)
mode V8 (i: card(8)) = RRR[i]
syntax = format("v%s", i)
image = format("%8s", i)
mode VX = V8
| V4
let MOV_OPCODE = 0x1
internal op mov_bug (opcode: card(8), vd: VX, vs: VX)
syntax = format("mov %s, %s", vd.syntax, vs.syntax)
image = format("%8s%s%s", opcode, vd.image, vs.image)
action = {
vd = vs;
}
op mov_bug_v4 (vd: V4, vs: V4)
syntax = format("%s", mov_bug(MOV_OPCODE, vd, vs).syntax)
image = format("%s", mov_bug(MOV_OPCODE, vd, vs).image)
action = {
mov_bug(MOV_OPCODE, vd, vs).action;
}
</pre></p>
<p>Ошибка:<br /><pre>
MicroTESK\microtesk-mips64\build\generated-src\models\src\java\ru\ispras\microtesk\model\mips64\decoder\DecoderMov_bug_v4.java:69: error: incompatible types: IsaPrimitive cannot be converted to V4
vd = mov_bug_instance.vd;
^
MicroTESK\microtesk-mips64\build\generated-src\models\src\java\ru\ispras\microtesk\model\mips64\decoder\DecoderMov_bug_v4.java:70: error: incompatible types: IsaPrimitive cannot be converted to V4
vs = mov_bug_instance.vs;
^
2 errors
FAILURE: Build failed with an exception.
</pre></p> MicroTESK Documentation - Task #10646 (New): MicroTESK Documentation: дополнить описание конструк...https://forge.ispras.ru/issues/106462020-12-26T09:37:51ZAlexander Protsenkoprotsenko@ispras.ru
<p>Возможности конструкции mode в документации не описаны.</p>
<p>Примеры кода:</p>
<p>Работа с индексом i<br /><pre>
mode X (i: card(5)) = XREG [i]
mode CX (i: card(3)) = XREG [coerce(card(5), i) + 8]
rd: CX
X(zero_extend(card(5), rd.i) + 8)
</pre></p>
<p>ИЛИ правило:<br /><pre>
mode IMM4 (i: card(4))
syntax = format("%d", i)
image = format("%4s", i)
mode IMM8 (i: card(8))
syntax = format("%d", i)
image = format("%8s", i)
mode IMM16 (i: card(16))
syntax = format("%d", i)
image = format("%16s", i)
mode IMM32 (i: card(32))
syntax = format("%d", i)
image = format("%32s", i)
mode IMM = IMM4
| IMM8
| IMM16
| IMM32
mode IMM8_16_32 = IMM8
| IMM16
| IMM32
mode IMM8_16 = IMM8
| IMM16
mode IMM4_16 = IMM4
| IMM16
</pre></p>
<p>"Структуры":<br /><pre>
// Memory
mem MEM_CLASS [2 ** 32, u64]
mode ClassBlock (i: u32) = MEM_CLASS[CLASS_BLOCK + i*CLASS_DESCRIPTION_SIZE + 0]::
MEM_CLASS[CLASS_BLOCK + i*CLASS_DESCRIPTION_SIZE + 1]::
MEM_CLASS[CLASS_BLOCK + i*CLASS_DESCRIPTION_SIZE + 2]::
MEM_CLASS[CLASS_BLOCK + i*CLASS_DESCRIPTION_SIZE + 3]::
MEM_CLASS[CLASS_BLOCK + i*CLASS_DESCRIPTION_SIZE + 4]::
MEM_CLASS[CLASS_BLOCK + i*CLASS_DESCRIPTION_SIZE + 5]::
MEM_CLASS[CLASS_BLOCK + i*CLASS_DESCRIPTION_SIZE + 6]::
MEM_CLASS[CLASS_BLOCK + i*CLASS_DESCRIPTION_SIZE + 7]::
MEM_CLASS[CLASS_BLOCK + i*CLASS_DESCRIPTION_SIZE + 8]::
MEM_CLASS[CLASS_BLOCK + i*CLASS_DESCRIPTION_SIZE + 9]
mode ClassBlockName (i: u32) = MEM_CLASS[CLASS_BLOCK + i*CLASS_DESCRIPTION_SIZE + 0]
mode ClassBlockBase (i: u32) = MEM_CLASS[CLASS_BLOCK + i*CLASS_DESCRIPTION_SIZE + 1]
mode ClassBlockSize (i: u32) = MEM_CLASS[CLASS_BLOCK + i*CLASS_DESCRIPTION_SIZE + 2]
mode ClassBlockFlags (i: u32) = MEM_CLASS[CLASS_BLOCK + i*CLASS_DESCRIPTION_SIZE + 3]
mode ClassBlockImplStart (i: u32) = MEM_CLASS[CLASS_BLOCK + i*CLASS_DESCRIPTION_SIZE + 4]
mode ClassBlockNImpl (i: u32) = MEM_CLASS[CLASS_BLOCK + i*CLASS_DESCRIPTION_SIZE + 5]
mode ClassBlockMemberStart (i: u32) = MEM_CLASS[CLASS_BLOCK + i*CLASS_DESCRIPTION_SIZE + 6]
mode ClassBlockNMembers (i: u32) = MEM_CLASS[CLASS_BLOCK + i*CLASS_DESCRIPTION_SIZE + 7]
mode ClassBlockMethodStart (i: u32) = MEM_CLASS[CLASS_BLOCK + i*CLASS_DESCRIPTION_SIZE + 8]
mode ClassBlockNMethods (i: u32) = MEM_CLASS[CLASS_BLOCK + i*CLASS_DESCRIPTION_SIZE + 9]
</pre></p> Verilog Translator - Bug #10513 (New): macOS related line endings at Verilog moduleshttps://forge.ispras.ru/issues/105132020-10-04T06:54:18ZSergey Smolovsmolov@ispras.ru
<p>Verilog Translator does not support macOS related line endings ('\r') at Verilog modules. Is it ok for the tool?</p> Verilog Translator - Bug #10512 (New): ADDA162H90A_atop.v line 120:47 mismatched input ':' expect...https://forge.ispras.ru/issues/105122020-10-02T08:46:35ZSergey Smolovsmolov@ispras.ru
<pre>
RROR: L:\work\veritrans\src\test\verilog\hdl-benchmarks\hdl\iwls05\faraday\rtl\DSP\hdl\CODEC\FXADDA162H90A\ADDA162H90A_atop.v line 120:47 mismatched input ':' expecting RPAREN
ERROR: L:\work\veritrans\src\test\verilog\hdl-benchmarks\hdl\iwls05\faraday\rtl\DSP\hdl\CODEC\FXADDA162H90A\ADDA162H90A_atop.v line 157:47 mismatched input ':' expecting RPAREN
ERROR: ru\ispras\verilog\parser\grammar\VerilogTreeBuilder.g: node from after line 117:36 mismatched tree node: <mismatched token: [@2436,3042:3042=':',<19>,120:47], resync=$width(posedgedac_phase_check,400.00:500.00:900.00,0,> expecting <UP>
ERROR: ru\ispras\verilog\parser\grammar\VerilogTreeBuilder.g: node from after line 117:36 mismatched tree node: AST_ATTRIBUTES expecting <UP>
ERROR: ru\ispras\verilog\parser\grammar\VerilogTreeBuilder.g: node from after line 117:36 mismatched tree node: <unexpected: [@2444,3089:3089=')',<276>,120:94], resync=n_flag_dac_phase_overlape> expecting <UP>
</pre> Verilog Translator - Bug #10510 (New): ERROR: [Internal] Bit vector sizes do not match: 32 != 2.https://forge.ispras.ru/issues/105102020-10-01T15:35:04ZSergey Smolovsmolov@ispras.ru
<pre>
java.lang.IllegalArgumentException: Bit vector sizes do not match: 32 != 2.
at ru.ispras.fortress.data.types.bitvector.BitVectorMath.checkEqualSize(BitVectorMath.java:1255)
at ru.ispras.fortress.data.types.bitvector.BitVectorMath.transform(BitVectorMath.java:1231)
at ru.ispras.fortress.data.types.bitvector.BitVectorMath.add(BitVectorMath.java:869)
at ru.ispras.fortress.data.types.bitvector.BitVectorMath.sub(BitVectorMath.java:888)
at ru.ispras.verilog.parser.interpreter.VerilogOperations$10.calculate(VerilogOperations.java:222)
at ru.ispras.fortress.calculator.OperationGroup.calculate(OperationGroup.java:141)
at ru.ispras.fortress.transformer.Reducer$OperationRule.apply(Reducer.java:147)
at ru.ispras.fortress.transformer.NodeTransformer.applyRule(NodeTransformer.java:173)
at ru.ispras.fortress.transformer.NodeTransformer.updateNode(NodeTransformer.java:183)
at ru.ispras.fortress.transformer.NodeTransformer.onOperationEnd(NodeTransformer.java:231)
at ru.ispras.fortress.expression.ExprTreeWalker.visitOperation(ExprTreeWalker.java:173)
at ru.ispras.fortress.expression.ExprTreeWalker.visitNode(ExprTreeWalker.java:123)
at ru.ispras.fortress.expression.ExprTreeWalker.visitOperation(ExprTreeWalker.java:160)
at ru.ispras.fortress.expression.ExprTreeWalker.visitNode(ExprTreeWalker.java:123)
at ru.ispras.fortress.expression.ExprTreeWalker.visit(ExprTreeWalker.java:93)
at ru.ispras.fortress.transformer.NodeTransformer.walk(NodeTransformer.java:54)
at ru.ispras.fortress.transformer.Reducer.reduce(Reducer.java:183)
at ru.ispras.verilog.parser.interpreter.VerilogCalculator.evaluate(VerilogCalculator.java:67)
at ru.ispras.verilog.parser.elaborator.VerilogElaborator.evaluate(VerilogElaborator.java:1161)
at ru.ispras.verilog.parser.elaborator.VerilogElaborator.defineParameter(VerilogElaborator.java:1073)
at ru.ispras.verilog.parser.elaborator.VerilogElaborator.createVariableAndBinding(VerilogElaborator.java:526)
at ru.ispras.verilog.parser.elaborator.VerilogElaborator.createVariablesAndBindings(VerilogElaborator.java:910)
at ru.ispras.verilog.parser.elaborator.VerilogElaborator.createVariablesAndBindings(VerilogElaborator.java:883)
at ru.ispras.verilog.parser.elaborator.VerilogElaborator.expand(VerilogElaborator.java:330)
at ru.ispras.verilog.parser.elaborator.VerilogElaborator.start(VerilogElaborator.java:231)
at ru.ispras.verilog.parser.VerilogSyntaxBackends.start(VerilogSyntaxBackends.java:55)
at ru.ispras.verilog.parser.VerilogTranslator.start(VerilogTranslator.java:212)
at ru.ispras.verilog.parser.sample.VerilogPrinter.main(VerilogPrinter.java:45)
at ru.ispras.verilog.parser.util.VerilogBenchmarkTest.runTest(VerilogBenchmarkTest.java:62)
at ru.ispras.verilog.parser.VerilogIwlsTestSuite.runTest_risc_defgh(VerilogIwlsTestSuite.java:1692)
</pre> Verilog Translator - Bug #10509 (New): ERROR: [Internal] 0 must be > 0https://forge.ispras.ru/issues/105092020-10-01T15:15:47ZSergey Smolovsmolov@ispras.ru
<pre>
ERROR: [Internal] 0 must be > 0
java.lang.IllegalArgumentException: 0 must be > 0
at ru.ispras.fortress.util.InvariantChecks.checkGreaterThanZero(InvariantChecks.java:159)
at ru.ispras.fortress.data.types.bitvector.BitVector.newEmpty(BitVector.java:381)
at ru.ispras.verilog.parser.model.basis.VerilogLiteral.<init>(VerilogLiteral.java:188)
at ru.ispras.verilog.parser.model.basis.VerilogLiteral.parseString(VerilogLiteral.java:55)
at ru.ispras.verilog.parser.grammar.VerilogTreeBuilder.ast_string(VerilogTreeBuilder.java:7916)
at ru.ispras.verilog.parser.grammar.VerilogTreeBuilder.ast_primary(VerilogTreeBuilder.java:6628)
at ru.ispras.verilog.parser.grammar.VerilogTreeBuilder.ast_operation(VerilogTreeBuilder.java:6502)
at ru.ispras.verilog.parser.grammar.VerilogTreeBuilder.ast_expression(VerilogTreeBuilder.java:6356)
at ru.ispras.verilog.parser.grammar.VerilogTreeBuilder.ast_task_statement(VerilogTreeBuilder.java:4716)
at ru.ispras.verilog.parser.grammar.VerilogTreeBuilder.ast_statement(VerilogTreeBuilder.java:4393)
at ru.ispras.verilog.parser.grammar.VerilogTreeBuilder.ast_block_statement(VerilogTreeBuilder.java:5465)
at ru.ispras.verilog.parser.grammar.VerilogTreeBuilder.ast_statement(VerilogTreeBuilder.java:4473)
at ru.ispras.verilog.parser.grammar.VerilogTreeBuilder.ast_process(VerilogTreeBuilder.java:3514)
at ru.ispras.verilog.parser.grammar.VerilogTreeBuilder.ast_item(VerilogTreeBuilder.java:1214)
at ru.ispras.verilog.parser.grammar.VerilogTreeBuilder.ast_module(VerilogTreeBuilder.java:918)
at ru.ispras.verilog.parser.grammar.VerilogTreeBuilder.ast_unit(VerilogTreeBuilder.java:765)
at ru.ispras.verilog.parser.grammar.VerilogTreeBuilder.ast_root(VerilogTreeBuilder.java:713)
at ru.ispras.verilog.parser.grammar.VerilogTreeBuilder.startRule(VerilogTreeBuilder.java:663)
at ru.ispras.verilog.parser.VerilogFrontend.startBuilder(VerilogFrontend.java:455)
at ru.ispras.verilog.parser.VerilogFrontend.startBuilder(VerilogFrontend.java:460)
at ru.ispras.verilog.parser.VerilogFrontend.start(VerilogFrontend.java:486)
at ru.ispras.verilog.parser.VerilogFrontend.start(VerilogFrontend.java:490)
at ru.ispras.verilog.parser.VerilogTranslator.start(VerilogTranslator.java:206)
at ru.ispras.verilog.parser.sample.VerilogPrinter.main(VerilogPrinter.java:45)
at ru.ispras.verilog.parser.util.VerilogBenchmarkTest.runTest(VerilogBenchmarkTest.java:62)
at ru.ispras.verilog.parser.VerilogIwlsTestSuite.runTest_usbf_top(VerilogIwlsTestSuite.java:4417)
</pre> Verilog Translator - Bug #10508 (New): ERROR: [Internal] Java heap spacehttps://forge.ispras.ru/issues/105082020-10-01T11:33:03ZSergey Smolovsmolov@ispras.ru
<p>The following test cases fall with "ERROR: [Internal] Java heap space":</p>
<p><strong>ru.ispras.verilog.parser.VerilogIwlsTestSuite#runTest_iscas_s35932<br />ru.ispras.verilog.parser.VerilogIwlsTestSuite#runTest_iscas_s38417<br />ru.ispras.verilog.parser.VerilogIwlsTestSuite#runTest_iscas_s15850</strong></p>