Жуткий сценарий использования ChatGPT

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

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

Вчера у меня в ленте на фейсбуке (жаль что в закрытом посте) проявился еще один аспект ChatGPT, жуть которого я не вполне осознавал. Представьте, что ваш менеджер присылает вам емейл: "я вот тут сгенерил с помощью ChatGPT код на языке описания аппаратуры SystemVerilog, который реализует мою идею, ты его поправь немного и в продакшн, а то нас сроки поджимают".

Почему это жутко? Потому что в обсуждаемом посте ChatGPT сгенерил так называемый несинтезируемый код. Это означает: код вроде и есть, и после массажирования даже будет компилироваться в симуляторе, но вот чип из него сделать нельзя. Никак, вообще никак. Для решения этой задачи нужно написать совсем другой код, у которого не будет ни одной строчки общего с тем, что прислал менеджер.

То есть менеджер думает, что вместе с ChatGPT сделал за вас 90% работы, а на самом деле это (даже если убрать ошибки типа путаницы в семантике модуля и функции) в лучшем случае - высокоуровневая спецификация того, что нужно сделать. Потому что тип "string" не обрабатывается синтезатором, а если его заменить на большие битовые вектора и развернуть циклы, то получится комбинаторное облако, чип из которого будет размером с чемодан, а задержка на котором будет не пикосекунды, а секунды. Собственно с этим кодом хардверный дизайн еще даже не начинается.

Для хардверного дизайна алгоритм нужно превратить в конечные автоматы, конвейеры, очереди FIFO итд. Вообще, превратить несинтезируемый код в синтезируемый пытались десятки компаний и университетских проектов последние 35 лет. Эта область называется "high level synthesis". Результаты этой движухи довольно мизерные, учитывая что сейчас все топ-электронные компании пишут синтезируемый код вручную, кроме нишевых областей.

Зачем же в SystemVerilog есть несинтезируемые конструкции? Для писания тестов и моделей, с которыми сравнивается поведение синтезируемых блоков.

По сути, SystemVerilog - это несколько языков в одном. В нем есть подмножество для определения netlist (графа логических элементов), подмножество для уровня регистровых передач (оно же - синтезируемое подмножество), поведенческое подмножество (у которого есть синтезируемая и несинтезируемая части) и отдельные язычки для constraint solvers, coverage bins и темпоральной логики continuous assertions (три последние я не буду расшифровывать). Ну и еще подмножество для switches и аналоговое расширение, но я это не использовал.

Так вот. Менеджмент ChatGPT нанял армию контракторов в дешевых странах , но на тренировку на SystemVerilog они наверное поставили человека, который решил прикрутить понимание питона или джавы, посколько из таких языков в SystemVerilog натащили кучу фич для несинтезируемого подмножества.

Но попытайтесь объяснить это менеджеру, который это не понимает. Он будет отмахиваться "это все детали, почти все сделано, ты просто отлыниваешь, боишься новых технологий, работай давай, и с сегодняшнего для ежедневные статус-репорты, а не то переведу на "программу улучшения производительности работника" (это такой эвфемизм для предупреждения об увольнении)". Работник, в котором теплится хоть какая-то инженерная способность, после такого диалога будет конечно сразу рассылать резюме.

Слава богу, это не моя личная ситуация, потому что три уровня менеджмента надо мною прекрасно знают что такое синтезируемое и несинтезируемое подмножества SystemVerilog-а.

Источник: https://habr.com/ru/post/714792/


Интересные статьи

Интересные статьи

В мае этого года в наш замечательный город пришла аномальная жара, которая, к слову, держится и по сей день. Благодаря COVID-19 я, как и множество IT специалистов в мире, перешел на удаленную работу. ...
В предыдущей статье Несколько примеров успешного изобретения велосипеда, мы поделились рядом решений, полученных путем комбинирования наших плагинов для Atlassian, таких как MyGroovy, JSIncluder и M...
При работе с алгоритмами есть две реальности: как это написано в учебнике и как это получается у тебя. Второе ближе к телу, и хочется, чтобы оно получалось. Главное, понимать, что ты ра...
Следуйте инструкции по использованию Terraform, чтобы изучить и применить различные типы встроенных функций, в том числе Numeric, String, и Date, и Time в инструменте IaC. Ч...
Есть статьи о недостатках Битрикса, которые написаны программистами. Недостатки, описанные в них рядовому пользователю безразличны, ведь он не собирается ничего программировать.