Open-Source Projects: Issueshttps://forge.ispras.ru/https://forge.ispras.ru/favicon.ico?16490126692023-05-17T08:59:10ZOpen-Source Projects
Redmine Trace Matcher - Task #12415 (New): use venv to build the toolhttps://forge.ispras.ru/issues/124152023-05-17T08:59:10ZSergey Smolovsmolov@ispras.ru
<p>Now Gradle-based build system uses external pyinstaller. It would be better to create virtual environment (venv) for that task.</p> Verilog Translator - Feature #10290 (New): SystemVerilog supporthttps://forge.ispras.ru/issues/102902020-04-20T07:30:43ZSergey Smolovsmolov@ispras.ruQEMU4V - Feature #10088 (New): QEMU4V formatted traces for x86 programshttps://forge.ispras.ru/issues/100882020-02-03T09:07:36ZSergey Smolovsmolov@ispras.ruFortress - Task #10001 (Rejected): SMT-LIBv2 benchmarkshttps://forge.ispras.ru/issues/100012019-12-20T12:41:49ZSergey Smolovsmolov@ispras.ru
<p>Collection of SMT-LIBv2 constraints that were generated by formal verification tools (Retrascope, MicroTESK) + JUnit test cases that solve them.</p> MicroTESK for Plasma - Task #9889 (Resolved): rm deprecated 'findbugs' plugin from Gradle build s...https://forge.ispras.ru/issues/98892019-10-24T10:21:41ZSergey Smolovsmolov@ispras.ru
<p>Building process fails on Jenkins now:<br /><pre>
> Task :findbugsTest
The following errors occurred during analysis:
Cannot open codebase filesystem:/var/lib/****/.gradle/caches/modules-2/files-2.1/microtesk/microtesk/2.4.44-beta-SNAPSHOT/692befca4eac5612da03471e30156d6bfc376951/microtesk-2.4.44-beta-SNAPSHOT.tar.gz
java.io.IOException: Wrong magic bytes of 1f8b0800 for zip file /var/lib/****/.gradle/caches/modules-2/files-2.1/microtesk/microtesk/2.4.44-beta-SNAPSHOT/692befca4eac5612da03471e30156d6bfc376951/microtesk-2.4.44-beta-SNAPSHOT.tar.gz of 37398687 bytes
At edu.umd.cs.findbugs.classfile.impl.ZipFileCodeBase.<init>(ZipFileCodeBase.java:87)
At edu.umd.cs.findbugs.classfile.impl.ZipCodeBaseFactory.makeZipCodeBase(ZipCodeBaseFactory.java:39)
At edu.umd.cs.findbugs.classfile.impl.ClassFactory.createFilesystemCodeBase(ClassFactory.java:121)
At edu.umd.cs.findbugs.classfile.impl.FilesystemCodeBaseLocator.openCodeBase(FilesystemCodeBaseLocator.java:77)
At edu.umd.cs.findbugs.classfile.impl.ClassPathBuilder.processWorkList(ClassPathBuilder.java:607)
At edu.umd.cs.findbugs.classfile.impl.ClassPathBuilder.build(ClassPathBuilder.java:226)
At edu.umd.cs.findbugs.FindBugs2.buildClassPath(FindBugs2.java:677)
At edu.umd.cs.findbugs.FindBugs2.execute(FindBugs2.java:218)
At org.gradle.api.plugins.quality.internal.findbugs.FindBugsExecuter.runFindbugs(FindBugsExecuter.java:39)
At java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
At java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
At java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
At java.base/java.lang.reflect.Method.invoke(Method.java:566)
At org.gradle.process.internal.worker.request.WorkerAction.run(WorkerAction.java:101)
At org.gradle.process.internal.worker.request.WorkerAction.runThenStop(WorkerAction.java:84)
At java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
At java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
At java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
At java.base/java.lang.reflect.Method.invoke(Method.java:566)
At org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
At org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
At org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:155)
At org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:137)
At org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
At org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
At org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
At java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
At java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
At org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
At java.base/java.lang.Thread.run(Thread.java:834)
Error scanning ru/ispras/microtesk/model/plasma/BubbleSortTestCase for referenced classes
...
</pre></p>
<p>To fix the issue, remove deprecated 'findbugs' plug-in and all it's usages from 'build.gradle' script.</p> Retrascope IDE - Task #9888 (New): complete migration from Ant to Gradle build systemhttps://forge.ispras.ru/issues/98882019-10-23T07:57:47ZSergey Smolovsmolov@ispras.ru
<p>The project repository contains both Ant and Gradle build scripts. Ant-based build system is outdated and should be completely substituted by the Gradle-based one.</p> Retrascope IDE - Bug #9816 (New): Retrascope IDE does not appear in "Installed Software" menuhttps://forge.ispras.ru/issues/98162019-09-09T09:08:34ZSergey Smolovsmolov@ispras.ru
<p>The plugin does not appear in Help->About Eclipse IDE->Installed Software menu</p> Retrascope IDE - Task #9815 (New): uninstaller for Retrascope IDEhttps://forge.ispras.ru/issues/98152019-09-09T09:07:51ZSergey Smolovsmolov@ispras.ru
<p>The Retrascope IDE should be able to be uninstalled via Help->About Eclipse IDE->Installed Software menu</p> Retrascope IDE - Task #9810 (New): Gradle build systemhttps://forge.ispras.ru/issues/98102019-09-04T15:24:33ZSergey Smolovsmolov@ispras.ru
<p>All the Retrascope-related projects and Retrascope itself use Gradle as a basic build system.</p>
<p>The IDE should use it too to simplify *.jar dependencies uploading and synchronization.</p> Retrascope IDE - Task #9764 (New): migrate to Eclipse 2019https://forge.ispras.ru/issues/97642019-07-22T13:37:19ZSergey Smolovsmolov@ispras.ruRetrascope RISC-V Benchmark - Bug #9478 (New): ERROR: retrascope-riscv\src\main\verilog\rocket-ch...https://forge.ispras.ru/issues/94782019-02-06T10:20:27ZSergey Smolovsmolov@ispras.ru
<p>The <strong>ru.ispras.verilog.parser.sample.RocketChipTestDriverVerilogPrinterTestCase</strong> test case falls with the following error:<br /><pre>
ERROR: L:\work\retrascope-riscv\src\main\verilog\rocket-chip\src\main\resources\vsrc\TestDriver.v line 28:6 mismatched input 'unsigned' expecting LPAREN
ERROR: L:\work\retrascope-riscv\src\main\verilog\rocket-chip\src\main\resources\vsrc\TestDriver.v line 31:4 missing KW_BEGIN at 'void'
ERROR: [Internal] null
</pre><br />The related Verilog code is as follows:<br /><pre><code class="text syntaxhl" data-language="text">int unsigned rand_value;
</code></pre></p> Veritool - Bug #9184 (New): ERROR: Unable to read config file: /usr/lib/x86_64-linux-gnu/ivl/veri...https://forge.ispras.ru/issues/91842018-08-01T13:04:10ZSergey Smolovsmolov@ispras.ru
<p>Running the tool on the attached Verilog module with such parameters, as '--c --module=blocks --clk=clk --rst=rst --all blocks.v', causes the following error trace:<br /><pre>
ERROR: Unable to read config file: /usr/lib/x86_64-linux-gnu/ivl/veritool.conf
: error: target_design entry point is missing.
error: Code generator failure: -2
veritool failed
</pre></p> Retrascope Test Suite - Bug #9012 (Closed): VisBufferAllocVerilogPrinterTestCase: java.lang.Illeg...https://forge.ispras.ru/issues/90122018-06-27T09:16:02ZSergey Smolovsmolov@ispras.ru
<pre>
java.lang.IllegalArgumentException
at ru.ispras.fortress.util.InvariantChecks.checkTrue(InvariantChecks.java:53)
at ru.ispras.fortress.util.InvariantChecks.checkTrue(InvariantChecks.java:38)
at ru.ispras.fortress.util.InvariantChecks.checkNotNull(InvariantChecks.java:95)
at ru.ispras.verilog.parser.processor.VerilogExprTransformer$1.apply(VerilogExprTransformer.java:144)
at ru.ispras.fortress.transformer.NodeTransformer.applyRule(NodeTransformer.java:166)
at ru.ispras.fortress.transformer.NodeTransformer.onOperationEnd(NodeTransformer.java:226)
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.visitOperation(ExprTreeWalker.java:160)
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.visitOperation(ExprTreeWalker.java:160)
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.visitOperation(ExprTreeWalker.java:160)
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.visitOperation(ExprTreeWalker.java:160)
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.visitOperation(ExprTreeWalker.java:160)
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.visitOperation(ExprTreeWalker.java:160)
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.visitOperation(ExprTreeWalker.java:160)
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.Transformer.transform(Transformer.java:230)
at ru.ispras.verilog.parser.processor.VerilogExprTransformer.transform(VerilogExprTransformer.java:62)
at ru.ispras.verilog.parser.elaborator.VerilogTransformer.transform(VerilogTransformer.java:159)
at ru.ispras.verilog.parser.elaborator.VerilogTransformer.transform(VerilogTransformer.java:170)
at ru.ispras.verilog.parser.elaborator.VerilogTransformer.transform(VerilogTransformer.java:189)
at ru.ispras.verilog.parser.elaborator.VerilogTransformer.onAssignStatementBegin(VerilogTransformer.java:78)
at ru.ispras.verilog.parser.walker.VerilogNodeVisitor$3.onBegin(VerilogNodeVisitor.java:265)
at ru.ispras.verilog.parser.walker.VerilogNodeVisitor.onBegin(VerilogNodeVisitor.java:700)
at ru.ispras.verilog.parser.core.TreeWalker.onBegin(TreeWalker.java:100)
at ru.ispras.verilog.parser.core.TreeWalker.start(TreeWalker.java:79)
at ru.ispras.verilog.parser.elaborator.VerilogTransformer.run(VerilogTransformer.java:53)
at ru.ispras.verilog.parser.elaborator.VerilogVariableSubstitutor.transform(VerilogVariableSubstitutor.java:44)
at ru.ispras.verilog.parser.elaborator.VerilogInstantiator.instantiateProcess(VerilogInstantiator.java:88)
at ru.ispras.verilog.parser.elaborator.VerilogDesign$1$1.next(VerilogDesign.java:185)
at ru.ispras.verilog.parser.elaborator.VerilogDesign$1$1.next(VerilogDesign.java:173)
at ru.ispras.verilog.parser.sample.VerilogDesignPrinter.start(VerilogDesignPrinter.java:36)
at ru.ispras.verilog.parser.VerilogDesignBackends.start(VerilogDesignBackends.java:56)
at ru.ispras.verilog.parser.VerilogTranslator.start(VerilogTranslator.java:169)
at ru.ispras.verilog.parser.sample.VerilogPrinter.main(VerilogPrinter.java:45)
at ru.ispras.verilog.parser.sample.VerilogPrinterTest.runTest(VerilogPrinterTest.java:49)
</pre> Retrascope IDE - Bug #5547 (New): save Retrascope result not to ECLIPSE_HOME folderhttps://forge.ispras.ru/issues/55472015-01-05T19:24:18ZSergey Smolovsmolov@ispras.ru
<p>While using Retrascope IDE Configurator menu, engines that generate output file can be selected (like test-xml-printer, which generates test.xml file by default).<br />But if the full path to the output file is not specified, the Retrascope IDE saves output file to the ECLIPSE_HOME folder. Which causes an error, for example, in Windows 7 OS, where Eclipse IDE can be installed to the protected-for-writing folder like C:\Program Files.</p> С++TESK Development Environment - Task #3756 (New): Генерация C++ кода для модели сообщенийhttps://forge.ispras.ru/issues/37562012-12-05T15:32:06ZSergey Smolovsmolov@ispras.ru
<p>Небходимо разработать метод генерации C++ кода для модели сообщений.</p>
<p>На вход методу подается несколько объектов класса Adapter. В виде какой структуры данных эти "несколько" будут подаваться - на твое усмотрение. Например, можно взять ту же, что использовалась<br />в инструменте signalsGrouper для хранения набора накликанных "интерфейсов".<br />Т.к. все адаптеры между собой различны и полных совпадений между ними быть не должно, то из самых общих соображений могу предложить использовать java.util.Set.</p>
<p>Суть метода такова: проходим по всем адаптерам и извлекаем из них объекты MessageType и помещаем их в промежуточное хранилище (возможно, тот же Set). При этом необходимо проверять, что в хранилище ещё нет такого же типа сообщений (а при разработке адаптеров для разных интерфейсов вполне реально, что они будут использовать сообщения одного типа)- делать такую проверку лучше всего посредством разработки метода сравнения equals в классе MessageType.</p>
<p><strong>Шаблон для *.h-файла</strong></p>
<pre>
#pragma once
#include <hw/message.hpp>
namespace имя_пространства_имен {
</pre> Про извлечение название пространства имен смотри <a class="issue tracker-2 status-1 priority-4 priority-default" title="Task: namespace name for test system prototypes (New)" href="https://forge.ispras.ru/issues/3755">#3755</a>
<p>Для каждого типа сообщений далее генерируем следующий код:<br /><pre>
MESSAGE(имя_типа_сообщений)
{
public:
имя_типа_сообщений();
virtual ~имя_типа_сообщений();
SUPPORT_CLONE(имя_типа_сообщений);
</pre></p>
<p>Далее для всех полей сообщения данного типа генерируем вызов соответствующего макроса. Макросы бывают следующие:<br />1) Если размер поля больше 64 бит, то нужно использовать<br /> - CPPTESK_DECLARE_FIELD_ARRAY(имя_поля, размер_массива, размер_поля); - если маска не задана<br /> - CPPTESK_DECLARE_MASKED_FIELD_ARRAY(имя_поля, размер_массива, размер_поля, маска_поля); - если маска задана</p>
<p>В силу особенностей реализации параметр размер_поля делаем равным 64, а параметр размер_массива делаем таким, чтобы удовлетворялось следующее неравенство:</p>
<p>capacity <= размер_поля*размер_массива</p>
<p>где capacity - одноименное поле соответствующего экземпляра класса MessageField.</p>
<p>2) Если размер поля меньше, или равен 64 бит, то нужно использовать<br /> - CPPTESK_DECLARE_FIELD(имя_поля, размер_поля);<br /> - CPPTESK_DECLARE_MASKED_FIELD(имя_поля, размер_поля, маска_поля);<br /> - CPPTESK_DECLARE_BIT(имя_поля); - если размер поля равен 1</p>
<pre>
};
}
</pre>
<p>Заголовочный файл называем имя_пространства_имен_msg.h</p>
<p><strong>Шаблон для .cpp файла</strong></p>
<pre>
include <имя_пространства_имен_msg.h>
namespace имя_пространства_имен {
</pre>
<p>Для каждого из типов сообщений генерируем следующий код конструктора и деструктора</p>
<pre>
имя_типа_сообщений::имя_типа_сообщений(void)
{
</pre>
<p>Для всех полей сообщения, у которых incomparable равно false (см. <a class="issue tracker-2 status-5 priority-4 priority-default closed" title="Task: флаг incomparable в полях сообщений (Closed)" href="https://forge.ispras.ru/issues/3754">#3754</a>):<br /><pre>
ADD_FIELD(имя_типа_сообщений::имя_поля);
</pre></p>
<p>Для всех полей сообщения, у которых incomparable равно true (см. <a class="issue tracker-2 status-5 priority-4 priority-default closed" title="Task: флаг incomparable в полях сообщений (Closed)" href="https://forge.ispras.ru/issues/3754">#3754</a>):<br /><pre>
ADD_INCOMPARABLE_FIELD(имя_типа_сообщений::имя_поля);
</pre></p>
<p>Рандомизируем значения полей - только если оно соответствует входному интерфейсу!<br /><pre>
RANDOMIZE_MESSAGE(*this);
}
имя_типа_сообщений::~имя_типа_сообщений(void) {}
}
</pre></p>
<p>Рекомендация - данную задачу стоить решать посредством разработки нескольких относительно простых методов в соответствующих классах, а не одного сложного.</p>