реклама на сайте
подробности

 
 
5 страниц V  < 1 2 3 4 > »   
Reply to this topicStart new topic
> как быстро вникнуть в чужой код, советы по скоростному освоению чужой программы
SM
сообщение Jul 18 2014, 20:31
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(des00 @ Jul 18 2014, 04:19) *
+ голова, каранадаш и стопка бумаги.

И, как говорят у нас, "без пол-литры не разберешься". Так что еще пол-литра, плюс-минус sm.gif

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

Цитата(Torpeda @ Jul 18 2014, 17:00) *
Допросом автора с пристрастием...
Если он уволен...

Ну тут, как бы... Не надо портить отношения с коллегами. Уволен он начальством, или сам ушел, но это, обычно, не мешает поддерживать связь с коллегами и консультировать. Периодически пересекаясь по интересующим вопросам, например, в заведениях общепита. Сам по себе знаю - уходил (лет так 10 назад), оставлял кучу исходников (причем не только HDL, а еще и многие сотни кило ассемблера DSP, что гораздо хуже), и до сих пор готов помочь, если что там не понятно тем, кто сейчас работает. Вообще, IMHO, вопрос о вникании в чужой код возникает не в таких случаях, когда Вам передают код от уходящего коллеги, а когда код выдергивается откуда-то, из совсем чужих IP, и его надо модифицировать под себя не совсем официально.
Go to the top of the page
 
+Quote Post
sherr
сообщение Jul 19 2014, 04:56
Сообщение #17


Местный
***

Группа: Участник
Сообщений: 257
Регистрация: 10-06-06
Из: Ставрополь
Пользователь №: 17 955



Цитата(iosifk @ Jul 18 2014, 11:24) *
Есть вот veriloghgl.org - может что-то даст... VTС строит блочки и связи между ними... Не могу сказать, что "это наше все", но хоть что-то..

Разрешите чуть поправить ссылку VTC2012

Сообщение отредактировал sherr - Jul 19 2014, 04:56
Go to the top of the page
 
+Quote Post
egorman44
сообщение Jul 19 2014, 23:33
Сообщение #18


Частый гость
**

Группа: Свой
Сообщений: 140
Регистрация: 22-11-12
Из: Нижний Новгород
Пользователь №: 74 507



огогого сколько всего ! выражаю огромную признательность и благодарность всем ответившим ! респект и уважуха так сказать biggrin.gif

Цитата(Fat Robot @ Jul 18 2014, 12:33) *
Для пунктов 2 и 3 мог бы пригодиться doxigen. Это хоть как-то автоматизирует процесс в части струкутрного описания.
Для пункта 4 использовать LEC, чтобы избежать глупых ошибок.

Работа по освоению чужого кода долгая и довольно занудная. Естественно время зависит от вашего уровня понимания ЯОА, решаемой блоком задачи и необходимой глубины понимания кода. Но в любом случае, если каждый день делать пусть и маленький, но шаг, то вскоре будет повеселее, а потом и совсем быстро и весело.


doxigen актуален для verilog? зашел на main page читаю:

Цитата
but it also supports other popular programming languages such as C, Objective-C, C#, PHP, Java, Python, IDL (Corba, Microsoft, and UNO/OpenOffice flavors), Fortran, VHDL, Tcl, and to some extent D.


можно поподробнее, что же такое LEC ?
и извините , может быть за наивный вопрос, но в аббревиатурах не силач , что значит ЯОА, а то даже мой старый знакомый Гугл мне отказывается помочь smile3046.gif

Цитата(Torpeda @ Jul 18 2014, 16:00) *
Менеджерам на заметку...
А почему-бы и не научится документировать то что разрабатывается?
Деньги разработчику уплочены - значит и комплектность результатлов работы должна соответствовать - т.е. проект должен иметь документацию.
Тут скорее вопрос в какой форме и объёме документировать... Может чё посоветуют опытные люди по поводу именно документирования цифровых дизайнов...


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

Цитата(Maverick @ Jul 18 2014, 16:54) *
описание никто лучше не задокументирует, кроме самого разработчика, также как и программу - программист (мое мнение). Менеджеры могут "налить воды", отредактировать для лучшего понимания - но уже в готовом (мое мнение)...
про тестбенчи - это правильно, но у меня были случаи когда передавались описание/проект без тестбенчей.
Ответ разработчика был простой - не умею их (тестбенчи) писать и проверяю все осцилографом....
Наличие тестбенчей естественно ускоряет понимание чужого проекта/описания...


Насколько я успел разобраться тестбенчи тоже на проект не писались.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jul 20 2014, 06:33
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 4 081
Регистрация: 17-02-06
Пользователь №: 14 454



Цитата
Да хотелось бы очень узнать от бывалых , как собственно оформляется эта документация. Я так полагаю , что в ней должна присутствовать некая иерархия модулей проекта, с их кратким описанием.


Ну есть такое страшное от советских времен ЕСКД, единая система конструкторской документации, в нем есть разделы охватывающие программирование, они немного наивные и старые, но творчески переработав их можно получить хорошую базу.

Из требований последних работодателей было так:
Алгоритм бьется на модули. Каждый модуль имеет коротенькое словесное описание того что он делает, входных и выходных данных
Все функции и процедуры (у них больше был для С чем для верилога, но тем нем менее) имеют описание входных параметров, и выходного результата, и кратко что делают.
Отдельно описание всех глобальных переменных, зачем нужны, что делают, где используются
Отдельное описание всех используемых прерываний
Описание всех входных и выходных сигналов схемы в целом (для процов писали порты и куда идут как используются)
Описание всех используемых ресурсов (для процов писали сколько таймеров, уартов и так далее задействовано и куда)
Каждая строчка кода имеет комментарий, реально каждая, то есть
Код
int i = 0; //переменная для цикла это для процов
input main_clk; //основной входной клок схемы это для ПЛИС

Еще для процов меня заставляли рисовать блок схемы по ЕСКД с ромбиками ветвления и прямоугольничками процедур. Каждый прямоугольничек так же с комментариями.
Дополнительно (там фирма плотно сидела на мод басе) выдавалась карта устройства по регистрам, то есть адрес, тип данных, диапазон, что делает. А также карта реле (через них делали запуски всяких процедур, фактически интерфейс управления), опять же тип,диапазон, и что делают, где смотреть подтверждение. Фактически это описание внешнего интерфейса взаимодействия с устройством.


Это было очень муторно, с выкручиванием рук, убеганием от рисования блок схем и так далее... Даже был специальный человек которыйвсе это потом правил, верстал, поправлял... Потом схемы печатались, раздавались нескольким, скажем так менеджерам, они их смотрели читали, задавали вопросы, правили. Времени уходило больше чем на реализацию. Но я заметил такую вещь, так как блок схемы и описание алгоритма делалось до программной реализации, то большая часть затыков решалась на этом этапе, то есть когда доходило до писанины кода, это уже была без творческая механическая писанина понятного сформированного алгоритма. Ну и как сами понимаете когда вам дают прошивку с таким комплектом, то прочитав его вы знаете все... даже не надо глупых вопросов задавать типа а еще остался свободный таймер? Как то так... тепло их вспоминаю sm.gif...







Go to the top of the page
 
+Quote Post
ASN
сообщение Jul 20 2014, 08:00
Сообщение #20


Местный
***

Группа: Свой
Сообщений: 459
Регистрация: 15-07-04
Из: g.Penza
Пользователь №: 326



egorman44
Знакомая ситуация sad.gif. Долго, муторно и, зачастую, бессмысленно. Но вариантов нет.
Вам привели хороший пример про ручку и карандаш, и про то, то нужно время.
IMHO, необходимо (последовательно):
- выделить ВСЕ сигналы и процессы в таблицу;
- в таблицу внести столбики куда сигналы входят, откуда и куда идут с кратким описанием Вашего понимания их назначения;
- нарисовать блок-схему устройства и перенести (физически скопировать в квадратики) на неё код (как САПР);
- нарисовать машины состояний;
- нарисовать диаграммы изменения сигналов;
- нарисовать временные диаграммы сигналов;
- написать тест-бенч и проверить правильность работы RTL;
- создать контрольные примеры;
- скорее всего, местами переписать код - если нет тестового окружения, то писал его либо гений, либо разгильдяй. Второе наиболее вероятно.
После постараться дать "пинка под зад" руководителю, поскольку если проект не документирован и без контрольных векторов, то это не руководитель. Совсем.

P.S.
Golikov A.
IMHO, для ПЛИС больше подходит ЕСПД.
Go to the top of the page
 
+Quote Post
SM
сообщение Jul 20 2014, 08:39
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(ASN @ Jul 20 2014, 12:00) *
- скорее всего, местами переписать код - если нет тестового окружения, то писал его либо гений, либо разгильдяй. Второе наиболее вероятно.


в дополнение:

Тестовое окружение, как это очень часто бывает при работе с ПЛИС, даже почти всегда, может быть "снаружи железа" - в виде программ для того, с чем эта ПЛИС общается (PC, какой-то микроконтроллер или микропроцессор). Так что его надо искать не только в проекте ПЛИС в виде тестбенчей (они часто пишутся только тогда, когда "вживую", через программное тестирование и анализ сигналов лог. анализатором/осциллографом не позволяет быстро исправить ошибку, и то, не для проекта в целом, а лишь для неработающего модуля), а и виде тестового программного обеспечения для внешнего по отношению к ПЛИС процессора (ну или PC). И, кстати, это тестовое ПО может оказаться куда лучше комментировано, чем сам код ПЛИС. Еще бывает вариант, когда в процессе разработки ПЛИС еще, в параллель, разрабатывается и целое тестовое устройство, через которое во время разработки при помощи тестового ПО производится тестирование внутренностей ПЛИС, а, в последствии, тестирование готовых устройств.
Go to the top of the page
 
+Quote Post
khach
сообщение Jul 20 2014, 08:46
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 3 035
Регистрация: 29-12-04
Пользователь №: 1 741



Из личного опыта- найти предидущего разработчика и ему приватно поставить пиво - накормить в ресторане, даже за свои деньги. И договориться что он потратит час- полтора на лекцию об устройстве кода. Крупными кусками, хотя бы поблочно. Тогда станет понятна логика программы, а дальше уже можно разбираться по коду.
Go to the top of the page
 
+Quote Post
Maverick
сообщение Jul 20 2014, 10:53
Сообщение #23


я только учусь...
******

Группа: Модераторы
Сообщений: 3 248
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(khach @ Jul 20 2014, 11:46) *
Из личного опыта- найти предидущего разработчика и ему приватно поставить пиво - накормить в ресторане, даже за свои деньги. И договориться что он потратит час- полтора на лекцию об устройстве кода. Крупными кусками, хотя бы поблочно. Тогда станет понятна логика программы, а дальше уже можно разбираться по коду.

это возможно, если в одном городе, а если в разных городах ...
да тогда скайп в помощь, но все равно уже не то ...


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
SM
сообщение Jul 20 2014, 10:55
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(Maverick @ Jul 20 2014, 14:53) *
это возможно, если в одном городе, а если в разных городах...

Тоже возможно, зависит от степени заинтересованности, мотивированности и необходимости.
Go to the top of the page
 
+Quote Post
Fat Robot
сообщение Jul 20 2014, 18:02
Сообщение #25


ʕʘ̅͜ʘ̅ʔ
****

Группа: Свой
Сообщений: 972
Регистрация: 3-05-05
Пользователь №: 4 691



http://lmgtfy.com/?q=doxygen+verilog
http://lmgtfy.com/?q=RTL+LEC
http://yandex.ru/yandsearch?lr=213&tex...%8F%D0%BE%D0%B0

Цитата(egorman44 @ Jul 20 2014, 00:33) *
doxigen актуален для verilog?
можно поподробнее, что же такое LEC ?
что значит ЯОА,


Это хорошая демонстрация моего совета:

Цитата(Fat Robot @ Jul 18 2014, 10:33) *
Предварительно следует оценить "кредит глупых вопросов".


Пожелаю вам успехов.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jul 20 2014, 18:41
Сообщение #26


Гуру
******

Группа: Свой
Сообщений: 4 081
Регистрация: 17-02-06
Пользователь №: 14 454



Цитата
IMHO, для ПЛИС больше подходит ЕСПД

да, конечно ЕСПД, я просто всегда думал что это глава из общего большого документа ЕСКД, в ЕСПД схемы устройства не попадают, там только алгоритмики, потому у нас это называли общим словом ЕСКД, имея ввиду что каждый сам поймет какую часть пишет он.
Go to the top of the page
 
+Quote Post
egorman44
сообщение Jul 21 2014, 06:32
Сообщение #27


Частый гость
**

Группа: Свой
Сообщений: 140
Регистрация: 22-11-12
Из: Нижний Новгород
Пользователь №: 74 507



Цитата(Fat Robot @ Jul 20 2014, 22:02) *


ахахаха спасибо за let me google that for you, я не те запросы вбивал в поисковике biggrin.gif

Цитата(Fat Robot @ Jul 20 2014, 22:02) *
Пожелаю вам успехов.


благодарю!
Go to the top of the page
 
+Quote Post
aabmail
сообщение Jul 21 2014, 16:24
Сообщение #28


Местный
***

Группа: Свой
Сообщений: 208
Регистрация: 4-06-08
Из: Москва
Пользователь №: 38 056



До чего же полезно разработчику разбирать чужой код. Сколько всякого полезного можно найти в чужом коде... Всякий ли сможет заставить себя прочитать умные книжки по программированию?
А если нет комментариев? Да это получше всяких ребусов, загадок и т.д. и т.п. Уж тем более, если нет связи с разработчиком.
А если код глюченый? Как же все-таки приятно найти чужой косяк, увидеть, что вот тут разработчик проявил прилежность, а тут смалодушничал (в т.ч. examples от Xilinx из coregen'a). Словом - код отражает характер автора.

Простите за offtop.


Go to the top of the page
 
+Quote Post
Amurak
сообщение Jul 23 2014, 15:41
Сообщение #29


Частый гость
**

Группа: Свой
Сообщений: 147
Регистрация: 18-11-12
Пользователь №: 74 459



Цитата(aabmail @ Jul 21 2014, 20:24) *
Всякий ли сможет заставить себя прочитать умные книжки по программированию?

И много есть книжек по VHDL? Таких, чтобы не перепечатка стандарта с описанием синтаксиса и парой примеров, а в которых описываются реальные устройства?
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jul 23 2014, 18:49
Сообщение #30


Гуру
******

Группа: Свой
Сообщений: 4 081
Регистрация: 17-02-06
Пользователь №: 14 454



книжек как грязи, только едва ли описание реальных устройств полезнее перепечатки стандарта...

Go to the top of the page
 
+Quote Post

5 страниц V  < 1 2 3 4 > » 
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th April 2017 - 15:39
Рейтинг@Mail.ru


Страница сгенерированна за 0.01487 секунд с 7
ELECTRONIX ©2004-2016