Можно найти как вполне актуальные рекомендации (сбросы, клоки, триггеры и другие компоненты дизайна не особо то и изменились за 20 лет), так и устаревшие и теперь забавные (например, не использовать пока Verilog-2001, т.к. не всеми тулами поддерживается в достаточном объёме).
1 Basic Design Constraints
1.1 Naming conventions
1.2 Synchronous design
1.3 Initial reset
1.4 Clocks
1.5 Handling of asynchronous circuits
1.6 Hierarchical design
2 RTL Denoscription Techniques
2.1 Combinational logic
2.2 always construct denoscription in combinational logic
2.3 FF inference
2.4 Latch inference
2.5 Tri-state buffer
2.6 always construct denoscription that takes circuit structure into account
2.7 if statements
2.8 case statements
2.9 for statements
2.10 Operator denoscriptions
2.11 State machine denoscriptions
3 RTL Design Methodology
3.1 Create function libraries
3.2 Using function libraries
3.3 Design for Test (DFT)
3.4 Low Power-Consumption Design
3.5 Source codes and design data management
1 Basic Design Constraints
1.1 Naming conventions
1.2 Synchronous design
1.3 Initial reset
1.4 Clocks
1.5 Handling of asynchronous circuits
1.6 Hierarchical design
2 RTL Denoscription Techniques
2.1 Combinational logic
2.2 always construct denoscription in combinational logic
2.3 FF inference
2.4 Latch inference
2.5 Tri-state buffer
2.6 always construct denoscription that takes circuit structure into account
2.7 if statements
2.8 case statements
2.9 for statements
2.10 Operator denoscriptions
2.11 State machine denoscriptions
3 RTL Design Methodology
3.1 Create function libraries
3.2 Using function libraries
3.3 Design for Test (DFT)
3.4 Low Power-Consumption Design
3.5 Source codes and design data management
Астрологи объявили неделю codestyle. Количество постов с правилами кодирования на Verilog увеличено вдвое.
FreescaleVerilog.pdf
344.7 KB
Freescale Verilog HDL Coding
* Naming Conventions
* Comments
* Code Style
* Module Partioning and Reusability
* Modeling Practices
* General Coding Techniques
* Standards for Structured Test Techniques
* General Standarts fot Synthesis
#verilog #codestyle
* Naming Conventions
* Comments
* Code Style
* Module Partioning and Reusability
* Modeling Practices
* General Coding Techniques
* Standards for Structured Test Techniques
* General Standarts fot Synthesis
#verilog #codestyle
И ещё немного гайдов
Ну и чтобы закрыть уже тему, ещё тройка стоящих внимания гайдов.
https://www.systemverilog.io/styleguide
https://github.com/johan92/verilog-coding-style
https://github.com/lowRISC/style-guides/blob/master/VerilogCodingStyle.md
#verilog #codestyle
Ну и чтобы закрыть уже тему, ещё тройка стоящих внимания гайдов.
https://www.systemverilog.io/styleguide
https://github.com/johan92/verilog-coding-style
https://github.com/lowRISC/style-guides/blob/master/VerilogCodingStyle.md
#verilog #codestyle
www.systemverilog.io
SystemVerilog Style Guide - systemverilog.io
Inspired by Python's PEP8, this is a StyleGuide for SystemVerilog.
Макрочипы
"you can see why we went to 40nm, the first ones were huge"
😂
Не знаю, делает ли он сейчас на заказ, но подставка под кружку была бы просто офигенная.
https://www.evilgeniuslabs.org/macrochips
#diy
"you can see why we went to 40nm, the first ones were huge"
😂
Не знаю, делает ли он сейчас на заказ, но подставка под кружку была бы просто офигенная.
https://www.evilgeniuslabs.org/macrochips
#diy
🔥1
verilog_systemverilog_standarts.zip
31 MB
Стандарты на Verilog и SystemVerilog
В архиве все на текущий момент стандарты Verilog и SystemVerilog.
* IEEE.1364-1995-Verilog
* IEEE.1364-2001-Verilog
* IEEE.1364-2005-Verilog
* IEEE.1800-2005-SystemVerilog
* IEEE.1800-2009-SystemVerilog
* IEEE.1800-2012-SystemVerilog
* IEEE.1800-2017-SystemVerilog
Последний стандарт Verilog - 2005. Потом этот стандарт слили со стандартом SystemVerilog того же года, местами пофиксили и получили стандарт 2009. Актуальный на начало 2021 года стандарт SystemVerilog - 2017.
#verilog #system_verilog #standard
В архиве все на текущий момент стандарты Verilog и SystemVerilog.
* IEEE.1364-1995-Verilog
* IEEE.1364-2001-Verilog
* IEEE.1364-2005-Verilog
* IEEE.1800-2005-SystemVerilog
* IEEE.1800-2009-SystemVerilog
* IEEE.1800-2012-SystemVerilog
* IEEE.1800-2017-SystemVerilog
Последний стандарт Verilog - 2005. Потом этот стандарт слили со стандартом SystemVerilog того же года, местами пофиксили и получили стандарт 2009. Актуальный на начало 2021 года стандарт SystemVerilog - 2017.
#verilog #system_verilog #standard
Кстати в IEEE с конца 2019 года прорабатывают следующую ревизию стандарта SV. Так что в ближайшие пару лет нас ждут
"new and enhanced features that ease design, improve verification, and enhance cross-language interactions."
https://development.standards.ieee.org/myproject-web/public/view.html#pardetail/7059
"new and enhanced features that ease design, improve verification, and enhance cross-language interactions."
https://development.standards.ieee.org/myproject-web/public/view.html#pardetail/7059
FFT_tutorial_NI.pdf
124 KB
The Fundamentals of FFT-Based Signal Analysis and Measurement
Аппноут от NI по работе с FFT. Наверное бесполезен для тех, кто постоянно занимается ЦОСом, но если раз в N лет надо вспомнить как провести спектральный анализ и что-то там из него извлечь, то заходит очень хорошо.
- Базовые вычисления: амплитуда, RMS, амплитудный спектр, спектр мощности, децибелы, разрешение по частоте
- Алиасинговые эффекты и фильтры
- Оконные функции и spectral leakage
- Вычисления над полученным спектром: частота, мощность, SNR, PSD
#dsp #fft
Аппноут от NI по работе с FFT. Наверное бесполезен для тех, кто постоянно занимается ЦОСом, но если раз в N лет надо вспомнить как провести спектральный анализ и что-то там из него извлечь, то заходит очень хорошо.
- Базовые вычисления: амплитуда, RMS, амплитудный спектр, спектр мощности, децибелы, разрешение по частоте
- Алиасинговые эффекты и фильтры
- Оконные функции и spectral leakage
- Вычисления над полученным спектром: частота, мощность, SNR, PSD
#dsp #fft
👍1
ad_adc_specs.pdf
93 KB
Understand SINAD, ENOB, SNR, THD, THD + N, and SFDR so You Don't Get Lost in the Noise Floor
Walt Kester
Небольшой ликбез об основных динамических характеристиках АЦП с формулами.
#adc
Walt Kester
Небольшой ликбез об основных динамических характеристиках АЦП с формулами.
#adc
👍1
Из ссылок в конце туториала выше набрел на прекрасную серию книг практической направленности по аналогу от Analog Devices. Однозначно стоит ознакомиться, если еще не!
И самое интересное, что эти книги можно бесплатно скачать прямо с сайта AD без регистрации и смс. Правда в немного разобраном виде - в формате архива с пдфками.
Data Conversion Handbook
https://www.analog.com/en/education/education-library/data-conversion-handbook.html
Mixed-Signal and DSP Design Techniques
https://www.analog.com/en/education/education-library/mixed_signal_dsp_design_book.html
Op Amp Applications Handbook
https://www.analog.com/en/education/education-library/op-amp-applications-handbook.html
Linear Circuit Design Handbook
https://www.analog.com/en/education/education-library/linear-circuit-design-handbook.html
#analog_design #adc #dac #op_amp #dsp #book
И самое интересное, что эти книги можно бесплатно скачать прямо с сайта AD без регистрации и смс. Правда в немного разобраном виде - в формате архива с пдфками.
Data Conversion Handbook
https://www.analog.com/en/education/education-library/data-conversion-handbook.html
Mixed-Signal and DSP Design Techniques
https://www.analog.com/en/education/education-library/mixed_signal_dsp_design_book.html
Op Amp Applications Handbook
https://www.analog.com/en/education/education-library/op-amp-applications-handbook.html
Linear Circuit Design Handbook
https://www.analog.com/en/education/education-library/linear-circuit-design-handbook.html
#analog_design #adc #dac #op_amp #dsp #book
Блокирующее и неблокирующее
Допустим, мы хотим из тестбенча по клоку подавать значение в тестируемый модуль.
Какое значение будет у dut в конце симуляции? 1 или 0?
#system_verilog #verilog #codestyle #race_condition
Допустим, мы хотим из тестбенча по клоку подавать значение в тестируемый модуль.
Какое значение будет у dut в конце симуляции? 1 или 0?
module tb;
bit clk;
always #10 clk <= ~clk;
bit dut;
bit dut_in = 1'b1;
always @(posedge clk)
dut <= dut_in;
initial begin
@(posedge clk);
dut_in = 1'b0;
$finish;
end
endmodule
Ответ зависит от симулятора. Классический race condition, когда неизвестно какое значение dut_in будет использовано при записи в регистр - старое, или новое, обновлённое блокирующим присвоением. Основное правило здесь - передача значения между двумя разными блоками (регистрами) должна проходить через неблокирующее (<=) присвоение. Т.е. как в регистровых передачах внутри синтезируемого кода. Хотя в тестбенче можно допустить некоторые вольности, и обновлять значение по negedge или через задержку, что тоже будет работать (в большинстве случаев).#system_verilog #verilog #codestyle #race_condition
SystemVerilog Race Condition Challenge
Челендж от Mentor. Десять небольших сниппетов кода, которые демонстрируют разные варианты race condition и просто неправильного подхода к описанию.
Нужно перейти по ссылке и просто попытаться понять что не так с каждым из сниппетов.
Страница челенджа:
https://blogs.sw.siemens.com/verificationhorizons/2020/07/27/systemverilog-race-condition-challenge/
Сам код для анализа:
https://www.edaplayground.com/x/diV
#system_verilog #codestyle #race_condition
Челендж от Mentor. Десять небольших сниппетов кода, которые демонстрируют разные варианты race condition и просто неправильного подхода к описанию.
Нужно перейти по ссылке и просто попытаться понять что не так с каждым из сниппетов.
Страница челенджа:
https://blogs.sw.siemens.com/verificationhorizons/2020/07/27/systemverilog-race-condition-challenge/
Сам код для анализа:
https://www.edaplayground.com/x/diV
#system_verilog #codestyle #race_condition
Verification Horizons
SystemVerilog Race Condition Challenge - Verification Horizons
If there’s one thing I’ve learned since coming to Mentor early last year, it’s that the SystemVerilog language gives developers options for writing one line
SystemVerilog Race Condition Challenge Responses
Ответы на челендж от Dave Rich (тот самый мужик, на ответ которого попадаешь с 90% вероятностью, когда гулишь что-то по Verilog/SystemVerilog).
https://blogs.sw.siemens.com/verificationhorizons/2020/08/13/systemverilog-race-condition-challenge-responses/
#system_verilog #codestyle #race_condition
Ответы на челендж от Dave Rich (тот самый мужик, на ответ которого попадаешь с 90% вероятностью, когда гулишь что-то по Verilog/SystemVerilog).
https://blogs.sw.siemens.com/verificationhorizons/2020/08/13/systemverilog-race-condition-challenge-responses/
#system_verilog #codestyle #race_condition
Verification Horizons
SystemVerilog Race Condition Challenge Responses - Verification Horizons
As promised, here is my response to Siemens EDA’s SystemVerilog Race Condition Challenge.
Обфускация Verilog/SystemVerilog кода
Если кто не в теме, то это замена всех имен в коде на абракадабру и снос всего форматирования (опционально). Используется при передаче кода третьим лицам как "мягкая" замена шифрованию. Код вроде как открыт, но чтобы разобраться в нём нужно попотеть, особенно если это какой-нибудь нетлист без иерархии на много мегабайт. Защита от честных людей по большому счёту)
Так вот. Раньше пробовал Verilog-Perl - там есть утилита
Тут выше постил про Verible (как форматтер кода от Google). У них оказывается в комплекте есть ещё утлита для обфускации - verible-verilog-obfuscate.
Работает гораздо лучше. На тот же самый нетлист на ~1М имён уходит минут десять. Правда в процессе потребление памяти 10-14ГБ, но это мелочи.
Ну и небольшой gist по результатам, чтобы не забыть как делал.
#verilog #system_veriog #obfuscation
Если кто не в теме, то это замена всех имен в коде на абракадабру и снос всего форматирования (опционально). Используется при передаче кода третьим лицам как "мягкая" замена шифрованию. Код вроде как открыт, но чтобы разобраться в нём нужно попотеть, особенно если это какой-нибудь нетлист без иерархии на много мегабайт. Защита от честных людей по большому счёту)
Так вот. Раньше пробовал Verilog-Perl - там есть утилита
vrename. Работает, но оооочень уж медленно. Чтобы обфусцировать условный нетлист с ~1М уникальных имён уходят не одни сутки (однако, я шибко не профилировал где затык).Тут выше постил про Verible (как форматтер кода от Google). У них оказывается в комплекте есть ещё утлита для обфускации - verible-verilog-obfuscate.
Работает гораздо лучше. На тот же самый нетлист на ~1М имён уходит минут десять. Правда в процессе потребление памяти 10-14ГБ, но это мелочи.
Ну и небольшой gist по результатам, чтобы не забыть как делал.
#verilog #system_veriog #obfuscation
metacpan.org
Verilog-Perl
Verilog language utilities and parsing
Заставляем худеть Vivado/Quartus с помощью жёстких ссылок
https://www.reddit.com/r/FPGA/comments/ellcrr/psa_deduplicate_your_vivadoquartusiseetc_installs/
Папка с кучей версий софта от Xilinx до:
Делаем:
Она же после:
Итого: -260Гб за счёт избавления от дубликатов!
#vivado #quartus
https://www.reddit.com/r/FPGA/comments/ellcrr/psa_deduplicate_your_vivadoquartusiseetc_installs/
Папка с кучей версий софта от Xilinx до:
$ sudo du -hcs /opt/Xilinx/*
21G /opt/Xilinx/14.7
619M /opt/Xilinx/DocNav
255M /opt/Xilinx/Model_Composer
82G /opt/Xilinx/SDK
28G /opt/Xilinx/Vitis
342G /opt/Xilinx/Vivado
7.7G /opt/Xilinx/Vivado_HLS
643M /opt/Xilinx/xic
479G total
Делаем:
rdfind -dryrun false -makehardlinks true /opt/Xilinx/
Она же после:
$ sudo du -hcs /opt/Xilinx/*
18G /opt/Xilinx/14.7
615M /opt/Xilinx/DocNav
192M /opt/Xilinx/Model_Composer
44G /opt/Xilinx/SDK
25G /opt/Xilinx/Vitis
133G /opt/Xilinx/Vivado
1.2G /opt/Xilinx/Vivado_HLS
30M /opt/Xilinx/xic
220G total
Итого: -260Гб за счёт избавления от дубликатов!
#vivado #quartus
Аппаратные SPI и I2C в Lattice ICE40 UltraPlus
Довольно полезный тред по нюансам использования аппаратных SPI и I2C в ICE40UP.
https://github.com/YosysHQ/icestorm/issues/174
Если коротко, то SPI можно относительно легко поднять (есть рабочие примеры), а вот с I2C ситуация "оставь надежду всяк сюда входящий":
#fpga #lattice #spi #i2c #yosys
Довольно полезный тред по нюансам использования аппаратных SPI и I2C в ICE40UP.
https://github.com/YosysHQ/icestorm/issues/174
Если коротко, то SPI можно относительно легко поднять (есть рабочие примеры), а вот с I2C ситуация "оставь надежду всяк сюда входящий":
this block is pretty horrible and fussy, and you should use an RTL IP block if you can. But if you're out of gates -- you're out of gates, and I hope these notes can help you.
#fpga #lattice #spi #i2c #yosys
GitHub
UltraPlus I2C and SPI · Issue #174 · YosysHQ/icestorm
Has anyone tried the hard I2C and SPI modules in the UltraPlus FPGAs and got them working? I have spent the past few days tinkering away using the information in these documents: http://www.lattice...