Jump to content

    

BlackOps

Свой
  • Content Count

    597
  • Joined

  • Last visited

Everything posted by BlackOps


  1. я одного не могу понять никак. Что мешает российским и белорусским фаундри выполнять мелкие заказы на $3000 по 350нм технологии например? Ведь куча заказов будет сыпатся тогда к ним! А это же тоже бабки! Почему не делают? Ведь в европе делают же такие заказы!?
  2. ну скажем если не нужно 180нм, а около 350нм, неужели нигде по России или Беларуси нельзя найти чего за $3000? или 0.5мкм? какие расценки на данные процессы в целом на небольшую партию? (30-50 чипов)
  3. В Х-ФАБ или некоторых французских компаниях можно например заказать 25-28 чипов по технологии 350мкм за примерно $3000. У меня два вопроса: 1) В компаниях Ангстрем, Интеграл, Микрон есть что-то аналогичное по цене? Или в каких еще компаниях есть в России или Беларуси? 2) Кит и возможность заказа дается только компаниям или частным разработчикам тоже? поделитесь информацией кто чем сможет если можно, спасибо.
  4. Вот еше идейка: 100МГц биполярный преобразователь уровня напряжения от 1.8В до 3.3В )
  5. Это типа шутка? Где вы такие цены видели? 0.18mkм примерно $8500 стоит за 5мм^2, у различных фабрик по Европе. Для разных фабрик просто количество чипов будет разное, я знаю например некоторые дают примерно 50 чипов за эту цену + небольшая плата за корпус. Чисто для опытных работ может это выходит и не так дорого, для большой серии, будет дороже естесственно. Есть конечно же более дорогие процессы, где размер транзистора все тот же 0.18мкм но металлы другие и есть кое какие другие фичи, например как некоторые процессы IBM с которыми я сталкивался. Короче, цены не настолько огромны. Обратно к теме, всетаки я думаю что четких ответов на моим вопросы в первом посте по поводу Таннера не будет. Я просто пока пассивно смотрю в его сторону, попозже наверное займусь вплотную и скачаю ее для начала чтобы просто поигратся и посмотреть. Просто интересно было по быстрому для начала ответы на те вопросы получить. Он видимо имел ввиду поддержку в плане Дизайн Кита под определенный тех процесс, который интегрировался бы в Таннер.
  6. Аналогичные темы поднимались тут уже, я их просмотрел, но они были подняты давно. Время прошло, может сейчас есть какие то новые идеи итд. Вот вопросы которые интересуют меня: Общие вопросы: 1) Какие есть новые программные пакеты для разработки включающие в себя автоматическую разводку цифровых схем, смешанную симуляцию, экстракцию, разводку, итд. за разумную цену? (скажем до $35000) 2) Реально/Удобно ли использовать разные программы и совмещать их, или нет? И выгодней ли? Если да то какая комбинация от каких производителей софта лучше, и что кто использовал? Вопросы для гуру Таннера: 1) Я знаю примерно про Таннер, и я слышал разные слухи типа в нем "не реально" сделать БОЛЬШОЙ миксед-сигнал проект. Однако прошло уже примерно 2-3 года после того как я это слышал. Так вот, на сегодняшний день сможет ли если нужно полный пакет Таннера освоить большой Mixed-Signal/RFIC проект? Например, большой трансивер, цифровая часть итд. 2) В таннере можно делать Mixed-Signal симуляцию как например AMS в Cadence? ( где импортируеш Verilog-ams код и запускаеш его со своей транзисторной схемой) 3) В таннере есть анализ типа PAC и PSTB как в Cadence? 4) В Cadence например когда мне надо я могу симулировать индуктор прямо из вида Layoutс помощью линка в ADS Momentum, в Таннере можно такое сделать? Например подключить Layout вид таннера к ADSили другому симулятору и просимулировать разводку/индуктор/что угодно? 5) В таннере есть пакет который может принять Verilog код и развести все? (чтото вроде RC Compiler + Encounter для Cadence) ?
  7. Короче сделал по новому тестбенч весь. Изменил немного параметры некоторых транзисторов. симуляция идет нормально и значения с графиков DC Sweep равны значениям аннотированными на схеме на узлах Vop2 и Vom2. п.с. кстати, многие дизайн киты имеют ограничение на число значений после запятой для параметров транзисторов, например ширины или длинны. Мне кажется что когда делаеш W/L с очень маленьким шагом то многие значения не принимаются симулятором.
  8. от 0 до 1.8в, 2000 точек. Уже сделал это, и тут обнаружил новую проблему. Когда делаю Parametric Analysis я выбрал шаг 0.1в, от 0 до 1.8в для Vin, после симуляции показывается что нет ошибок. Но когда нажимаю на переменную в окoшке результатов, то открывается пустое черное окно и никаких значений не выводится. Пока незнаю в чем дело, разбираюсь.
  9. Vin = 900mV в аннотированной схеме. Аннотирую после прогонки DC Sweep. Vin имеет постоянное значение в переменной 0.9в, но в DC Sweep я прогоняю его от 0 до 1.8в т.е. я запускаю Sweep DC, вижу мой нормальный график, который в центре показывает 0.9В, потом в аннотированной схеме я вижу Vin=900mV, но Vop2 и Vom2 почемуто 1.469в. Тут явно что то не так.
  10. Я прогоняю dc симуляцию в режиме Sweep, входные напряжения и источники имеют определенное значение. После симуляции смотрю на график, вижу нужное значение, но проблема в том, что когда я делаю Annotate->DC, то вижу совсем другое значение! Почему такое разногласие? Вот для примера прикрепил скрин, на одном скрине схема, и на узлах Vop2 и Vom2 можно увидеть 1.469В, это при условии что на первой ступени схемы был источник питания с 0.9В. А теперь если посмотреть на график, то видно что при 0.9В узлы Vop2 и Vom2 имеют нужное напряжение в 899.679мВ. В чем дело может быть с ADE GXL? Что тут не так? Я не помню чтобы он когда нибудь мне такие фокусы показывал. Есть идеи?
  11. по пункту 1, делают в ЮВА, и что дальше? по пункту 2, по моему не в тему, у вас лично с ними получалось чтото такое негативное или вы просто говорите "а что если вот провалится?" А если с такой логикой мыслить, к кому тогда вообще можно претензии предъявлять? а насчет вскрытия, есть у меня знакомые люди которые это делать умеют. по пункту 3, не в тему тоже. Мне просто хотелось узнать кто либо тут конкретно указанную фабрику использовал или нет (это было бы логично из-за таких низких цен), вот я и подумал, что как это они не упоминались тут, хотя до того в других ветках были обсуждения про доступные фабрики.
  12. вот: http://cmp.imag.fr/products/ic/?p=prices а вот расценки на корпуса: http://cmp.imag.fr/products/packaging/?p=prices Посмотрите на расценки, совсем не дорого! Согласны? За эту цену дается 25 чипов. Интерестно просто они дизайн Кит дают бесплатно после подписания НДА? Или надо всетаки купить сделать заказ прежде чем дали его? Наверное если очень понадобится придется связатся с ними, а пока, просто интерестно было может ктото слышал о такой французской фабрики.
  13. ну, почти. я так решил проблему: 1) saveNetlist final.v -excludeLeafCell -includePowerGround 2) в окне LVS указал на экспортированный выше файл и еще CDL файл с описанием стандартных ячеек 3) в "Switch Keys" указал no_substrate_in_grlogic И вот тогда все заработало. Но это было пол дела. Проблема еще была в том, что у меня все стандартные ячейки в ките имели как питание VDD! и GND! И даже несмотря на то, что LVS не вылетел с ошибкой, он сообщал о критических ошибках типа замыкания глобальных пинов. Поэтому, в прежде чем исполнять пункт (2) я в начале CDL файла стандартных ячеек добавил: .GLOBAL VDD! GND! теперь все работает и LVS операция проходит чисто.
  14. В Encounter разведен автоматически дизайн. Потом добавлены модули FILL1,FILL2,NWSX повсюду в свободные места. После этого экспорировался GDSII файл. Затем он был импортирован в Virtuoso и чисто прошел DRC. Затем из Encounter я экспортировал физическое описание схемы в Verilog вот так: saveNetlist -phys -includePowerGround final6.v Теперь хочу сделать LVS ячейки layout которая сейчас в библиотеке r_test2. Дело в том что когда делаю LVS, то пишется: *ERROR* cell 'FILL1' is not defined. *ERROR* cell 'NWSX' is not defined. *ERROR* cell 'FILL2' is not defined. Понятное дело эти ячейки надо игнорировать, и я сделал это как показано в прикрепленном файле в настройках LVS Assura Но дело в том, что после этого всеравно пишет те же ошибки. Вот я прикрепил лог тоже. Как видите в начале примерно лога система пишет: Creating verification cell FILL1 layout r_test2 *WARNING* Cell is ignored. Creating verification cell FILL2 layout r_test2 *WARNING* Cell is ignored. Creating verification cell NWSX layout r_test2 *WARNING* Cell is ignored. т.е. она говорит что эти ячейки игнорированы, что мне и нужно. Но затем опять выдает вот эти ошибки: *ERROR* cell 'FILL1' is not defined. *ERROR* cell 'NWSX' is not defined. *ERROR* cell 'FILL2' is not defined. Почему эти ошибки выдаются если эти ячейки уже игнорированы? lvs_error.txt
  15. короче это было не правильно референс пин делать позитивным. Надо было делать его негативным конечноже, а не работало потому что во время экспорта ячейки из Виртуозо в Моментум почемуто не экспортировались Вии и соединение с землей было прервано. Добавил в ручную в ячейке Моментума Вии, и поставил порт референс негативным и все заработало. (кстати в данной конфигурации весь ток не будет через субстрат течь, для этого нужна другая конфигурация где как по умолчанию референс портом подразумевается земля под субстратом а не те точки отмеченные на рисунке)
  16. Вопрос по портам в Моментуме. Если я моделирую индуктор например в Кэденсе разведенный, то мне нужно просимулировать эффект возвратных токов через субстрат и кольцо что вызывает снижение добротности на высоких частотах. Вот я прикрепил картинку примерную моeй разводки которая в Моментум экспортируется для симуляции. желтым цветом отмечены Вии от проводящего кольца к субстрату. Порты объявляю так: PORT1: p1 pin, Positive reference - p1r pin PORT2: p2 pin, Positive reference - p2r pin Это правильно в Моментуме p1r и p2r объявлять как Positive reference? дело в том что когда пины: p1r,p2r объявлял как негативный референс то на графиках полная ерунда получалась но, а когда вообще без никакого референса то показывалась очень высокая добротность, и значение индуктивности не падало даже на очень высоких частотах т.к. возвратные токи не проходили через кольцо, т.е. референс по умолчанию был идеальной землей что естесственно действительности не соответствует.
  17. вопрос к разработчикам правил связанный с китом который нужно угадать? Ведь в каждом ките все по разному, если не разглашаете кит кто вам поможет.
  18. короче я переделал код потом. Одна из задач такая: Активируется внешние прерывание ЕХТI2, внутри него в зависимости от некоторых условий должно быть включено прерывание на ЕХТI4. т.е. как только программа начинается включено прерывание ЕХТI2 на высокий уровень внешнего сигнала а прерывание ЕХТI4 выключено. Прерывание ЕХТI4 должно включится внутри прерывания ЕХТI2 при соблюдении определенных условий. разумеется я в начале включаю SYSCFG clock, затем включаю прерывание ЕХТI2. вот код включения прерывания ЕХТI4 (код включения ЕХТI2 аналогичный только с другой маской): // External interrupt from pin PE4 (EXT1_IN3) SYSCFG->EXTICR[1] |= SYSCFG_EXTICR2_EXTI4_PE; // EXTI->IMR |= (1 << 4); // Mask PE4 EXTI->RTSR |= (1 << 4); // Rising Edge detection NVIC_SetPriority(EXTI4_IRQn, 0x3); NVIC_EnableIRQ(EXTI4_IRQn); Так вот проблема сейчас в том, что после включения прерывания ЕХТI4, и подачи сигнала 1 на соответствующий пин прерывание ЕХТI4 не срабатывает. Оно просто не включается и все. Я уладил это тем что создал глобальную переменную, и вместо того чтобы включать прерывание ЕХТI4 внутри ЕХТI2 я просто меняю значение созданной глобальной переменной, затем из ЕХТI2 программа возвращается к основному циклу, а там происходит проверка глобальной переменной, если ее значение изменено, то внутри основного цикла программы я включаю прерывание ЕХТI4 точно тем куском кода приведенным выше. И тогда все работает, т.е. подается сигнал уровня 1 на соответствующий пин и все срабатывает как надо. Стоит мне перенести этот код внутри прерывания ЕХТI2 и опять ничего не работает. Ошибок дебаггер сейчас не выдает. В чем же может быть проблема в данном случае? (точно не в железе, т.к. разница между работающим и не работающем прерывании ЕХТI4 только в перестановке вышеуказанного кода между циклом основной программы и телом прерывания ЕХТI2) Я помню пробовал раньше из одного прерывания включать другое и работало, так выходит иногда это не работает? Но от чего зависит? Я также пробовал проверить регистры IMR,RTSR просто чтоб убедится что они выставлены как надо когда тот код в теле прерывания ЕХТI2, и все было правильно. Но прерывание просто не активно! т.е. не срабатывает на внешний сигнал.
  19. Вот настройка порта А: //============================================================================= // GPIOA configuration //============================================================================= // enable GPIOA clock RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN; // Alternate Function //GPIOA->MODER = 0; // clear moder register GPIOA->MODER |= ( GPIO_MODER_MODER15_0 | // General Purpose Output, SPI3_NSS GPIO_MODER_MODER4_0 | // General Purpose Output, SPI1_NSS GPIO_MODER_MODER5_1 | // Alternate Function, SPI1_SCK GPIO_MODER_MODER6_1 | // Alternate Function, SPI1_MISO GPIO_MODER_MODER7_1 | // Alternate Function, SPI1_MOSI GPIO_MODER_MODER9_0 | // General Purpose Output GPIO_MODER_MODER11_0 // General Purpose Output ); // Output type //GPIOA->OTYPER = 0x0; // clear OTYPER register //GPIOA->OTYPER |= 0; // Push-Pull // Speed type //GPIOA->OSPEEDR = 0; // clear OSPEEDR register GPIOA->OSPEEDR |= ( GPIO_OSPEEDER_OSPEEDR15 | // SPI3_NSS 100MHz GPIO_OSPEEDER_OSPEEDR4 | // SPI1 NSS, 100MHz GPIO_OSPEEDER_OSPEEDR5 | // SPI1 SCK, 100MHz GPIO_OSPEEDER_OSPEEDR6 | // SPI1 MISO 100MHz GPIO_OSPEEDER_OSPEEDR7 // SPI1 MOSI 100MHz //GPIO_OSPEEDER_OSPEEDR9 | // 100MHz //GPIO_OSPEEDER_OSPEEDR10 | // 100MHz //GPIO_OSPEEDER_OSPEEDR11 | // 100MHz //GPIO_OSPEEDER_OSPEEDR12 // 100MHz ); // Push/Pull //GPIOA->PUPDR = 0; // clear PUPDR register GPIOA->PUPDR |= ( GPIO_PUPDR_PUPDR15_0 | // pull-up, NSS,SPI3 GPIO_PUPDR_PUPDR4_0 | // Pull-Up, NSS,SPI1 GPIO_PUPDR_PUPDR10_0 | // Pull-Up GPIO_PUPDR_PUPDR9_1 | // Pull-Down GPIO_PUPDR_PUPDR11_1 | // Pull-Down GPIO_PUPDR_PUPDR12_0 // Pull-Up ); // Alternate Function pins GPIOA->AFR[1] = 0; // clear AFR_H register GPIOA->AFR[0] = 0; // clear AFR_L register GPIOA->AFR[0] |= ( //(5 << ((4 - 0) << 2)) | // SPI1 NSS, AF5 (5 << ((5 - 0) << 2)) | // SPI1 SCK, AF5 (5 << ((6 - 0) << 2)) | // SPI1 MISO, AF5 (5 << ((7 - 0) << 2)) // SPI1 MOSI, AF5 ); А вот тут я выставляю 1 на пин, потом после нажатия кнопки выставляю 0 (пробовал разными методами, BSRRL/BSRRH тоже): GPIOA->ODR |= GPIO_ODR_ODR_9; // PA9 HIGH GPIOA->ODR |= GPIO_ODR_ODR_11; // PA11 HIGH // wait for CTRL_BUTTON1 press while ( !(((GPIOB->IDR) & GPIO_IDR_IDR_12) == RESET) ); GPIOA->ODR &= !GPIO_ODR_ODR_9; // PA9 LOW GPIOA->ODR &= !GPIO_ODR_ODR_11; // PA11 LOW Так вот пин9 в начале 3.3В, проверяю вольтметром, после нажатия кнопки он 0. А вот пин11 всегда на уровне 3.3В. Оба пина (9 и 11) имеют одинаковую разводку на плате, и последовательное сопротивление примерно 90 Ом между пином чипа и пином на плате куда подключается вольтметр (т.е. последовательно подключен и резистор). Почему пин 11 зависает всегда на 3.3В а Пин 9 работает нормально? как всегда пины перепутал, работает все короче.
  20. я пока временно переделал алгоритм, и включаю прерывание в основной программе, так все работает. просто плату рабочую надо было быстро отправить. как только вторую соберу, повторю ошибку скопирую сюда все данные.
  21. можно узнать какой именно компилятор используете Вы? Я например отсюда последнюю версию беру: https://launchpad.net/gcc-arm-embedded А ошибка выдавалась во время отладки с gdb