До вчорашнього квізу:
Проблема коду у різній розрядності операндів. Verilog це сприймає нормально, а у людей, які пишуть на VHDL від цього пальці на ногах стискаються.
Ті, хто відповів що це синтаксична помилка – відповіли так само як і ChatGPT. Нижче буде картинка того, як це компілює Questa.
Загалом про цю незручну ситуацію раджу читати Sutherland, Stuart, and Don Mills. 2007. Verilog and System Verilog Gotchas: 101 Common Coding Errors and How to Avoid Them. New York: Springer.
Або дивіться нудне відео тут: https://youtu.be/bxCC2_UsV6c
Проблема коду у різній розрядності операндів. Verilog це сприймає нормально, а у людей, які пишуть на VHDL від цього пальці на ногах стискаються.
Ті, хто відповів що це синтаксична помилка – відповіли так само як і ChatGPT. Нижче буде картинка того, як це компілює Questa.
Загалом про цю незручну ситуацію раджу читати Sutherland, Stuart, and Don Mills. 2007. Verilog and System Verilog Gotchas: 101 Common Coding Errors and How to Avoid Them. New York: Springer.
Або дивіться нудне відео тут: https://youtu.be/bxCC2_UsV6c
YouTube
08-2 Логічні оператори у Verilog
Логічні функції НІ, І, АБО, Виключне АБО - їх реалізація у Verilog.
Різниця між логічними операторами та побітовими: & та &&, | та ||, ! та ~.
Відео: https://youtu.be/bxCC2_UsV6c
Презентація: https://docs.google.com/presentation/d/1OOBuzuzqXig0GdK7zP9t…
Різниця між логічними операторами та побітовими: & та &&, | та ||, ! та ~.
Відео: https://youtu.be/bxCC2_UsV6c
Презентація: https://docs.google.com/presentation/d/1OOBuzuzqXig0GdK7zP9t…
👍1
А тепер все серйозно.
Ранок понеділка почнемо з новин.
Ви точно пропустили цю новину – Altera тепер Altera. Вона і раніше була Altera, але не зовсім. Точніше, вона з самого початку була Altera, потім IntelFPGA (але всі все одно називали Altera), потім Altera, але все одно інтел, а от зараз – вже точно Altera.
1 січня 2025 Altera стала самостійною компанією – https://x.com/AlteraFPGA_/status/1876767709137965376
Як кажуть у пресрелізі – це тепер найбільша самостійна FPGA компанія. Насправді не найбільша, але якщо рахувати саме ті, що не мають материнської компанії – то найбільша.
З цього всього у мене є питання – а як тепер називається Xilinx? Бо наче і Xilinx, але AMD. Все складно.
І друге – а Intel тепер став ще меншим? Бо як забрали частину бізнесу в окрему кампанію, то розмір Intel став ще меншим. Зрозуміло, що як казала моя бабуся – поки товстий всохне, худий – здохне. І для нас, хто просто спостерігає за номерам в таблиці найбільших компаній, цифри взагалі не цікаві. Але ж цікаво.
Спостерігаємо далі. Бажаючі записують у щоденник спостережень за природою.
Ранок понеділка почнемо з новин.
Ви точно пропустили цю новину – Altera тепер Altera. Вона і раніше була Altera, але не зовсім. Точніше, вона з самого початку була Altera, потім IntelFPGA (але всі все одно називали Altera), потім Altera, але все одно інтел, а от зараз – вже точно Altera.
1 січня 2025 Altera стала самостійною компанією – https://x.com/AlteraFPGA_/status/1876767709137965376
Як кажуть у пресрелізі – це тепер найбільша самостійна FPGA компанія. Насправді не найбільша, але якщо рахувати саме ті, що не мають материнської компанії – то найбільша.
З цього всього у мене є питання – а як тепер називається Xilinx? Бо наче і Xilinx, але AMD. Все складно.
І друге – а Intel тепер став ще меншим? Бо як забрали частину бізнесу в окрему кампанію, то розмір Intel став ще меншим. Зрозуміло, що як казала моя бабуся – поки товстий всохне, худий – здохне. І для нас, хто просто спостерігає за номерам в таблиці найбільших компаній, цифри взагалі не цікаві. Але ж цікаво.
Спостерігаємо далі. Бажаючі записують у щоденник спостережень за природою.
X (formerly Twitter)
Altera (@AlteraFPGA_) on X
Today marks a proud milestone as we officially raise the Altera flag as an independent #FPGA company! 🚩
We're excited to drive the future of innovation with agility and focus, shaping the next era of #FPGA technology on https://t.co/625v7kRtoi.
#AcceleratingInnovators
We're excited to drive the future of innovation with agility and focus, shaping the next era of #FPGA technology on https://t.co/625v7kRtoi.
#AcceleratingInnovators
👍6😁3❤2🗿1
Знову п'ятниця. Тому знову задачка.
Є такий код. Що він виведе на консоль?
Є такий код. Що він виведе на консоль?
module test;
reg [3:0] A;
reg B;
wire Y;
initial begin
A = 4'b1010;
B = 1'b1;
#1;
$display("A: %b, B: %b, Y: %b", A, B, Y);
end
assign Y = A || B;
endmodule
Знов з рибу гроші або до квізу в п’ятницю.
Відповідь, що стоїть у квізі можливо дещо бентежить, але це дійсно правильна відповідь.
Нижче скрін з EdaPlayground, в якому саме цей код був запущений та відкомпільований за допомогою QuestaSim 2024.3.
Це та ситуація, коли в стандарті явно нічого не сказано, але всі з досвіду знають, що воно так буде. Про роботу з сигналами різної розрядності раджу уважно почитати та зробити приклади і відкомпілювати книгу Sutherland, Stuart, and Don Mills. 2007. Verilog and System Verilog Gotchas: 101 Common Coding Errors and How to Avoid Them. New York: Springer.
Конкретно в цій ситуації треба читати Gotcha 45 та 46.
Або дивіться відео де розповідається саме про ці ситуації - https://youtu.be/bxCC2_UsV6c
Якщо ліниво дивитись і відео – слайд про це теж нижче.
Відповідь, що стоїть у квізі можливо дещо бентежить, але це дійсно правильна відповідь.
Нижче скрін з EdaPlayground, в якому саме цей код був запущений та відкомпільований за допомогою QuestaSim 2024.3.
Це та ситуація, коли в стандарті явно нічого не сказано, але всі з досвіду знають, що воно так буде. Про роботу з сигналами різної розрядності раджу уважно почитати та зробити приклади і відкомпілювати книгу Sutherland, Stuart, and Don Mills. 2007. Verilog and System Verilog Gotchas: 101 Common Coding Errors and How to Avoid Them. New York: Springer.
Конкретно в цій ситуації треба читати Gotcha 45 та 46.
Або дивіться відео де розповідається саме про ці ситуації - https://youtu.be/bxCC2_UsV6c
Якщо ліниво дивитись і відео – слайд про це теж нижче.
YouTube
08-2 Логічні оператори у Verilog
Логічні функції НІ, І, АБО, Виключне АБО - їх реалізація у Verilog.
Різниця між логічними операторами та побітовими: & та &&, | та ||, ! та ~.
Відео: https://youtu.be/bxCC2_UsV6c
Презентація: https://docs.google.com/presentation/d/1OOBuzuzqXig0GdK7zP9t…
Різниця між логічними операторами та побітовими: & та &&, | та ||, ! та ~.
Відео: https://youtu.be/bxCC2_UsV6c
Презентація: https://docs.google.com/presentation/d/1OOBuzuzqXig0GdK7zP9t…
👍4🔥1
Слава Україні!
Alex Forencich і його бібліотека компонентів.
Якщо ви досі в неї не заглядали – то це саме той самий момент подивитись на якісну і велику бібліотеку компонентів модулів, написану на Verilog і тестами, написаними на MyHDL.
В основному там модулі для AXI bus, але їх багато – синхронне FIFO, двохпортова пам'ять, звичайна оперативна пам'ять, блоки прямого доступу до пам’яті і багато іншого.
Раджу для перегляду.
Сайт - https://alexforencich.com/wiki/en/start - в основному не цікавий
GitHub - https://alexforencich.com/wiki/en/start - це саме те, що треба
YouTube - https://www.youtube.com/c/alexforencich – зараз більшою частиною трансляції про те, як робиться проект Corundum - open-source, high-performance FPGA-based NIC and platform for in-network compute. Сам цей проект тут - https://github.com/corundum/corundum
#GitHub
Alex Forencich і його бібліотека компонентів.
Якщо ви досі в неї не заглядали – то це саме той самий момент подивитись на якісну і велику бібліотеку компонентів модулів, написану на Verilog і тестами, написаними на MyHDL.
В основному там модулі для AXI bus, але їх багато – синхронне FIFO, двохпортова пам'ять, звичайна оперативна пам'ять, блоки прямого доступу до пам’яті і багато іншого.
Раджу для перегляду.
Сайт - https://alexforencich.com/wiki/en/start - в основному не цікавий
GitHub - https://alexforencich.com/wiki/en/start - це саме те, що треба
YouTube - https://www.youtube.com/c/alexforencich – зараз більшою частиною трансляції про те, як робиться проект Corundum - open-source, high-performance FPGA-based NIC and platform for in-network compute. Сам цей проект тут - https://github.com/corundum/corundum
#GitHub
Youtube
- YouTube
Enjoy the videos and music you love, upload original content, and share it all with friends, family, and the world on YouTube.
🔥6👍2
П'ятничний тест.
Маємо такий код. У операторі IF в дужках при розрахунку умови при використанні вектора треба використовувати “=” чи “==”?
Маємо такий код. У операторі IF в дужках при розрахунку умови при використанні вектора треба використовувати “=” чи “==”?
module test;
reg [3:0] A;
reg Y;
initial begin
A = 4'b1010;
#1;
if (A = 4'b0000) begin
Y = 1'b1;
end
else begin
Y = 1'b0;
end
end
endmodule
У операторі IF в дужках при розрахунку умови при використанні вектора треба використовувати “=” чи “==”?
Anonymous Quiz
14%
“=” – бо використовується логічна операція
17%
“==” – бо виконується робота з вектором
7%
“=” – дозволено лише такий оператор
62%
“==” – дозволено лише такий оператор
Частка світового обєму виробництва напівпровідників залежно від країни. Період з 1990 по 2032 рік. Прогноз зроблений по даним 2024 року.
— Частка США значно знизиться — з 37% 1990 року до 14% 2032 року.
— Частка Китаю різко зросте з 0% 1990 року до 21% 2032 року.
— Тайвань та Південна Корея збережуть постійне зростання виробництва напівпровідників, частка Тайваню досягне 16%, а Південної Кореї — 17% до 2032 року.
— Частка США значно знизиться — з 37% 1990 року до 14% 2032 року.
— Частка Китаю різко зросте з 0% 1990 року до 21% 2032 року.
— Тайвань та Південна Корея збережуть постійне зростання виробництва напівпровідників, частка Тайваню досягне 16%, а Південної Кореї — 17% до 2032 року.
👍4
Слава Україні!
Черговий п’ятничний ківз.
Є такий код:
Черговий п’ятничний ківз.
Є такий код:
module example (
input wire x,
input wire y,
input wire z,
output reg out
);
always @(x or y)
out = x & y | z;
endmodule
Що буде в результаті компіляції в пакеті Quartus?
P.S. Quartus вказаний не дарма.
P.S. Quartus вказаний не дарма.
Anonymous Quiz
12%
Помилка компіляції – відсутній сигнал Z в списку ініціалізації
35%
Синтезується latch
53%
Синтезується комбінаційна схема
Слава Україні!
Вчорашній код – приклад того, як не треба робити.
Для експериментів я брав два варіанти.
1. Код, що був вчора
Quartus в звіті компіляції видав
Потім інтерпретував це як комбінаційну схему і синтезував її
Вчорашній код – приклад того, як не треба робити.
Для експериментів я брав два варіанти.
1. Код, що був вчора
module example (
input wire x,
input wire y,
input wire z,
output reg out
);
always @(x or y)
out = x & y | z;
endmodule
Quartus в звіті компіляції видав
Warning (10235): Verilog HDL Always Construct warning at example.v(9): variable "z" is read inside the Always Construct but isn't in the Always Construct's Event Control
Потім інтерпретував це як комбінаційну схему і синтезував її
👍1
2. Для симуляції, я зробив тестбенч з такою самою логікою, але додав туди монітор та генерацію сигналів. QuestaSim цей код теж відкомпілювала, але результат був дещо іншим:
Ось, що було виведено на консоль
Якщо ви уважно подивитесь тест, то побачите, що в момент 60 нс змінюється тільки сигнал Z з 1 в 0. Для рівняння x & y | z при X=0, Y=0 такий перехід повинен встановити вихід в 0, але він так і залишився 1. Це говорить про те, що QuestaSim сприймає цей код як опис latch, у якого значення оновлюються при появі 1 в X або Y. Значення Z не запускає блок always і не змінює вихід.
`timescale 1ns/1ps
module example;
reg x, y, z;
reg out;
always @(x or y)
out = x & y | z;
initial begin
$monitor("Time = %0t | x = %b, y = %b, z = %b | out = %b",
$time, x, y, z, out);
end
initial begin
x = 0; y = 0; z = 0; #10;
x = 0; y = 1; z = 0; #10;
x = 1; y = 0; z = 0; #10;
x = 1; y = 1; z = 0; #10;
x = 1; y = 1; z = 1; #10;
x = 0; y = 0; z = 1; #10;
z = 0;
#10;
$finish;
end
endmodule
Ось, що було виведено на консоль
# Time = 0 | x = 0, y = 0, z = 0 | out = 0
# Time = 10000 | x = 0, y = 1, z = 0 | out = 0
# Time = 20000 | x = 1, y = 0, z = 0 | out = 0
# Time = 30000 | x = 1, y = 1, z = 0 | out = 1
# Time = 40000 | x = 1, y = 1, z = 1 | out = 1
# Time = 50000 | x = 0, y = 0, z = 1 | out = 1
# Time = 60000 | x = 0, y = 0, z = 0 | out = 1
Якщо ви уважно подивитесь тест, то побачите, що в момент 60 нс змінюється тільки сигнал Z з 1 в 0. Для рівняння x & y | z при X=0, Y=0 такий перехід повинен встановити вихід в 0, але він так і залишився 1. Це говорить про те, що QuestaSim сприймає цей код як опис latch, у якого значення оновлюються при появі 1 в X або Y. Значення Z не запускає блок always і не змінює вихід.
👍2🔥2
Загалом, це цікавий приклад того, як різні інструменти можуть трактувати один і той самий код.
👍1💯1
https://dou.ua/lenta/articles/ukraine-chip-factory-is-real/
Стаття на Dou про плани побудови заводу з виробництва мікросхем.
Експерти заслуговують поваги і дійсно знають тему, про яку розповідають. Тому раджу почитати, технічні речі описання добре. Плани влади - такі наші плани.
P.s. Коментарі на dou як завжди адекватні і дуже позитивні.
Стаття на Dou про плани побудови заводу з виробництва мікросхем.
Експерти заслуговують поваги і дійсно знають тему, про яку розповідають. Тому раджу почитати, технічні речі описання добре. Плани влади - такі наші плани.
P.s. Коментарі на dou як завжди адекватні і дуже позитивні.
DOU
Завод чипів в Україні. Чи реально побудувати і скільки це коштує
Ми розібралися, чи реально побудувати такий завод за п’ять років, скільки це може коштувати і які є нюанси з виготовленням чипів. Також Мінцифри розповіли DOU, які будуть перші кроки реалізації плану і у який спосіб можуть залучити партнерів.
❤4
Студенти принесли і колеги порекомендували, тому ділюся:
https://www.reddit.com/r/FPGA/comments/1ii57ht/hog_tutorial_at_cern_and_on_zoom_11th_march_2025/ :
“We are organising a tutorial for Hog (HDL-on-git) on 11th March 2025 at CERN and on zoom.”
https://cern.ch/hog :
“Hog is a set of Tcl/Shell scripts plus a suitable methodology to handle HDL designs in a git repository.
Hog is included as a git submodule in the HDL repository and allows developers to create the Vivado/PlanAhead/Quartus/Libero project(s) locally and synthesise/implement it or start working on it.
Using Hog will help you to:
- easily and effectively maintain HDL code on git
- ensure that code was not modified before building binary files
- ensure traceability of binary files (even if produced locally)
- work both with Windows and Linux
- reduce code duplication by making it easy to share code among projects
- waste no time to setup Continuous Integration on Gitlab or Github actions on GitHub”
https://www.reddit.com/r/FPGA/comments/1ii57ht/hog_tutorial_at_cern_and_on_zoom_11th_march_2025/ :
“We are organising a tutorial for Hog (HDL-on-git) on 11th March 2025 at CERN and on zoom.”
https://cern.ch/hog :
“Hog is a set of Tcl/Shell scripts plus a suitable methodology to handle HDL designs in a git repository.
Hog is included as a git submodule in the HDL repository and allows developers to create the Vivado/PlanAhead/Quartus/Libero project(s) locally and synthesise/implement it or start working on it.
Using Hog will help you to:
- easily and effectively maintain HDL code on git
- ensure that code was not modified before building binary files
- ensure traceability of binary files (even if produced locally)
- work both with Windows and Linux
- reduce code duplication by making it easy to share code among projects
- waste no time to setup Continuous Integration on Gitlab or Github actions on GitHub”
Reddit
From the FPGA community on Reddit
Explore this post and more from the FPGA community
👍4