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

mttphreak

Свой
  • Постов

    77
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные mttphreak


  1. Все эти новомодные методологии нужны лишь в следующих случаях (в любом из):

    - Вашим конечным продуктом является IP или VIP

    - Вы выпускаете кристалл по топологическим/технологическим нормам, для которых участие в shuttle MPW является необоснованной роскошью, как и перевыпуск масок со слоями металлизации

    - Выпуск интегральных схем в вашей организации поставлен на конвеер: разные производственные участки (specification-RTL-testbench-и т.п.), разные бригады, разная добросовестность и квалификация участников производственного процесса, взаимодействие на уровне спецификаций, контроль выполнения на уровне метрик.

    Считаю, что тут нужно учитывать price-performance. Если лицензия на Quartus стоит $500, то лицензии на тулзы, которые умеют все это делать, стоят $500k/year на 1 человека :laughing:

    SystemC хорош тем, что simulation kernel для него бесплатный, GtkWave (waveform viewever) тоже OpenSource. Так что модели процессоров и systems-on-chip можно учить детей еще со школы, при этом ничуть не убавляя в архитектуре самой системы.

     

    OVM/UVM полезны тем, кто работает в серьезных ASIC и больших/mission critical FPGA проектов. Если ваша компания делает маленькие поделки туда-сюда, то тут лучше сосредоточиться на основной работе и писать testbenches на SV, т.к на debug и поддержку Verification IP у вас уйдет много времени. Даже Chris говорит, что для малых-средних проектов лучше использовать SV. Его книга (3-d edition) очень хорошо написана, можно с нее начинать.

     

    В любом случае, для verification нужно иметь хорошый background на С++

     

    SystemC - HDL

    http://www.vmmcentral.org/vmartialarts/200...tion-framework/

  2. Ну как там? Всё опять поменяли, убрали 2 старых глюка и добавили 10 новых?

     

    Запустился под Ubuntu 12.10 без проблем. Проекты под Stratix V собираються, все работает шур-шур :laughing: . Только памяти много хочет, для Stratix V меньше 16 Gig лучше и не пытаться.

  3. Мышей жалко.

    Можно попробовать на некоторых местных флудерах

    На счёт GPU vs FPGA, насколько я понял FPGA не даёт явного преимущества перед GPU, но GPU менее универсален, а скорость работы FPGA сильно зависит от типа задачи и способа её решения.

    C GPU легче начать, но FPGA мне видится более интересным и за пределами генетического программирования из-за того, что там можно написать всё что угодно.

    FPGA мне нравится тем, что сфера применения у него широкая.

    Тут лучше заниматься своим делом. Bioengineering - очень широкая предметная область. Если серьезно занимаешься генетикой, то тебе и GPU и FPGA будет маловато - тут нужно юзать суперкомпьютер. Если у тебя есть уже что моделировать и мощностей ваших серверов уже нехватает, кинь мне письмо с описанием проэкта и ваших потребностей. У меня есть знакомые, которые под такое дело расшарят доступ на местные суперкомпьютеры, лишь бы что-то получилось. Если совсем все хорошо и уже что-то получаеться, можно и денег влить туда, есть знакомые, которые этим могут заинтересоваться.

     

    Так где и какой набор FPGA купить и во сколько это обойдётся (если покупать для начала не high-end, а что-то для новичков не выше 500$)?

    Если это студенческий проект или чтобы поиграться, то сумма скорее будет начинаться с $6k. За это можно купить StratixV борду, которая вместе с Quartus 13 будет поддерживать OpenCL. Можешь купить GPU всего за $2.4k и эту OpenCL-enabled FPGA и один и тот же код гонять и там и там (теоретически!)

    Но если будешь все это делать на FPGA с маленькой командой, то до генетики еще не скоро доберешься. Проще всего видиться использовать суперкомпьютер или GPU накрайняк.

  4. Уважаемый All! Помогите!

    Жизнь заставила самому взяться за написание стека протоколов UDP/IP на microblaze для обертки HARD TEMAC на virtex5. Причем имеется критичность по быстродействию.

     

    Что за приложение?

     

  5. Здравствуйте

     

    У кого-нибудь есть опыт интегрирования Partial Differential Equations (PDE) на FPGA ? Сейчас интересуемся простыми линейными уравнениями 1-2 порядка.

     

    Интересует возможность распараллеливания алгоритма и сравнение по времени выполнения с программными имплементациями на C++ and Java :rolleyes:

     

    Как вообще там дела обстоят с потреблением памяти и точностью решения? Предполагаеться наличие PCIe или Ethernet интерфейсов для Data input/output

     

    Комментарии, критика, ссылки, советы и просто мысли вслух приветствуються :beer:

  6. Всем привет. Нашел недавно сабж от автора Ashwin Mendon, и попробовал поотлаживать для приведения его в рабочий вид и дальнейшего использования в корыстных целях.

    Предлагаю тут пообсуждать работу (а точнее не работу) данного ядра. В принципе написано оно ужасно, но за не имением ничего другого и понимание что с нуля писать будет долго, ничего не остается.

     

    Target Platform: ML605 Xilinx Virtex-6 240T

     

    Такие стандратные вещи нужно покупать. Я знаю этих ребят и для каких целей разрабатывалось это ядро. Они явно указывают, что этот core поставляеться "AS IS", без каких-либо гарантий, скорее в образовательных целях. Установка таких вещей в коммерческие продукты сулит большой головной болью на этапе расширения проекта и поддержки покупателей.

     

    Для твоих "корыстных" целей ядро можно купить за $15k-20k для FPGA и $35k-$45k для ASIC. Лучшие имплементации предлагают Американские компании. Там и оптимизация по latency and throughput, и документация, RTL, Verification Environment, Integration Scripts, Use Case examples, полный цыкл тестирования в железе и даже support для ASIC Back-End. :beer:

     

    Если цены не очень доступны, можно посмотреть в сторону Индии или Китая. Покупать у Российских компаний не рекомендую, т.к у большинства вендоров цены американские, а вот качество, поддержка и опыт коммерческих проектов очень ограниченый. :laughing:

  7. Предлагаю накидать сюда каких-нибудь ссылок, а если появятся знатоки, можно и вопросы будет задать.

     

    Можем сделать для вас хорошее предложение в этой области + хороший консалтинг и поддержку. Дополнительные детали и цены - в личку

     

  8. Посмотрите в этой статье:

    Using-Parameterized-Classes-and-Factories-The-Yin-and-Yang-of-Object-Oriented-Verification

    А здесь написано в стиле C++, стандарт SV не предполагает такое создание безымянных классов.

     

    Спасибо за ссылку :beer: . Я в какой-то момент нашел эту статью, но сама реализация показалась мне уж слишком generic. Затем я порылся в OVM and UVM исходниках и обнаружил, что подобная реализация имплементирована и там. :laughing:

     

    В конце-концов, я остановился на более простом варианте, который нашел тут

    http://chipdesignmag.com/display.php?artic...&issueId=21

  9. Здравствуйте

     

    В проэкте нужно динамически подменять разные классы данных, чтобы создавать layered sequences и хорошенько прогружать логику. :smile3046:

    Нужно написать свою фабрику. Пример ниже не компилиться. Помогите найти ошибку или посоветуйте свою реализацию.

     

    Компилятор падает в месте, где выполняется this.my_car = new car_tank (); :laughing:

     

    Нужна именно custom factory, UVM/OVM/VMM не предлагать

     

    class car;

    // Common data memeber

    string ttype;

     

    // Common methods

    virtual function string get_type();

    endfunction

     

    endclass

     

     

    class car_tank extends car;

    function new();

    this.ttype = "car Tank";

    endfunction

     

    function string get_type();

    return this.ttype;

    endfunction : get_ttype

     

    endclass

     

     

    class car_bus extends car;

    function new();

    this.ttype = "car Bus";

    endfunction

     

    function string get_type();

    return this.ttype;

    endfunction

     

    endclass

     

    class car_factory;

    car my_car;

     

    // Common methods

    function car get_car(int sel);

    if(sel == 1) this.my_car = new car_tank ();

    if(sel == 2) this.my_car = new car_bus ();

    return this.my_car;

    endfunction

     

    endclass

  10. Очень сложно найти переводчика со знаниями в плисоводстве. Помню, на первом семинаре в СПб в июне у меня был составлен список терминов с переводом, и была беседа с переводчицей, но все равно, получилось не очень.

    Привет буду в Москве в конце сентября до половины октября. Могу поработать у вас пару дней внештатным переводчиком со знанием дела. С Zynq уже знаком, на x-fest бывал.

    Если ваша компания организовывает дизайнерские вечеринки в Москве, пишите в личку договоримся :beer:

  11. вопрос был "какое отношение coverage имеет к выявлению глитчей?"

    Заказывай у своего Team Lead'a Verification Training - приеду расскажу

     

    и кстати накой использовать ещё один тул для этого(ловли глитчей)?

    ассертов разве недостаточно?

    Не достаточно. Профи всегда используют разные подходы к задаче, по крайней мере рассматривают несколько options. Ни одна тулза не дает возможность на 100% вылавливать даже functional bugs (не говоря о unexpected glitches) в установленный deadline, тем более, если речь идет о SOC, которые делает Samsung LSI :laughing:

    Что касается Lint, то это милая штука, если умеешь правильно пользоваться ей. Я встречал многие случаи, когда симулятор либо не выдавал Warning на явно глючный RTL, либо дизайнер не обращал на них внимание и bugs вылавливали на поздних стадиях, вместо того, чтобы за 20 мин обнаружить их при помощи Lint

  12. Гмм, у меня задача - все же кавер, просто я сначала думал что этим занимаются ассерты, поэтому наклепал их сейчас везде где можно.

    Все нужно делать с умом. У Assertions тоже свои drawbacks - они замедляют симуляцию, их нужно качественно дебагать и просто уметь писать ). Но в твоем asynch design они почти must-use :1111493779:

     

    Покрытие соответственно у меня получилось 76% по своим точкам, и 51% на автомате.

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

    Соответственно, у вас должен быть Verification Spec, в котором прописаны числа необходимого coverage для этого проекта. SV позволяет использовать разные Coverage , поэтому ваш Project Manager должен утвердить число по каждому из них. :yeah:

     

    Твоя работа как Verification Engineer начинается тогда, когда уверенный в своем коде RTL дизайнер фризит код, а заканчивается тогда, когда ты по тулзам генерируешь репорты, которые удовлетворяют стандарт данного проекта.

    Все остальные технологии - дело вторичное. Все они направлены на то, чтобы получить необходимо минимальные числа (в %) за выделенное время минимальными усилиями команды.

    Качество работы крутится вокруг этого, это и называется Metric Driven Quality Assurance в ASIC и FPGA.

     

    Я правильно проверил покрытие, или оно как то по другому проверяется?

    Ты получаешь число, это и есть coverage. Теперь нужно понять, какой coverage , как он связан с RTL и каким образом твои новые тулзы и числа могут помочь RTL дизайнерам вылавливать functional bugs, races, glitches etc в своем дизайне

     

  13. но поскольку информации по этой тематике практически нет,

    Информации с лихвой. Куча сайтов, книги, IEEE publications и т.д Так что карьеру в цифровом дизайне (софте, науке и т.д ) нужно начинать с американского языка.

    Если дизайнер не знает язык, то его рост как мечта безногого о беге :crying:

     

    а стоимость 2-3 перезапусков закладывается в бюджет изначально, то топологии отправляются на завод по старинке, т.с. с божьей помощью )

    Супер, рентабельность ниже плинтуса. Стоимость разработки ASIC достигает $100M, time-to-market - 1-1.5 года. Для FPGA = $1-10M, TTM 3-15 месяцев

    Таким образом, 3 перезапуска это грубо 3 года работы всей команды, куча $$$ и не факт, что чип будет работать.

    Кроме того, в Embedded дизайнах <= 65nm разработка софта уже более 50% development cost, в таком подходе embedded software даже не начнут разрабатывать.

    Итого, 2-3 года, куча бабла и чип можно спустить в туалет (это тоже можно закладывать в бюджет)

     

    А фактически, верификацию я вообще както даже и не слышал, что в РФ кто то делает, разве только аутсорсеры вроде спирита или телума .. элвис вроде еще интересовался верификацией. Остальные же отправляют сырые кристаллы прямо так, по нескольку раз - российская специфика.

    Это случайно не они делают чипы для российских спутников? Снова Роскосмос утопил ракетку. За 2 года 7 ракет 10 спутников на сумму около $2B :laughing:

    Программа освоения Марса с 2004 стоила для NASA $2.5B , сравнивайте результаты

     

    Лично моя задача сейчас - освоить азы SVA и доказать эффективность руководству фирмы. Если получится, выйдем на новый уровень: будут учиться и другие.

    У нас скоро будет 2-months fellowship opening для Verification Engineer. Шли резюме на [email protected]

     

  14. Наверное, все эти вопросы ко мне, так что я постараюсь быть кратким.

    Перефразирую предыдущий вопрос - в чем лично вы привыкли моделировать код с проверкой покрытия используя SVA?

    На данный момент assertions поддерживают только 3 ASIC симулятора, так что выбор небольшой. Пользуйся тем, который может себе позволить твоя компания.

    Вопрос номер два: как лучше всего вставлять ассершны? Я вижу несколько вариантов:

    В SOC Microsystems дизайнеры сами пишут assertions. Т.е есть Design Assertions и Verification Assertions. :rolleyes:

    Design Assertions могут быть даже synthesizable и мэпяться на external pins.

    Я требую от дизайнеров, чтобы они использовали assertions вместе коментов и у них это уже неплохо получается :a14:

    Что касается Verification Engineers, они вставляют assertions в Interfaces, в RTL (bind или напрямую - зависит от нескольких факторов), пишут checkers и затем складывают их в Reusable Libraries, которые конечно же по полной используются в следующих проектах.

     

    Вообще, в нашей компании верификация и hardware-software co-simulation начинается задолго до самого RTL дизайна, когда checkers пишутся на абстрактном Assertion Language и при помощи их идет Interface Validation между блоками high-level model или BFMs :laughing:

     

    И еще третий вопрос, тоже задам аккуратно, чтобы избежать холиваров: в каком редакторе вы работаете?

    gvim + куча скриптов под bash, tcl/tk и emacs

     

    Судя по всему, ты один из немногих дизайнеров, который занимается ASIC Design/Verification. Verification and Assertions есть своего рода art, которому учаться у других, по крайней мере на ранних стадиях.

     

    Тебе лично нужен тренинг. Тебе и другим инженерам в вашей команде. Такой, где инструктор введет в курс дела, профессионально, последовательно покажет, расскажет, объяснит почему. Тренинг, на котором будет куча примерчиков, theory и labs.

     

    Я могу провести для вашей компании такой тренинг для команды до 10 человек. Соответсвенно, могу покрыть SV, OVM, UVM, Assertions, Coverage, Verification Metrics, разные виды тулзов, примеры скриптов и опыт ведущих компаний, дать руководителям оценку по времени и трудозатратам для каждого метода, оценить time-to-market и т.д

     

    По вопросам стоимости и условий пиши в приват.

    Industry Average стоимость и условия можно посмотреть тут: http://www.sutherland-hdl.com/workshop-pricing-terms.php

  15. Если я правильно понимаю, то skip_double_c |=> !c throughout b_next_to_a; это -

    Написано буквально такое: При каждом положительном фронте клока, исключая время, когда RESET выставлен в высокий уровень, симулятор проверяет первое условие (precondition) в виде skip_double_c. Как только sequence skip_double_c выполняется successfully (конечно же, это происходит на положительном фронте клока в момент Х), на следующем фронте (X+1) симулятор проверяет второе условие (consequent).

    Второе условие буквально такое: на каждом положительном фронте клока ПОСЛЕ того, как skip_double_c выполнился ХОТЯ БЫ ОДНАЖДЫ, сигнал _с_ должен быть ВСЕ ВРЕМЯ на низком уровне, когда выполняется sequence b_next_to_a.

     

    Если провести аналогию с дизайном, этот assertion аналогичен такому: Q || F&&D, только с той разницей, что F&&D будет проверяться ТОЛЬКО после того, как Q выполниться ХОТЯ БЫ РАЗ :laughing:

     

    Recommended Readings (в нашей компании - это MUST READ для Verification Engineers)

    1. Basic--->Middle: Srikanth_Vijayaraghavan,_Meyyappan_Ramanathan-A_Practical_Guide_for_SystemVerilog_Assertions-Springer

    2. Middle --> Advanced: Eduard Cerny, Surrendra Dudani, John Havlicek, Dmitry Korchemny The Power of Assertions in SystemVerilog

     

    Попробую погонять на эмуляторе, спасибо еще раз!

    Наверное, в симуляторе, а не эмуляторе. Последний - это совсем не то, что наверняка подразумевается в топике. Хотя на FPGA Emulation Tools тоже есть возможность имплементировать assertions, даже synthesizable assertions, результаты которых можно наблюдать на определенных pins ASIC или FPGA

  16. Есть условие для проверки A |=> ##0 B.

    Хреновое условие. Наверное, предполагалось A |=> B

    То, для чего используют ##0, имеет смысл в event queue в симуляторе. На начальном этапе лучше с этим не играть, т.к это источник потенциально трудно выловимых Gotchas :laughing:

     

    Но! при этом нужно в проверке опустить момент, когда стоит RESET, после чего нужно пропустить два появления строба C, и только после этого начинать проверку.

    sequence skip_double_c;

    (C |=> !C)[*2]; //assuming 1 cycle strobe for C

    endsequence

     

    sequence b_next_to_a;

    A |=> B;

    endsequence

     

    property pB;

    @(posedge CLK) disable iff (RESET)

    skip_double_c |=> !c throughout b_next_to_a;

    endproperty

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

    Данный IP будет трудиться в новом поколении XStriker: http://socmicro.com/products/datacenter-solutions/xstriker

     

    Да и намек на предполагаемый бюджет интересен - я недавно пытался корку 10G TOE прикупит в HitechGlobal так блин загадали 100K зелени за скомпилированный нетлист 8-() - нет чтобы просто сказать "пошел вон".

     

    Тебе очень повезло, что эти ребята вообще ответили :biggrin: . Это известная своим снобизмом компания, которая не очень любит продавать свои products за пределами США ))... Они даже нам для дизайн центров самые новые борды продавать не хотят, хотя стоят оные как автомобиль среднего класса и требуют кучу дорогих IP сверху :smile3009: Контора оборонная

     

    Если серьезено, мы бы хотели приобрести готовый IP за разумные деньги. Если не сможем, будем разрабатывать сами, наймем девелоперов или отдадим кому-то в outsource :smile3046:

     

    Разрабатывали подобные вещи. Для детального дальнейшего общения напишите на почту: [email protected]

    Какой у вас получился RX/TX Bandwidth? Я тут надыбал готовый ASIC за пару баксов, но у него как-то 50Mb/s кажется не слишком круто :crying:

    http://www.wiznet.co.kr/sub_modules/en/pro...25&pid=1012

  18. Здравствуйте

     

    Для нашей новой суперскоростной архитектуры нужна аппаратная ипмлементация TCP/IP stack, соответсвующая 2-4 Layers (OSI).

    Ваш IP Core должен поддерживать Tri-Mode 10/100/1000, SFP (1GbE) , желательно SFP+ (10GbE). Ну или хотя бы просто SFP (1GbE). :laughing:

     

    Принимаются OpenSource/Commercial IPs, а также письма от опытных разработчиков, желающих потенциально получить контракт на разработку такого IP.

    Имплементация - желательно на Verilog 2001/SystemVerilog с Verification IP inside.

  19. Вот думаю загружу и ее на Map&PR. Поставил ISE запустил SmarXplorer и... получил облом - на одной машине запускает только один поток на PR!

     

    Что и как надо настроить чтобы можно было под Linux на одной машине запускать параллельные потоки в SmarXplorer?

    У меня та же проблема. Использую ISE 13.4 под Ubuntu 11.10 64 Bit в command line XFLOW.

    XST, PAR and MAP упорно используют одно ядро, без каких-либо намеков на Multicore.

     

    Нужно смотреть Release Notes, т.к в настройках Multicore Usage нигде не видел. Похоже, что Xilinx держит релизы для Linux приоритетом ниже Windows, поэтому может еще просто не добрались туда. :crying:

    P.S. Время Map&PR одного и того-же проекта в один поток на Core2 2600K и Xeon5600 приблизительно равны (~30 мин), что вызывает у меня недоумение.

    Это сильно зависит от того, сколько у тебя бит OS (32vs64), какие IP Cores ты используешь и ОЧЕНЬ! от Logic Usage. Если у тебя Usage более 75% Map, PAR будут роутить оочень долго.

    Рекомендуется для HighSpeed дизайнов Usage не превышать 70% :laughing:

  20. Я пытаюсь добавлять в свои модули assertions и с последним выходит некрасиво.

     

    REQ_ACK:
    // hold req asserted until and including ack asserted
    assert property ( @(posedge clk) disable iff(!rst_n)
        req |-> req[*1:$] ##0 ack
    );

     

    Я получаю сообщения:

     

    Есть ли какие-нибудь способы переписать по-другому?

     

    Я бы сказал, что lint'er/compiler ругается на Indefinite timing window, который собственно задается конструкцией типа [*1:$].

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

     

    Поэтому "Eventuality Operator", коим является :$ не рекомендуют использовать без особой надобности, а писать хорошо определенные во времени assertions:

     

    property p1;

    @(posedge clk) a |-> ## [1:5] b ## [0: 2] c;

    endproperty

     

    a1: assert property (p1);

    c1: cover property (p1); //Add to Functional Coverage Scoring

     

     

     

  21. Решил снова взять в руки шашки и поковырять UVM либу, смотрю на uvmworld, а там лежит релиз 1.1 от июня 2011. Неужели почти за год ничего нового не появилось ?

     

    Много чего появляется, только все эти проекты коммерческие и стоят денег. Чтобы делать серьезные дизайны и их верификацию, обычно мало "поковырять" либу. Те инженеры, которые это хорошо умеют делать стоят в Калифорнии $100-130k :laughing:

     

    SOC Microsystems тоже продает products на их основе - http://socmicro.com/products/for-chip-designers/ovy-verifier

  22. отсортировать по возрастанию/убыванию элементарно, код на форуме выкладывался. на сыклоне 3 ем, будет работать где то на 160-200МГц.

    Ok, спасибо ща посмотрю. Если вы где-то публиковали подобные вещи в своих статьях (некоторые я уже прочел - по STA у вас очень хороший пример :a14: ), пожалуйста, дайте ссылки

     

    а вот что вам конкретно нужно можно подробнее? В том числе организация интерфейсов ?

    Нужен высокопроизводительный сортировщик деревьев для коммерческого алгоритма, которому Linux будет по DMA PCIe (2.0 - 3.0) сбрасывать большие массивы такого типа структур и забирать обратно. На борде будет стоять GDDR5 или Rambus DRAM + что-то менее производительное для DMA буффера и хранения промежуточных результатов... Как-то так...

     

    Система еще не готова, ведется собственно рассчет архитектуры. Важно не просто реализовать сортировку, а сделать так, чтобы она на больших массивах данных работала быстрее, чем Core i7 и GPU CUDA :wacko:

     

    ЗЫ. вы дали хедер класса, а где его тело ?

    Прикрепил

  23. Итак задача: Имплементировать на FPGA ( Altera Stratix V ) ALU, который даст max скорость сортировки binary tree простейшего типа (тип структуры ниже).

    Также рассматриваются стандартные реализации, как Ripple Carry and Carry Look Ahead ALUs.

     

    Если кто занимался подобными вещами - делитесь опытом! :beer:

     

    struct node

    {

    int key_value;

    node *left;

    node *right;

    };

     

    class btree

    {

    public:

    node *root;

     

    btree();

    ~btree();

     

    void print_item (node* node);

    void insert(int key);

    node *search(int key);

    void destroy_tree();

     

    private:

    void destroy_tree(node *leaf);

    void insert(int key, node *leaf);

    node *search(int key, node *leaf);

    };

  24. Вопрос собственно такой... возможно ли

    наблюдать сигналы во внутренних узлах схемы?. Система моделирования отображает только сигналы выведенные непосредственно на пины микрухи (EPM3064 в частности).

     

    SignalTap II Logic Analyzer - описание inside :beer:

     

    В ASIC такая штука называется Co-Emulation Engine (например, Mentor Veloce)

     

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