Перейти к содержанию
    

данная ветка выделена из темы "Редакторы HDL" http://electronix.ru/forum/index.php?showtopic=29129 и посвещена адаптации редактора SciTe для нужд разработчиков HDL и интеграции с популярными средами разработки.

 

на данный момент проведена некоторая работа по адоптации к SystemVerilog и интеграции с QuestaSim описание, которой вы можете найти в данном посте http://electronix.ru/forum/index.php?showt...st&p=679800 и далее.

 

ЗЫ: Решение о выделение ветки было принято для того, чтобы избежать загромождение указанной выше темы, и в связи с появлением некоторого колличества отзывов по предложенным инструментам расширения SciTe.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Будут ли работать все скрипты и дополнения в linux'овой версии SciTe?

 

Добавлено:

Потыркался в исходники: библиотека gui не кроссплатформенная, под linux-gtk не собирается. Очень жаль.

Изменено пользователем flipflop

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

да к сожалению переносимостью пока не озабочивался. действительно gui ещё не портировали, но можно создать и версию без графического интерфейса (например переход к объявлению будет работать всегда, нужно только выскести все бызовы элементов gui? также можно добавить подсветку типа переменной всплывающей подсказкой), я озабочусь этим вопросом (правда точно не в ближайший месяц - большая нагрузка)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

добавил на мой взгляд достаточно нужную фичку такую как подсветка типа переменной (во всплывающей подсказке).

работает по щелчку мыши над переменной (любой включая порты и шапочные параметры).

в ближайшее время могу вытащить эту функциональность для линуксоидов, но для этого мне нужно, чтобы кто-нибудь её потестил, т.к. у меня к сожалению линуха под рукой нет.

в прикреплённом файле сама мулька и sv файл для ленивых, чтобы поиграться

с удовольствием выслушаю жалобы и предложения

post-5973-1260323611_thumb.jpg

SideBar.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

с удовольствием выслушаю жалобы и предложения

 

ИМХО вы бы все ваши мульки собрали в одну ревизию + readme.txt по установке + revision buginfo.txt. Будет много красивее выкладывать обновления %)

 

ЗЫ. Пока по вашей работе ничего сказать не могу, коней (слик) на переправе не хочу менять. Но как нить доберусь до SciTe %)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Баг боковой паели: в коде есть именованный fork и, в нескольких местах, вызов disable к нему. В панели VarProc название блока показывается несколько раз, по щелчку на нём курсор переходит на соответствующий disable. В то же время сам fork оказывается не проиндексированным и не упомянутым вообще

Решение (CaPpuCcino):

дело в том, что в SV объявление переменной в общем случае выглядит следующим образом

тип имя_переменной {выражение_инициализации};

тип - это любой идентификатор кроме ключевых слов (ключевые слова - это тоже идентификаторы, но зарезервированные)

получается, что выражение

disable block_name;

може является переменной типа disable, если слово disable не внесено в список ключевых слов.

так и есть - в текущей пробной версии я не внёс все ключевые слова в стисок (вносил только самые распространённые для RTL).

ключевые слова объявлены на строке № 883 как

local key_words = P'rand' + P'randc' + P'static' +... и т.д. для того, чтобы парсер не воспринимал disable как имя типа просто добавьте в конце этого списка

+ P'disable'

Ещё баг: не совсем корректная обработка такой стандартной конструкции как

class classname;
  extern function void func;
endclass

function void classname::func();
endfunction

Не выводится имя класса на его декларации (а было бы полезно, ИМХО) и все внешние реализации отображаются как "classname", становясь неотличимыми друг от друга и потому бесполезными.

 

ИМХО вы бы все ваши мульки собрали в одну ревизию + readme.txt по установке + revision buginfo.txt. Будет много красивее выкладывать обновления %)

Я сегодня прямо золотая рыбка... :rolleyes: Всё для работы с SV в SciTE в одном комплекте, установка и описание в readme.

Персонально для des00: там ещё скрипт удобной проверки-симуляции на Python, выдастся как-нибудь время - поглядите; сколько помню, Вы активно использовали его для автоматизации своих задач, во многом с Вашей подачи на него с Perl и мигрировал (удобочитаемости нехватало).

VeriComfy4SciTE.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не выводится имя класса на его декларации (а было бы полезно, ИМХО) и все внешние реализации отображаются как "classname", становясь неотличимыми друг от друга и потому бесполезными.

это верно. как я в самом начале говорил(в предыдущей ветки), среда предназначена для дезайнеров, а не для верификаторов. это конечно не значит, что её нельзя или трудно заточить под ООП, это только значит, что сначала было решено целевой аудиторией выбрать именно железячников. далее подключу приблуды по ООП (просто в текущем варианте даже слово класс в список зарезервированых слов не включено).

 

ИМХО вы бы все ваши мульки собрали в одну ревизию + readme.txt по установке + revision buginfo.txt. Будет много красивее выкладывать обновления %)

с удовольствием сделаю это, как только поступит хотя бы какой-то творческий заказ от целевой аудитории и можно будет выпустить более или менее стабильный релиз. пока что просто непонятно в каком направлении двигаться. что именно хотели бы получить разработчики от среды разработки. я же всю свою сознательную жизнь писал коды в обычном текстовом редакторе и полный список современных удобностей мне не постяжим. поэтому и просил - киньте пару концептуальных идей - что полезно было бы для кодера. ТЗ так сказать. поэтому я пока буду оповещать сообщениями, что нового появилось, пока всё что нужно и не нужно (из моих фантазий) отфильтруется.

 

 

... коней (слик) на переправе не хочу менять.

из того, что читал в общей ветки по слику, думаю что всё это возможно добавить в SciTe (нужно только определиться, всё ли то что там есть нужно :)). но самое главное по сравнению со сликом, Scite открыт по кодам и легко расширяем и в кучу этим конфетам от ещё и бесплатен.

 

Всё для работы с SV в SciTE в одном комплекте, установка и описание в readme.

ай, спасибо, хорошо :) я вам в ближайшее время описалово кину на SideBar вы его пожлуйста втыкайте по мере возможности в документацию (правда, думаю, что нужно сначала всё-таки устаканить ТЗ на SideBar).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ещё баг: не совсем корректная обработка такой стандартной конструкции как

class classname;
  extern function void func;
endclass

function void classname::func();
endfunction

Не выводится имя класса на его декларации (а было бы полезно, ИМХО) и все внешние реализации отображаются как "classname", становясь неотличимыми друг от друга и потому бесполезными.

так, ну эту проблему убрал. действительно в текущем синтаксисе разбор объявления функции происходил так:

ключевое_слово тип_возвращаемого_значения идентификатор, а дальше хоть трава не расти, получалось, что при реализации функции объявленной внешней разбор останавливался на classname, что несправедливо (приводит к тому что и функция и класс имеют одно и то же имя). теперь разбор идёт по схеме:

ключевое_слово тип_возвращаемого_значения идентификатор(); - скобки для списка параметров факультативны

прыжок по двойному щелчку осуществляется на объявление функции, а класс classname как и положено явл. ... пока что фактически переменной(занесена в список переменных), хотя формально она должна быть типом. насколько принципиально заносить класс в typedefs я подумаю, это может и спутать человека, потому что фактически typedef class-a является форвордным объявлением (как бы то ни было это на мульки с перескоком на объявление класса и всплывающей подсказкой типа никак не влияет - и то и др. функц. ок)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

(появились ещё некоторые мысли по доработке, которые и реализовал, теперь думаю так часто обновлять не буду, пока концептуальные идеи закончились)

вот сбороне описание SideBar, в дальнейшем по появлению стабильных релизов будем вставлять в документацию к Intekus.

Итак что мы умеем делать на сегодняшний день:

 

Приблуды работают на SciTe Версия 2.01.68Ru на более ранних я не проверял, но раньше официального релиза 2.01 может и не работать (скачать саму програмку можно отсюда http://code.google.com/p/scite-ru/).

Приблуды натасканы на SystemVerilog (и соответственно обратно совместимы с Verilog), на VHDL я забил ещё в 2005 и поэтому его синтаксис мне писать лень (если есть желающие, могу рассказать как это делается - грамматика описана на lpeg).

Приблуды работают под Windows т.к. библиотека используемая для бокового окна пока что не имеет GTK реализации. Однако большинство функционала с этой библиотекой никак не связано и его можно вытащить для использования под Linux.

Приблуда была переработана из стандарной приблуды SideBar, которая мало чего полезного когда-либо умела и особенно по отношению к HDL, поставляемой в стандартном наборе SciTe.

Функционал:

1)приблуда при запуске появляется справа от основного окна редактирования на всю высоту поля редактирования, состоит из 3 вкладок; нас интересует вкладка №2.

вкладка номер два предназначена для быстрой навигации по коду и состоит из 3 окон: переменные, процедуры и пользовательские типы (см. рис. номер 1), в окнах содержатся соответствующие списки идентификаторов оных; списки могут быть отсотрированы в алфавитном порядке или в порядке появления объявлений в коде (см. контекстное меню); область видимости файл(пока);

список переменных вкл. параметры, порты, формальные аргументы, возвращаемые значения функций, переменные, провода, объявленные во всевозможно извращённых формах (единственное воспитательным ограничением является явное объявление типов в ANSI заголовках модулей и процедур);

список процедур вкл. в себя объявления функций и процедур;

список пользовательских типов - всё что было объявлено как typedef.

 

-двойной щелчок по элементу списков производит производит переход на объявление данного идентификатора (можно ползать по списку и клавиатурой, переход по кл.ВВОД);

-двойной щелчок на переменной в поле редактора даёт подсветку идентификатора в соотв. списке (есть недочёт у библиотеки - неактивное онко никак не отображает выделение/как правило должно выделение в неактивном окне д.б. серым фоном/).

 

2)следующий функционал никак не связан с отображением боковой панели (т.е. впринципе может быть вынут оттуда):

-двойной щелчёк по переменной с зажатым Shift приведёт к переходу на место объявления, с клаватуры это осуществляется по ctrl+',', обратный переход к месту начального скачка = ctrl+'.';

-одинарный щелчёк по идентификатору + alt приводит к появлению рядом с переменной её типа во всплывающей подсказке (что в общем-то перекрывает функциональность боковой панели и даже пожалуй удобнее);

-в последней версии такой же функционал добавлен и к идентификатору функции, т.к. в выражении идентификатор функции служит переменной и хорошо бы быстро распозновать его тип (см. рис. номер 2);

-так же добавлен этот же функционал и для пользовательских типов, что будет полезно если вы имеете сложный тип построенный на другом подтипе(см. рис. номер 2).

 

кажись пока всё

 

ЗЫ:Приблуда не оптимизировалась (пока) по быстродействию. как она будет себя вести например на первом пне не знаю (но хотелось бы узнать, для того чтобы определится насколько серьёзно нужно заниматься её приглаживанием)

post-5973-1260385237_thumb.jpg

post-5973-1260385423_thumb.jpg

post-5973-1260385564_thumb.jpg

post-5973-1260385710_thumb.jpg

SideBar.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте увожаемый CaPpuCcino.

Есть у меня одна идея, нечто подобное видел в редакторе Active-hdl. Мне было бы интересно увидеть функцию генерации шаблона вставки, что бы имея такой модуль:

module mod1 #(
  parameter A   = 1,
  parameter B   = 2
)
(
  input  wire          in1,
  input  wire          in2,
  output logic        out1
);
....
endmodule

можно было нажать кнопку и полчуть в буфере обмена нечто такое:

mod1 #(
  .A      (    ),
  .B      (    )
) inst1
(
  .in1    (    ),
  .in2    (    ),
  .out1   (    )
);

Возможно ли такое реализовать ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мне было бы интересно увидеть функцию генерации шаблона вставки, что бы имея такой модуль:

Возможно ли такое реализовать ?

спасибо за идею!

вчера как раз над этой фичкой думал. это сделать возможно и очень даже полезно. думаю прикрутить такое для модулей, функций и процедур.

в след. релизе будет

спб

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

спасибо за идею!

вчера как раз над этой фичкой думал. это сделать возможно и очень даже полезно. думаю прикрутить такое для модулей, функций и процедур.

в след. релизе будет

спб

 

Только сделайте лучше чем альдек, который копировал в инстанс все параметры, не отличая parameter от localparam. А если еще сделаете автоматическое выравнивание пробелами (альдек все мешает в кучу) будет самый смак %)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А если еще сделаете автоматическое выравнивание пробелами (альдек все мешает в кучу) будет самый смак %)

Ну а почуму пробелами, не люблю пробелы, ещё когда писал на асме x86 - привык к табу 4 символа.

Правильнее, как все делают, иметь в настройках параметр-чем заполнять, пробелами или табом.

Если табом - то велечина таба (обычно 4 для кода у всех по умолчанию).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну а почуму пробелами, не люблю пробелы, ещё когда писал на асме x86 - привык к табу 4 символа.

Правильнее, как все делают, иметь в настройках параметр-чем заполнять, пробелами или табом.

Если табом - то велечина таба (обычно 4 для кода у всех по умолчанию).

 

табы зло, CaPpuCcino сделайте табами, только потом конвертните в пробелы %)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

табы зло, CaPpuCcino сделайте табами, только потом конвертните в пробелы %)

А почему зло? По тексту бегать удобнее с табами, меньше нажимать нужно кнопок.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...