Open-Source Projects: Issueshttps://forge.ispras.ru/https://forge.ispras.ru/favicon.ico?16490126692020-04-08T09:12:41ZOpen-Source Projects
Redmine Verilog Translator - Bug #10237 (Closed): ru.ispras.verilog.parser.VerilogTexas97TestSuite#runTes...https://forge.ispras.ru/issues/102372020-04-08T09:12:41ZSergey Smolovsmolov@ispras.ru
<p>The tool reports about cycle inclusion, but the described file does not contain includes at all.<br />Run <strong>ru.ispras.verilog.parser.VerilogTexas97TestSuite#runTest_Pi_Bus_single_master_main2</strong> to reproduce it.</p> Verilog Translator - Bug #9915 (Closed): "Cycle inclusion has been detected in fine <filename>" e...https://forge.ispras.ru/issues/99152019-11-13T12:01:33ZSergey Smolovsmolov@ispras.ru
<p>The tool reports "Cycle inclusion has been detected in fine <filename>" error for the case when "a.v" and "b.v" modules include "c.v" module.</p>
<p>To reproduce the bug, checkout to <a class="changeset" title="hdl-benchmark submodule update Signed-off-by: chudnovmaxim <chudnov@ispras.ru>" href="https://forge.ispras.ru/projects/veritrans/repository/veritrans/revisions/5ca788cdbc460bf393ccdef4b9cd6451f71acdd0">5ca788cd</a> commit and run <strong>ru.ispras.verilog.parser.VerilogQuipTestCase</strong>. It should be fail-free, but it is not.</p>
<p>IMPORTANT: please run all the project tests before push and compare your results with Jenkins!</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> С++TESK Development Environment - Task #3759 (Feedback): Разработать демонстрационный пример для ...https://forge.ispras.ru/issues/37592012-12-06T10:40:54ZSergey Smolovsmolov@ispras.ru
<p>1. Программа создает файл Fields.xml в формате, описанном тут: #3653 (пример корректного файла прикреплен к тикету)</p>
<p>Файл Fields.xml заполняется информацией о типах сообщений с указанием их полей. Представляется разумным взять какую-нибудь тестовую систему из числа примеров из дистрибутива C++TesK Testing ToolKit, взять из неё некоторый тип сообщений и для него создать XML-файл. Особенность этого файла заключается в том, что для выбранного типа сообщений в файл должны записываться данные обо ВСЕХ его полях.</p>
<p>2. В программе вручную формируется объект SignalsFieldsMapping.</p>
<p>При этом устанавливается соответствие с сигналами только для тех полей сообщений, которые присутствуют в Fields.xml. <br />Опять-таки, объект нужно создавать, основываясь на том, как УЖЕ сопоставлены поля сообщений и сигналы в коде выбранной тестовой системы из поставки.</p>
<p>3. В консоль выводится список сигналов модуля аппаратуры, присутствующих в объекте.</p>
<p>В комментарии к демонстрационному примеру указать, какой тестовой системе он соответствует.</p> С++TESK Development Environment - Bug #3757 (Closed): Добавить jar-ник SWT в проект com.unitesk....https://forge.ispras.ru/issues/37572012-12-05T15:52:22ZSergey Smolovsmolov@ispras.ru
<p>Сейчас проект не собирается, т.к. в workspace отсутствует проект org.eclipse.swt. <br />Yужно не таскать за собой кучу чужих исходников, а заменить их jar'ом. Последний положить в проект, в папку share.</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> С++TESK Development Environment - Task #3755 (New): namespace name for test system prototypeshttps://forge.ispras.ru/issues/37552012-12-05T14:01:12ZSergey Smolovsmolov@ispras.ru
<p>При генерации C++ кода прототипов компонентов тестовой системы необходимо использовать общее пространство имен - namespace. Его имя будем извлекать из ещё одного компонента VPI-окружения, также генерируемого инструментом Veritool. Этот компонент называется testbench.v, компонент на языке Verilog.</p>
<p>Необходимо разработать метод, который парсит файл testbench.v и извлекает из него имя для пространства имен. Будем полагать, что это имя должно совпадать с именем целевого тестируемого модуля (так зачастую и делают в промышленных проектах). Строка, в которой присутствует это имя, имеет следующий формат:</p>
<p>имя_целевого_модуля target (</p>
<p>а дальше идет код...</p>
<p>В примерах, идущих вместе с поставкой C++TesK Testing ToolKit файл testbench.v находится в папках verilog соответствующих тестовых систем.</p>
<p>Впоследствии нужно будет грамотно прикрутить этот метод к GUI инструмента. Как лучше это сделать - обсудим позже.</p> С++TESK Development Environment - Task #3754 (Closed): флаг incomparable в полях сообщенийhttps://forge.ispras.ru/issues/37542012-12-05T12:38:00ZSergey Smolovsmolov@ispras.ru
<p>В класс типа сообщений MessageType добавить boolean поле uncomparable, а также getter\setter для него. Значение по умолчанию - false.</p> С++TESK Development Environment - Bug #3717 (Closed): Переименовать com.unitesk.cpptesk.ide.proto...https://forge.ispras.ru/issues/37172012-11-26T08:08:01ZSergey Smolovsmolov@ispras.ru
<p>ir = inner representation</p>
<p>Или com.unitesk.cpptesk.ide.prototype.tsr, tsr = test system representation</p>
<p>presentation - это все же скорее представление как показ, презентация, чем то, что мы в данном случае под ним понимаем.</p> С++TESK Development Environment - Task #3716 (Closed): Simple XML dumping\parsing testhttps://forge.ispras.ru/issues/37162012-11-26T08:05:26ZSergey Smolovsmolov@ispras.ru
<p>Разработать простой тест методов преобразования внутреннего Java-представления (далее ВП) в формат XML и обратно.</p>
<p>Тест делает следующее:</p>
<p>1) Создает XML-файл File1 (название условное) поддерживаемого в проекте формата. Можно прямо задать его в виде строки и записать в файл;</p>
<p>2) Парсит этот файл и создает из него набор Java-объектов ВП;</p>
<p>3) Дампит этот набор объектов в XML-файл File2.</p>
<p>4) Сравнивает File1 и File2.</p>
<p>Важно, чтобы в File1 содержались описания всех присутствующих в проекте сущностей. Т.е., чтобы было одно описание адаптера, одно - интерфейса и т.д.</p>
<p>Тест поместить в отдельный package в проекте - com.unitesk.cpptesk.ide.prototype.ir.tests. В будущем все тесты также помещать в этот пакет, чтобы не засорять основную библиотеку.</p> С++TESK Development Environment - Task #3659 (New): Соответствие полей классов сообщений и сигнал...https://forge.ispras.ru/issues/36592012-11-02T12:26:12ZSergey Smolovsmolov@ispras.ru
<p>Дано:</p>
<p>1) XML-файл формата Task #3653;</p>
<p>2) набор входных и выходных сигналов HDL-модели - получаем с помощью методов из проекта signalsGrouper ( Task <a class="issue tracker-2 status-1 priority-4 priority-default" title="Task: Генерация заготовки тестовой системы по информации об интерфейсе (New)" href="https://forge.ispras.ru/issues/2163">#2163</a>);</p>
<p>Требуется: <br />Разработать инструмент, позволяющий устанавливать соответствие между описанными в XML-файле полями сообщений различных типов и используемыми в них сигналами. Инструмент должен иметь графический интерфейс, язык программирования - Java. По завершении работы необходимо создавать экземпляр соответствующего класса из библиотеки tsprototype проекта C++TESK IDE (см. Task <a class="issue tracker-2 status-5 priority-5 priority-high3 closed" title="Task: source code refactoring (Closed)" href="https://forge.ispras.ru/issues/3654">#3654</a> п.3).</p> С++TESK Development Environment - Task #3654 (Closed): source code refactoringhttps://forge.ispras.ru/issues/36542012-10-31T13:33:52ZSergey Smolovsmolov@ispras.ru
<p>1. Переименовать MessageFields в MessageFieldList</p>
<p>2. В классе Adapter заменить тип структуры соответствия Map<Signal, MessageFields> чем-то другим. Нам будет необходимо впоследствии иметь способ доступа к сигналам, имея на руках множество полей. Map такой возможности лишен.</p>
<p>3. Переделанную в п.2) структуру соответствия также вынести в отдельный класс.</p> С++TESK Development Environment - Task #3624 (Closed): XML dumping\parsinghttps://forge.ispras.ru/issues/36242012-10-26T09:41:20ZSergey Smolovsmolov@ispras.ru
<p>Разработать Java-классы и методы, реализующие преобразование внутреннего представления в XML (XML-dumper) и обратно (XML-parser). Использовать Java-библиотеки для работы с XML (DOM либо SAX).</p> С++TESK Development Environment - Task #3623 (Closed): Внутреннее представление для прототипов т...https://forge.ispras.ru/issues/36232012-10-26T08:56:57ZSergey Smolovsmolov@ispras.ru
<p>Необходимо разработать библиотеку классов на Java для следующих сущностей:</p>
<p>1) Тип сообщений</p>
<p>Поля класса: имя типа сообщений + набор полей сообщения</p>
<p>2) Поле сообщения</p>
<p>Поля класса: имя поля, разрядость поля, маска поля (см. макрос CPPTESK_DECLARE_MASKED_FIELD)</p>
<p>3) Интерфейс</p>
<p>Поля класса: имя интерфейса, тип интерфейса (входной\выходной), используемый тип сообщений</p>
<p>4) Сигнал аппаратуры</p>
<p>Поля класса: имя сигнала, разрядность сигнала</p>
<p>5) Адаптер интерфейса</p>
<p>Поля класса: интерфейс, структура соответствия.</p>
<p>Структура соответствия устанавливает связь между сигналами аппратуры и полями сообщения. В общем случае, это отношение "многие к многим" (например, одному сигналу можно присвоить и некоторую комбинацию значений полей сообщения, хотя мне лично это кажется не слишком хорошей практикой:-)).</p>
<p>Классы, описывающие данные сущности, должны также включать в себя простые get- и set- методы.</p> С++TESK Development Environment - Task #2224 (Closed): Добавить пункт со сведениями о плагинеhttps://forge.ispras.ru/issues/22242012-01-17T10:24:56ZSergey Smolovsmolov@ispras.ru
<p>Добавить в меню "Help"->"About Eclipse SDK" пункт со сведениями о плагине. Можно сделать по аналогии с плагинами для CTesK, JavaTesK.</p>