CPU_DESIGN Telegram 98
Сегодня начинаем новую рубрику - best practice, по мнению автора канала конечно же☺️

На повестке дня: Set membership (inside) operator

Открыл для себя новый оператор в SystemVerilog для задач в синтезируемом подмножестве языка.

SystemVerilog привнес интересные нововведения в языке, которые должны были упростить жизнь RTL-инженерам. Например interface или modport, но EDA тулы до сих пор не могут выдать стабильные результаты синтеза SystemVerilog кода, при использовании новых фич языка.
Спасибо хотя бы за enum и package. Теперь наследовать параметры, и описывать fsm стало на порядок проще и удобнее.

Что же делает оператор inside?
Оператор возвращает 1'b1 если сравниваемое выражение [слева от ключевого слова inside] совпадает с любым из выражений в наборе {}, в остальных случаях 1'b0 (синтаксис смотри на скриншоте).

Как и где применять?
▫️построение зависимостей внутри FSM
▫️поиск битовой подстроки в битовом векторе:
always_comb begin
flag = data_in inside {8'b??0011??};
end // true if the middle bits of data match 4'b0011
▫️поиск элемента в массиве хранимых регистров
always_comb begin
prime_val = data_in inside {data_set_array};
end // true if data matches a value inside the data_set_array array
▫️пример из моего текущего проекта - при помощи inside определяю тип команды для FMA блока: FMADD,FMSUB,FNMADD, и.т.д - в зависимости от команды понимаю нужно ли мне изменять знак одного из операндов или нет. Очень удобная замена ==, | операторов получилась.

NOTE
Протестировал оператор в Synopsys 2022.1, Vivado 2020.1, Siemens Oasys-RTL 2022.1.R1, Cadence Genus 21.1. Все эти тулы поддерживают стандарт SystemVerilog-2012 (IEEE Standard 1800-2012), не уверен что тулы, которые поддерживают стандарты 2009-го или 2005-го года корректно работают с inside

#bestpractice
Please open Telegram to view this post
VIEW IN TELEGRAM



tgoop.com/cpu_design/98
Create:
Last Update:

Сегодня начинаем новую рубрику - best practice, по мнению автора канала конечно же☺️

На повестке дня: Set membership (inside) operator

Открыл для себя новый оператор в SystemVerilog для задач в синтезируемом подмножестве языка.

SystemVerilog привнес интересные нововведения в языке, которые должны были упростить жизнь RTL-инженерам. Например interface или modport, но EDA тулы до сих пор не могут выдать стабильные результаты синтеза SystemVerilog кода, при использовании новых фич языка.
Спасибо хотя бы за enum и package. Теперь наследовать параметры, и описывать fsm стало на порядок проще и удобнее.

Что же делает оператор inside?
Оператор возвращает 1'b1 если сравниваемое выражение [слева от ключевого слова inside] совпадает с любым из выражений в наборе {}, в остальных случаях 1'b0 (синтаксис смотри на скриншоте).

Как и где применять?
▫️построение зависимостей внутри FSM
▫️поиск битовой подстроки в битовом векторе:

always_comb begin
flag = data_in inside {8'b??0011??};
end // true if the middle bits of data match 4'b0011
▫️поиск элемента в массиве хранимых регистров
always_comb begin
prime_val = data_in inside {data_set_array};
end // true if data matches a value inside the data_set_array array
▫️пример из моего текущего проекта - при помощи inside определяю тип команды для FMA блока: FMADD,FMSUB,FNMADD, и.т.д - в зависимости от команды понимаю нужно ли мне изменять знак одного из операндов или нет. Очень удобная замена ==, | операторов получилась.

NOTE
Протестировал оператор в Synopsys 2022.1, Vivado 2020.1, Siemens Oasys-RTL 2022.1.R1, Cadence Genus 21.1. Все эти тулы поддерживают стандарт SystemVerilog-2012 (IEEE Standard 1800-2012), не уверен что тулы, которые поддерживают стандарты 2009-го или 2005-го года корректно работают с inside

#bestpractice

BY Записки CPU designer'a




Share with your friend now:
tgoop.com/cpu_design/98

View MORE
Open in Telegram


Telegram News

Date: |

How to Create a Private or Public Channel on Telegram? Administrators Telegram iOS app: In the “Chats” tab, click the new message icon in the right upper corner. Select “New Channel.” Choose quality over quantity. Remember that one high-quality post is better than five short publications of questionable value. In the “Bear Market Screaming Therapy Group” on Telegram, members are only allowed to post voice notes of themselves screaming. Anything else will result in an instant ban from the group, which currently has about 75 members.
from us


Telegram Записки CPU designer'a
FROM American