Написал заметку на английском со ссылками на упражнения и литературу для студентов, которые хотят натренировать себя проходить интервью в электронные компании:
Предисловие на русском:
Все начинается с родителей, который покупают ребенку игровую приставку на Рождество вместо того чтобы отправить его на курс геометрии в RSM (Russian School of Math). Плюс иллюзия что на интервью на работу будет доступ к ИИ - тоже не помогает.
О чем это я. В одном из недавних постов в иммигрантской хайтек-группе комментаторы жаловались, что молодежь в США после окончания вуза не может найти работу и винили в этом пришельцев на H-1 визах и вытеснение живых специалистов внедрением AI. Так я интервьировал много молодежи, причина неуспеха большинства выпускников во время собеседований для меня видна совершенно четко: молодежь не натренирована решать задачки на интервью, которые напрямую связаны с задачами на производстве.
Почему:
1. Любой рабочий навык, который стоит того, чтобы платить за него зарплату - вырабатывается преодолением трудностей. Музыкант перед тем как играть в оркестре, проводит годы с гаммами и этюдами. Спортсмен, который едет на олимпиаду, проводит годы оттачивая бег, упражнения на шведской стенке и гимнастическом козле.
Никто не будет платить зарплату флейтисту, который не упражнялся, а просто смотрел на видео в YouTube как играть ноту "ре" и спрашивал у ИИ, как играть вибрато.
2. Кто виноват, что у молодого человека к совершеннолетию не выработана привычка напрягаться? Как я уже сказал - родители, которые не могут выдержать вопли ребенка "отдай мою игровую приставку!!!" Из-за этого ребенок привыкает к короткому циклу получения вознаграждения за минимальные усилия (immediate gratification), вместо того чтобы долго трудиться, тренируя себя геометрическими задачами в RSM перед тем как выиграть олимпиаду по математике.
3. Вина также лежит на ленивых университетских профессорах, которые вместо того, чтобы регулярно проверять, что происходит в промышленности, и модифицировать свои задачи и экзамены - не меняют curriculum десятилетиями. Только так я могу объяснить, что куча выпускников EE, CS и CE (Computer Engineering) знают про конвейерную обработку данных только в контексте пятистадийного процессора на уровне знаний Хеннесси-Паттерсона 1990 года.
4. Виноват также ковид, интервью через Zoom и иллюзия, что кого-то интересуют инженеры, которые делают все через AI. На самом деле серьезные компании сейчас вернулись к формату интервью в офисе перед доской, без доступа к электронным устройствам. Если маркер плохо пишет, кандидату дается ручка и листок бумаги для написания кода и рисования микроархитектурных диаграмм.
5. При этом я решил не ограничиваться критикой, а написать рекомендации по тренировке, которые помогут молодому человеку по крайней мере в знакомых мне областях: RTL Design, Design Verification, ASIC, FPGA, CPU architecture and microarchitecture итд.
Отрывки:
Learning digital design is similar to learning to play a flute or going to the gym to put yourself in physical shape. The basics are simple, but you need to exercise in order to do something impressive, like playing in a concert or winning a sports competition. If you just watch the PowerPoint slides on how to press keys on a flute, or watch YouTube videos on how to use a rowing machine in a gym, or even ask AI on how to make vibrato – you are not going to make any progress whatsoever.
So exercises should be incorporated into the learning from day one. Most university students do not do enough exercises which leads to their poor performance in job interviews. Instead:
* First, students should use simple exercises in a Verilog simulator and on an FPGA board to learn basic Verilog syntax and flow.
* Second, they need to clearly understand the sequential logic, organizing calculations into clock cycles, and static timing, solving delay problems within a clock cycle.
Third, they need to understand microarchitectural concepts, such as pipelines (and not only a CPU pipeline), and microarchitectural building blocks, such as FIFOs and arbiters, when and how to use them.
* In parallel with RTL (Register Transfer Level), students should learn the basics of verification, and not in a primitive form, like ad hoc testbenches with #delay and checking signal value after it, but in a form of checking microarchitecturally interesting RTL design against a transactional model that has no clocks, but queues and scoreboards.
...
Do not use AI to do the homework. If you use AI for the exercises you will learn nothing. You may as well go to a bar and drink a beer – the result will be the same. You are learning by overcoming difficulties, your brain will remember how you struggled with blocking and non-blocking assignments trying to put clock cycles right, and you will automatically solve or avoid such situations for the rest of your career. With AI there would be no such memory, you will not register the information and forget it right away. And by the way, AI will not help you with more advanced microarchitectural exercises, starting from part 6 of SystemVerilog Homework.
...
Do not substitute reading books with chatting with AI. When you read a book, you get the map of the area from the brain of the expert author. When you chat with AI, you get an averaged wisdom of a lot of dilettantes, who 1) make mistakes and 2) have a wrong focus.
For example, AI directed one of the learners toward a construct always_latch which should not be used to instruct beginners. It is used to model D-latches, a primitive relevant to clock gating for dynamic power savings or to advanced topics (timing borrowing, latch arrays). There is no point in exposing a student to low-power techniques before he is trained in building sequential logic using D-flip-flops, a state element in 99% of design situations. A student who read about D-latch-based design but cannot build a pipeline or a FIFO using D-flip-flops is useless for design work in an electronics company.
Likewise, you should consult IEEE 1800-2023 Standard for SystemVerilog when you need to clarify anything about the language specifics:
Asking an LLM about details of the SystemVerilog language is notoriously unreliable, as you can see in the screenshots below. Sure, it will tell you “you are absolutely right” when you catch it on false information, but that is true only if you already know the answer. In addition, when you consult the standard document, you understand the broader context and the logic of the language.
...
If you cannot pass part 2 of the SystemVerilog Homework (sequential basics), the probability of you passing an interview for an internship or a job in a typical electronics company is low. On the other hand, if you can pass all parts of the Homework, and you also have a basic clue about static timing analysis, then the probability is high, particularly for a junior position. For a senior position you also need to master clock domain crossing (CDC), low power techniques and more computer architecture.
...
A fundamental issue with many DV tutorials: they focus on language (SystemVerilog) and library (UVM) and use trivial examples: ALU, single transaction at a time APB BFM (Bus Functional Model) etc. In order to capture the spirit of the DV profession more accurately, even beginner tutorials should use pipelined blocks and out-of-order protocols to demonstrate the scoreboarding techniques.
...
Вся инструкция - по ссылке. Критика и дополнения приветствуются.
Спасибо,
Юрий Панчул