Плис Achronix – опыт освоения



За более чем десятилетний срок работы с ПЛИС, мне довелось работать с продукцией четырех разных производителей. При таком разнообразии невольно обращаешь внимание как на общие черты процесса разработки, так и на особенности, присущие той или иной компании. И вот, пару месяцев назад мне неожиданно представилась уникальная возможность близко познакомиться с новым семейством ПЛИС, производимым небольшой, но амбициозной компанией из Калифорнии. Я говорю сейчас о самом молодом производителе ПЛИС – компании Акроникс (Achronix) и выпускаемой ею ПЛИС Speedster22i HD1000.

С момента своего создания (2004 г.), эта молодая компания смогла разработать ПЛИС сегмента HI-End, обладающие оригинальной архитектурой и уникальными характеристиками. Более того, компания первой среди всех производителей ПЛИС заключила стратегический союз с корпорацией Интел и с тех пор производит свои микросхемы (размер которых, как видно из рисунка, уже давно вышел за рамки “микро”) на самой совершенной технологической базе Intel на заводах, расположенных непосредственно в США. Сейчас серия Speedster выпускается по технологии 3D Tri-Gate 22нм. Программа развития серии предусматривает в недалеком будущем переход на 14нм и 10нм техпроцессы (по мере их освоения на заводах Интел).

В этой обзорной статье я хочу кратко описать, с одной стороны, те продукты которые используются для работы с ПЛИС Speedster, а с другой – свой опыт (включая эмоции) работы с этими продуктами на примере очень простого, но реально выполненного проекта. Итак …

“Железо” и средства разработки


Пожалуй, единственный на сегодняшний день способ ознакомиться с ПЛИС Speedster22i в работе – это купить (получить в подарок, арендовать, взять в лизинг …) отладочный набор Speedster22i HD1000 Development Kit, что мы и сделали. В процессе ожидания доставки была проделана подготовительная работа: закуплен мощный компьютер с водяным охлаждением, 32GB ОЗУ и двумя мониторами. Для того, чтобы получить средства разработки, пришлось зарегистрироваться на сайте Achronix (http://www.achronix.com/company/contact-us.html) и получить пользовательский аккаунт. Пользовательский аккаунт открывает доступ в зону сайта, содержащую необходимое для работы программное обеспечение, а так же демонстрационные и ссылочные дизайны. В чем между ними разница? Ссылочные дизайны (reference designs) поставляются с исходными кодами для ПЛИС, в то время как демонстрационные (demodesigns) как правило, содержат только загрузочные файлы для ПЛИС.

Подтверждение регистрации заняло пару дней и завершилось получением письма, содержащего логин и пароль. После этого появилась возможность скачать необходимые для начала работы средства – собственную оболочку компании Achronix под названием ACE и синтезатор Synplify. Но для того, чтобы эти программы заработали, к ним необходимы еще файлы лицензии. Для этого требуется заполнить еще одну форму и указать MAC-адрес сетевой карты. Файлы лицензии присылаются по электронной почте. Их подключение тоже не вызвало никаких проблем, кроме того, этот процесс подробно описан в документации. На моем компьютере установлена ОС Windows, но средства разработки имеются и для Red Hat Linux.

Оставшееся до прибытия платы время было посвящено изучению архитектуры ПЛИС Speedster22i HD1000, освоению средств проектирования и написанию простого дизайна.

Чем интересна серия Speedster22i? Что отличает ее от изделий других компаний? ПЛИС Speedster22i имеет свою “изюминку” – аппаратные IP-ядра, ориентированные на высокоскоростные коммуникационные задачи. По наборам таких ядер ПЛИС Achronix до сих пор вне конкуренции. Номенклатура ядер: DDR-3 – 6 шт., PCI Express Gen1/2/3 x1, x4, x8 – 2 шт., Ethernet MAC до 100G – 2 шт, Interlaken – 2 шт.. При этом обеспечивается суммарная пропускная способность свыше 400 Gb/s, что, безусловно, позволяет отнести ПЛИС серии Speedster22i к категории HI-END.



В остальном, рассматриваемые ПЛИС по своей структуре не сильно отличаются от продукции других производителей: они состоят из логических кластеров (на основе 4х-входовых LUT), блочной и распределенной памяти, а так же арифметических блоков, включающих мощные 56-битные умножители. Все это имеется в достаточных количествах для достижения самой сложной функциональности. Скоростные характеристики так же впечатляют: память, например, имеет максимальную рабочую частоту 750 МГц. Основные характеристики ПЛИС серии Speedster22i приведены в нижеследуюющей таблице:

Параметры HD680 HD1000 HD1500
Объем логики, включая аппаратные контроллеры (эффективных ячеек LUT) 660000 1045000 1725000
Объем программируемой логики (в LUT) 400000 700000 1100000
Количество модулей BRAM 600 1026 1728
Количество модулей LRAM 4320 6156 10368
Объем 80-и килобитных BRAM (всего Kбит) 48000 82080 138240
Объем 640-битных LRAM (всего Kбит) 2765 3940 6636
Умножителей (28×28) 240 756 864
Количество линий SerDes 12.75 гб/с (Гигабит/с) 40 64 48
Количество линий SerDes 28 гб/с (Гигабит/с) - - 16
Аппаратных контроллеров Ethernet (MAC-уровень) 10/40/100 Гигабит/с 2 2 4
Контроллеров Interlaken LLC 1 2 4
Контроллеров PCI Express LLC 1 2 2
Контроллеров DDR2/DDR3 4 6 6
Количество PLL 16 16 16
Количество выводов, корпус FBGA2601 52.5×52.5 (12G,28G,GPIO) - 64,0,960 48,16,960
Количество выводов, корпус FBGA1936 45×45 (12G,28G,GPIO) 40,0,684 40,0,684 20,4,684
Количество выводов, корпус FBGA1520 40×40 (12G,28G,GPIO) 18,0,684 - -


Минимально необходимый набор средств разработки включает в себя две программы – оболочку ACE и синтезатор Synplify. Собственная разработка компании — оболочка ACE включает в себя средства размещения и разводки, конфигурирования ядер, загрузки и отладки. В качестве синтезатора используется программа Synplify от Synopsys. Подход, заключающийся в использовании набора отдельных программ вместо единой интегрированной среды, характерен для небольших компаний. Он менее удобен для начинающих разработчиков, но для опытных инженеров дает большую гибкость и лучшее качество выполнения каждого этапа. Если же необходима более глубокая интеграция, все требуемые программные средства можно объединить, например, посредством оболочки HDL-designer от MentorGraphics.

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

И вот, наконец, долгожданная плата прибыла в наш офис!



Дрожащими от волнения руками (а как не волноваться, когда цена у платы как у недорогого импортного кроссовера! ), плата была распакована, перенесена на свое “штатное” место – на антистатический коврик на моем рабочем столе и с интересом рассмотрена.



Как видно, сама плата представляет собой сложное и многофункциональное изделие. Одна только электрическая схема занимает 90 страниц! Поэтому не удивительно, что плата позволяет разрабатывать и отлаживать, не побоюсь этого слова, уникальные проекты, например, создавать оборудование для сетей Ethernet 100G, для чего имеется разъем для модуля CFP (“черный квадрат” в нижнем левом углу на фото вверху ). Два интерфейса Interlaken выведены на разъемы AirMax.

Больше всего поразила толщина печатной платы. Сколько же здесь слоев? 20? 30? 40? Вопрос так и остался невыясненным.



Плата имеет разъем PCI-express (Gen 3 x8, 64 Gb/s) и может работать в качестве периферийного устройства в составе компьютера. Все вместе это выглядит вот так:



В комплект поставки входит JTAG-кабель, выполняющий функции загрузчика и отладчика. Особенностью этого кабеля является возможность работать через USB-порт, либо через Ethernet. В последнем случае можно организовать удаленный доступ к устройству. При работе через Ethernet требуется внешний источник питания (входит в комплект поставки). Так же в комплект поставки входят мощный источник питания для самой платы и модуль DDR-3 RAM на 2GB.

Проверка работоспособности


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



Разработка


А теперь – о том, как я делал свой первый проект для ПЛИС Achronix. В качестве такового был выбран наипростейший вариант – счетчик с выводом старших разрядов на светодиоды. Конечно, такой простой проект не произведет впечатление на профессионалов, но он позволяет изучить базовую функциональность применяемых для работы с ПЛИС Achronix средств разработки и освоить маршрут проектирования. В будущих публикациях я планирую рассказать о более сложных вещах, таких как конфигурирование и использование аппаратных ядер и реализацию систем на кристалле с использованием процессорного ядра ARM.

Структура проекта

Каждый проект я размещаю в отдельном каталоге, содержащем, как минимум, 3 подкаталога:
  • Src – для исходных текстов
  • Syn – для синтеза
  • TR – для имплементации


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

Исходные тексты

Исходный код модуля совершенно незамысловатый:
module counter #( parameter CNT_WIDTH = 32 ) //   8 <= CNT_WIDTH
(
    input  wire             clk,
    input  wire             rstn,
    output wire [7:0]       leds
);  
    wire                rst;
    reg [CNT_WIDTH-1:0] cnt;
    
    assign rst = ~rstn;
    
    always @(posedge clk or posedge rst)
        if (rst)    cnt <=  'h0;
        else        cnt <=  cnt+1;

    assign leds[7:0] = cnt[CNT_WIDTH-1: CNT_WIDTH-8];
    
endmodule


Но для имплементации на демонстрационной плате его необходимо чуть-чуть модифицировать.
Во-первых, необходимо выбрать и правильно подключить источник тактового сигнала. Их на плате — несколько. После изучения был выбран источник частотой 100МГц, имеющий дифференциальный выход. Следовательно, необходимо было добавить во входную тактовую цепь дифференциальный буфер.

Во-вторых, хотелось бы увидеть внутренние сигналы в процессе работы. Такая возможность есть у всех производителей ПЛИС, имеется она и в ПЛИС Achronix. Внутренний анализатор сигналов называется SnapShot. В отличие от конкурентов, компонент SnapShot должен быть явно описан в дизайне. Это поначалу вызывало у меня неудобство, но затем я оценил преимущество такого подхода. Это преимущество заключается в полном контроле над тем, что ты делаешь. Кроме того, такой подход позволяет очень гибко настраивать триггеры для регистрации отслеживаемых событий.

Итак, в окончательном варианте у нас появляется дифференциальный тактовый вход и буфер для него, а так же компонент ShapShot для изучения внутренних сигналов. Окончательный текст на языке Verilog:

`define USE_SNAPSHOT

module counter #( parameter CNT_WIDTH = 30 ) //   8 <= CNT_WIDTH <= MNTR_WIDTH
(
 `ifdef USE_SNAPSHOT
    input  wire             tck,
    input  wire             trstn,
    input  wire             tms,
    input  wire             tdi,
    output wire             tdo,
 `endif

    input  wire             clk_p,
    input  wire             clk_n,
    input  wire             rstn,
    output wire [7:0]       leds
);  

//********************************************** 
    
    wire                clk;
    wire                rst;
    reg [CNT_WIDTH-1:0] cnt;
    
    assign rst = ~rstn;
    
    IPAD_DIFF #( .odt("on"), .termination("100") )
    synth_clk_pad ( .pad(clk_p), .padn(clk_n), .dout(clk) );
    
    always @(posedge clk or posedge rst)
        if (rst)    cnt <=  'h0;
        else        cnt <=  cnt+1;

    assign leds[7:0] = cnt[CNT_WIDTH-1: CNT_WIDTH-8];
    
//*********************************************
`ifdef USE_SNAPSHOT
 
    localparam MNTR_WIDTH = 36;

    wire [MNTR_WIDTH: 0]        ss_zeroes;      ///// Signals going to trigger-detector block to do pattern matching
    
    wire                        ss_clk;
    wire [MNTR_WIDTH-1 :0]      ss_monitor_ch;  /// Signals monitored in Snapshot
    wire [MNTR_WIDTH-1: 0]      ss_trigger_ch;  ///// Signals going to trigger-detector block to do pattern matching
    wire                        ss_rstn_out;    ///// Active low user reset signal.
    wire                        ss_Arm;         ///// Indicates Snapshot activity.
    wire [MNTR_WIDTH-1:0]       ss_Stimuli;     ///// User specified values for 3rd trigger pattern value   

    assign ss_clk   = clk;
    assign ss_zeroes = {MNTR_WIDTH+1{1'b0}};    //// 

    
//////// Now Snapshot macro block instantiation ///////
    ACX_SNAPSHOT #(.MNTR_WIDTH(MNTR_WIDTH) )
    snapshot_0 (
        .tck        ( tck           ),
        .tms        ( tms           ),
        .trstn      ( trstn         ),
        .tdi        ( tdi           ),
        .tdo        ( tdo           ),
        
        .usr_clk    ( ss_clk        ),
        .Monitor_ch ( ss_monitor_ch ),
        .trigger_ch ( ss_trigger_ch ),
        .Rstn_out   ( ss_rstn_out   ),
        .Arm        ( ss_Arm        ),
        .Stimuli    ( ss_Stimuli    )
    );

    assign  ss_monitor_ch   = { ss_zeroes[MNTR_WIDTH-1: CNT_WIDTH], cnt[CNT_WIDTH-1:0] };
    assign  ss_trigger_ch   = ss_monitor_ch;
 `endif
//********************************************** 
    
endmodule   


Синтез

Синтезатору Synplify для работы требуется кроме исходных текстов и ссылок на библиотеку элементов еще файл констрейнтов (обычно он имеет расширение .sdc). Хотя для такого простого дизайна он необязателен, все же его лучше указать. В таком простом случае, как у нас, требуется только указать имена тактового сигнала и их параметры.

# synplify_constraints.sdc

set_hierarchy_separator {/}
create_clock clk_p -period 10
create_clock tck -period 40
set_clock_groups -asynchronous -group { tck } -group { clk_p }


Далее создаем проект для Synplify, указываем требуемые для синтеза файлы и библиотеки и запускаем процесс. Если все сделано правильно, получаем выходной файл с расширением .vma. (“Гуру” FPGA-дизайна могут указать, что основным выходным форматом Synplify является edif. Но ACE принимает на входе только верилоговские нетлисты, которые как раз имеют расширение .vma)



Имплементация

Собственно процесс имплементации осуществляется по стандартной схеме:

  • Создаем проект для ACE
  • Указываем в проекте файл результатов синтеза (с расширением .vma)
  • Задаем констрейнты
  • Запускаем процесс имплементации
  • Получаем файл для загрузки в ПЛИС


Для имплементации необходимо подготовить два файла констрейнтов: для задания клоков и задания пинов. Их содержимое показано в таблице:

# Ace_constraints.pdc
create_clock clk_p -period 10
create_clock tck -period 40
set_clock_groups -asynchronous -group { tck } -group { clk_p }

# io_preplacement.pdc
set_placement -batch -fixed {p:clk_p} {b:P19}
set_placement -batch -fixed {p:clk_n} {b:P18}
set_placement -batch -fixed {p:rstn} {b:P17}
set_placement -batch -fixed {p:leds[0]} {b:AE47}
set_placement -batch -fixed {p:leds[1]} {b:AJ46}
set_placement -batch -fixed {p:leds[2]} {b:AC46}
set_placement -batch -fixed {p:leds[3]} {b:AF47}
set_placement -batch -fixed {p:leds[4]} {b:AF46}
set_placement -batch -fixed {p:leds[5]} {b:AJ47}
set_placement -batch -fixed {p:leds[6]} {b:AG46}
set_placement -batch -fixed {p:leds[7]} {b:AE46}


На компьютере этап имплементации выглядит следующим образом:



Загрузка дизайна и отладка

Чтобы загрузить созданный на предыдущем этапе файл прошивки, надо перейти в окно “Download”, нажать на кнопку “Run ‘Program’ ” и подождать пару минут.



После окончания загрузки ПЛИС сразу же начинает работать и мы можем наблюдать на плате линейку весело мигающих светодиодов.

Чтобы посмотреть внутренние сигналы, подключенные к модулю SnapShot, требуется открыть окно “Snapshot debugger”. В этом окне можно настроить режимы триггера захвата и другие параметры. Анализ запускается кнопкой “Arm”, после чего начинается отслеживание состояния триггера. После установки триггера, на экране (с небольшой задержкой) появляется временная диаграмма регистрируемых сигналов.



Заключение и выводы


За короткий срок компании Achronix удалось создать интересные, конкурентоспособные ПЛИС сегмента HI-END и средства разработки для них. Технология работы с ними не вызовет проблем даже у специалистов средней квалификации. Продукция компании Achronix уже доступна в России.

Ссылки


  1. Сайт Российского Представительства (“Лаборатория Высокопропускных СБИС”), url: www.achronix.ru
  2. Википедия, статья о компании Акроникс, url: ru.wikipedia.org/wiki/Achronix
  3. Семейство Speedster22i HD, техническое описание, url: www.achronix.com/wp-content/uploads/docs/Speedster22iHD_FPGA_Family_DS004.pdf
  4. Руководство пользователя комплектом разработчика: Speedster22i HD1000 Development Kit User Guide, url: www.achronix.com/wp-content/uploads/docs/Speedster22i_DevelopmentKit_User_Guide_UG034.pdf
  5. Руководство пользователя отладчиком SnapShot: www.achronix.com/wp-content/uploads/docs/Speedster22i_Snapshot_User_Guide_UG016.pdf
  6. Схема электрическая принципиальная отладочной платы: 22iHD1000_Development_Board_Schematic.pdf
  7. Сайт компании Achronix (на английском языке), url: www.acronix.com

Similar posts

AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 35

    +2
    Класс! Давно наблюдаю за этой компанией.
    Как с производительностью? Можете какие нибудь оценки дать в сравнении с Altera/Xilinx/Lattice?
      +2
      Вот здесь вот публиковались сравнительные характеристики на разных типовых задачах: electronix.ru/forum/index.php?showtopic=113298 — но с тех пор уже был один респин и вышла пара новых версий ACE
        0
        Да эта тема известная, я собственно и прошу автора выложить отчеты работы тулзов для сравнения хотя бы пары несложных opencores'ов
          0
          Все это будет, прошу немного терпения…
        0
        В точных цифрах не скажу, но это честный HI-END
          +1
          Жаль, что LUT4, а не 6, например…
          А так, конечно, круть невероятная.
        +4
        Лицензию дали просто так или как покупателям кита? Или за деньги?
        Интернет-магазин на русском сайте у них отпадный — цен не указано, но есть фильтры с ценовыми диапазонами, в которые попадают те или иные изделия. Маркетинг, итить…
          0
          Лицензия дается вместе с китом. Можно так же попросить ограниченную во времени бесплатную пробную лицензию
            +1
            Бесплатную лицензию на три месяца можно запросить под какой-нибудь проект.
            Для этого надо написать на sales@achronix.ru название проекта, данные контактного лица (телефон, e-mail), Реквизиты организации, и возможный потенциал потребления ПЛИС.
            +10
            Иллюстрации по несколько мегабайт в BMP — это очень пафосно.
              +2
              Уже перезалиты
              0
              А возможность рисовать схемы есть, без VHDL/Verilog?
                0
                Нет. Думаю, этого и не нужно.
                  0
                  Спасибо. Жаль, кому как…
                    +1
                    На верилоге писать действительно проще.
                    Приходите на бесплатный семинар — расскажем как.
                    Да и в век компиляции в железо прямо C-шного кода (Synphony C, Catapult C), рисовать схемы, наверное, неправильно. На дизайн объемом в миллион лутов у вас может вся жизнь уйти.
                      0
                      Спасибо, возможно я не точно выразился. Я не предлагаю рисовать всё в виде схем, сам тоже пишу на Verilog. Просто некоторые вещи нагляднее и проще схемой получаются. Вместо этого, в принципе, можно сначала написать, а потом нарисовать к этому блок-схему, но это выглядит как костыль.
                      + начинал с VHDL и остался привкус от «моделируемого» и «перекладываемого» подмножества. Пишешь себе пишешь, промоделировал… А получилось в итоге хрен пойми чего.
                        +1
                        На верилоге всегда можно описать схему так, что на выходе получится именно то, что вы планировали с точностью до гейта.

                        Насчет схемы — согласен, нагляднее. Рекомендую посмотреть в сторону Mentor HDL Designer — позволяет визуализировать верилог файлы в виде абстрактных цифровых схем, заодно экономит время на рисовании автоматов. Всегда его использую, наглядность значительно экономит время на отладке.
                        +1
                        Много ли рабочего кода можно сгенерировать из универсального Сишного?
                        А писать на Си оптимизируя по ходу под железо, эквивалентно написанию на верилоге с тестами (на Си, матлабе и прочих).

                        А блочками типа System Generator от xilinx пользоваться и правда удобно, в том числе для моделирования и наглядности, плюс многие блоки это уже готовые ядра.
                  +3
                  Собственно изначальный интерес к Achronix (лет 5 назад) у меня был, потому что они предлагали (в качестве идеи) асинхронную архитектуру FPGA — принципиально новое решение, позволяющее взвинтить скорости за счет ухода от глобальных тактовых сигналов, распространяющихся по всему кристаллу. Похоже, что многие скептики оказались правы (проблемы с эффективной трассировкой и временным анализом) — в итоге не осилили и тему плавно слили.
                  Нынешняя структура FPGA слабо отличается от всех прочих. Но зато каким-то образом получили доступ к фабам интела и смогли поднять скорость за счет самых современных тех.норм, что тоже неплохо. Добавление кучи разных ip-компонентов идея интересная, но вот в реальные проекты я бы застремался ставить решение абсолютно нового производителя — надо долго и упорно щупать
                    +7
                    А для каких целей вы сие чудо приобрели? Какого класса задачи планируете на ней запускать?
                      0
                      Времянка после синтеза и после трассировки сильно различается?
                      А то у меня Симплифай есть, а бэкэнда нет, но что-то захотелось засунуть процессор в эту ПЛИСину, сравнить с другими вендорами.
                        0
                        Каюсь, не сравнивал
                          0
                          Итак, засунул я один маленький процессор в Simplify Premier 2013.09-1 и синтезировал его для Virtex7 XC7VX330T и Speedster22iHD1000

                          Законстрэйнил на 120МГц. Физический синтез не использовал.

                          Результаты для разных спидгрэйдов:

                          Virtex -1 — 85 МГц (5070 LUT-ов, 2123 триггеров и 8 RAM-блоков) — самый медленный спидгрэйд
                          Virtex -2 — 104МГц (5127 LUT-ов, 2195 триггеров и 8 RAM-блоков)
                          Virtex -3 — 96 МГц (5011 LUT-ов, 2052 триггеров и 8 RAM-блоков) — самый быстрый спидгрэйд

                          Speedster С3 — 53 МГц (7249LUT-ов, 2116 триггеров и 8 RAM-блоков) — самый медленный спидгрэйд
                          Speedster С2 — 60 МГц (7266 LUT-ов, 2083 триггеров и 8 RAM-блоков)
                          Speedster С1 — 71 МГц (7338 LUT-ов, 2138 триггеров и 8 RAM-блоков) — самый быстрый спидгрэйд
                            0
                            А сожете архивчик куда-нибудь залить (На яндекс диск или гугл драйв)? Я бы тогда проимплементировал и выложил бы здесь окончательные результаты.
                              0
                              К сожалению, архивчик не могу. Ибо процессор не бесплатный и мне надают по голове даже за нетлисты
                          0
                          Avber core развелось на 87МГц без всяких усилий (задавал 40). Думаю, если «поколдовать», за 100 можно легко выскочить.
                        +2
                        А сколько эта отладочная плата стоит?
                          +2
                          P.S. Спрашиваю не из прадного интереса, а из практического. В моей организации активно используют HI-END FPGA карты, так что может имеет смысл нашему хардверному отделу посоветовать эту плату, если цена будет в разумных пределах.
                            0
                            Звоните, пишите в представительство.
                            По моим оценкам, целевая ниша для этих ПЛИС — высокопроизводительное коммуникационное оборудование.
                              +1
                              Да дело в том что я никак не представляю отдел закупок или кого то еще, кто принимает подобные решения в компании, так что сам от имени компании запрос послать не могу. С другой стороны хардверщиков отвлекать лишний раз тоже не хочется.

                              Про высокопроизводительное коммуникационное оборудование — это то нам и требуется.
                                0
                                Будут технические семинары, если интересно — записывайтесь
                              0
                              Спасибо. Отослал информацию нашим хардверщикам.
                            +3
                            Освоишь так, а потом введут санкции, типа как актель и куда с этими отладками?

                            Only users with full accounts can post comments. Log in, please.