Jump to content

    

VitalyM4

Свой
  • Content Count

    468
  • Joined

  • Last visited

Community Reputation

0 Обычный

About VitalyM4

  • Rank
    Местный
  • Birthday 04/28/1981

Контакты

  • Сайт
    http://

Информация

  • Город
    Киев
  1. Здравствуйте! Фирме занимающейся разработкой и производством ASIC требуются 2 цифровых инженера-конструктора с опытом работы от 2х лет, на постоянную основу, 8-ти часовой рабочий день. Требования: знание verilog (синтезируемое и симуляционное подмножества), ассемблер (желательно), нормальный уровень английского языка - понимание спецификаций, участие в общении с клиентом. Фирма находится в районе метро Святошино. резюме - vim4@list.ru, детали и вопросы если есть пишите в сопроводительном письме. С ув. Виталий
  2. Цитата(Andrey.Belousov @ Apr 21 2009, 16:30) Кто нить вкурсе что с Cadence? И вообще где можно почитать какую нить рускоязычную литературу по етому вопросу? По каденсу нашёл только Encounter TTT, однако о етом продукте только брошурки рекламные... У Кад*нса для создания DFT структур используется RC Compiler, дальше можно оптимизировать скан-цепочки по-месту при помощи First Enc*unter. А непосредственно для ATPG используется Enс*unter Test. Насчет генерации- тест векторов я не специалист, а вот с DFT помочь могу если будут предметные вопросы. Русскоязычной литературы нет, по крайней мере я не видел, но зато встречаются лабораторные работы разных университетов по этой тематике, доволно неплохой материал для старта.
  3. Цитата(des00 @ Feb 25 2009, 05:22) не совсем понял, спрошу так : вам нужно проверить что tb.uut.<bla-bla>.spi_register.enable == 0 или то что spi_driver.read(ENABLE_ADDR) == 0? Т.е. вам нужна проверка состояния регистра в rtl коде или проверка его чтения из тестбенча ? Спасибо, нужно первое: tb.uut.<bla-bla>.spi_register.enable == 0 ЦитатаЭто в случае если проверяем именно чтение из тестбенча есть 2 варианта: 1. классически монитор слушает шину SPI в пассивном режиме и вычисляет транзакции из нее. 2. если делать еще один обработчик шины "ломает", то просто в драйвере что то типа monitor_cb.post_do(transaction_rsp) (в терминах ovm analysis_port_name.write(transaction_rsp)); Я начну с классического наверное, он понятней ЦитатаЭто в случае если проверяем именно регистр в ртл коде. в теме про интерфейсы я выкладывал статью как это сделать. Если кратко делаете абстрактный класс с абстрактными функциями, его в пакет. Это будет ваш API шаблон. В ртл коде между тегеами synthesis_translate_off/synthesis_translate_on наследуете этот класс и прописываете все функции. Заводите объект этого класса в ртл модуле. Потом в тестбенч передаете указатель на этот класс и используете ваше API %) Огромное спасибо за предоставленную информацию, как сделаю представлю на суд достопочтенной публике !
  4. Спасибо, нет нужно просто посмотреть на симуляции или выход Enable равен 0, в железе делать не надо. Цитата(des00 @ Feb 24 2009, 13:22) нужно проверить что биты встали через spi интерфейс? или вам нужно в сделать это в железе ? если первое, то 1. если делаете в ручную то усложните свой генератор, пусть он вставляет эти запросы, а проверяет что они выполнились монитор. Ну у меня в принципе так и сделано, вот я и спрашиваю как лучше организовать монитор. Как он узнает что команда отработана. Цитата2. если используете ovm то сделайте нужный sequence и играйте его на секвенсоре. До ovm еще пока не дорос, тут бы с простым SV разобраться ЦитатаМожно сделать через post_randomize но имено для комманд более удобен randcase если второе, то пихаем в rtl класс, пишем уровень api, передаем указатель на этот класс в монитор и смотрим нужные биты %) Второе звучит соблазнительно устрашающе, постараюсь по-немногу раскурить что это значит.
  5. С рандомизацией я разобрался, вопрос такой, а как проверять результаты выполнения когда команды случайным образом выбираются. Пример: имеем набор SPI команд : Кодtypedef enum {NOP, CR, RSLP, CSLP,RSTBY, CSTBY,          NRM, SM, SD, RO, WR, RR}     command_t; Они генерируются случайным образом и передаются на выполнение объекту класса spi_driver, который драйверит сигналы MISO, MOSI, SCLK, CS. [attachment=30052:SPI_command.png] А как проверить например что после выполнения CSLP комманды выходная шина logic[7:0] Enable должна обязательно быть равна 0. Это должен быть модуль который опять собирает сигналы MOSI, MISO, SCLK, CS в посылку и определяет тип команды и например по возрастающему фронту CS смотрит на результаты? Или нужно сделать некоторое подтверждениие в классе spi_driver что он отработал посылку, потом создавать объект, который проверит результаты и сгенерирует разрешение на формирование новой случайной команды? Или использовать транзакции (пока не совсем понятно как)? Как более правильно? Заранее спасибо
  6. Огромное спасибо, хорошо я попробую поднять тему, где уже это обсуждалось. http://electronix.ru/forum/index.php?showtopic=43365
  7. Цитата(CaPpuCcino @ Feb 22 2009, 21:45) на мой взгляд да, аналогично. при утверждение такого свойства first_match справа от импликации на результат не влияет и думаю будет оптимизировано при отсутствии этого first_match (объект исчезнет из памяти при первом же срабатывании). ЗЫ: касаемо того, что я предложил для ситуации -=Vitaly=-, я не уверен, что это оптимально и соответствует всем желаемым ситуациям, хотелось бы подождать критики и гласа народного Огромное спасибо, насчет оптимальности не знаю, но работает железно. Еще вопрос а при симуляции с SDF нормально ли будуть работать ассерты? Теоретически должны. И еще чтобы не плодить темы, как правильно проверять более сложные вещи: Например я посылаю SPI посылку 2 байта и после них хочу посмотреть как поменялись сигналы. Имею два экземпляра 2х классов: один генерирует случайным образом команды, объявленные как enumerate и передает во второй - драйвер, который драйверит непосредственно сигналы SCLK, MOSI, MISO ,CS. Так вот как лучше сделать следующее, когда выбрана и отработана команда SLEEP я хочу проверить сигнал bit[7:0] Enable должны быть равны 0 независимо от того что в в него было записано. Заранее спасибо
  8. Цитата(des00 @ Feb 19 2009, 18:45) Кое что, в предложенном мной решении мне покоя не давало. тот ассерт который я привел будет порождать новый тред каждый тактовый интервал. пока его не отключат сигналы buss/reset. Можно породить только 1 тред, если заменить (!buss) на $feel(buss). Но в этом случае будет запущен только 1 тред и проверен только один момент времени. А нужно 8 моментов времени. Нужно породить 8 тредов. проверил вот такой вариант, вроде работает Огромне спасибо! Действительно, когда я повесил $display на ассершн оно 8 раз писало что он успешно пройден. Теперь описываю следующие сигналы и не могу объединить два утверждения в одном. Первое что после фронта TRACK_BUF_DIG на 14 такте HOLD_BUF_DIG_B должен стать нулем Второе что они должны поменять свое состояние обязательно в одном такте Код property check_TRACK_BUF_DIG_HOLD_BUF_DIG_B;    @(posedge UUT.U_clock_divider.CLK1MHz25) disable iff (!PORB) (TRACK_BUF_DIG) |-> ##14 (!HOLD_BUF_DIG_B); //and $rose(HOLD_BUF_DIG_B)==$fell(TRACK_BUF_DIG); endproperty assert property (check_TRACK_BUF_DIG_HOLD_BUF_DIG_B); [attachment=29952:waveform.PNG]
  9. Здравствуйте! Подскажите пожалуйста можно ли описать такую последовательность и повесить на нее ассершн. При переходе сигнала BUS в 0, сигнал А - в клоках 0-7 должен быть равен сигналу В в клоках 8-15. Т.е грубо говоря В это копия А но на 8 тактов позже. Спасибо.
  10. Спасибо за столь содержательный ответ, а то у меня были некие опасения по-поводу использования таких флопов, но теперь я спокоен
  11. Здравствуйте! Просматривая библиотеку нашего фаба нашел что там есть триггеры без резета. В симуляционных моделях после питания они в Х. Т.е. начальное состояние это флип-флопа после включения питания предугадать нельзя, я правильно понял? Спасибо.
  12. Здравствуйте! Подскажите кто знает какие-нибудь хорошие тренинг по проектированию автомобильных ASICs. вообщем интересует все то, что называют Designs for hostile environment. Заранее спасибо.
  13. Цитата(CaPpuCcino @ Oct 16 2008, 15:17) что значит 30% на СВ? а остальное на чём? Остальное verilog и vhdl, vhdl если мне не изменяет память процентов 15 %
  14. Я наверное не очень удачно назвал тему. Мне не нужны исходники или еще что-либо, мне нужна статистика. Например: NVIDIA GPU 6800 - 30 % на СистемВерилоге. Достаточно просто названия и того что вы точно знаете что он написан на СВ :-)
  15. Здравствуйте! Вот мы обсуждаем примущества СистемВерилога и в то же время по интернету сложно найти дизайны которые были бы написаны на нем. Т.е я имею ввиду не использование SV для верификации и assetrion, а именно для дизайна. Кто-то может знает какие-либо известные проекты, которые были написаны на SV? Заранее спасибо.