Перейти к содержанию
    

Синтез статических классов SV

В общем буду краток, vivado 2019.1.3 

class myClass #(parameter type T = bit);

  static T pipa;

  static function T sum (T a, b);
  begin
    sum = a + b;
  end
  endfunction

endclass

module connector (input iclk, int a, b, a1, output int c, logic [15 : 0] c2, int c3);

  always_ff @(posedge iclk) begin
    c  <= myClass #(int)::sum(a, b);
    c2 <= myClass #(logic [15 : 0])::sum(a1, b);
    c3 <= $bits(myClass #(logic [7 : 0])::pipa);
  end

endmodule

синтезируется корректно 😱

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 10/24/2022 at 5:01 PM, des00 said:

В общем буду краток, vivado 2019.1.3 

class myClass #(parameter type T = bit);

  static T pipa;

  static function T sum (T a, b);
  begin
    sum = a + b;
  end
  endfunction

endclass

module connector (input iclk, int a, b, a1, output int c, logic [15 : 0] c2, int c3);

  always_ff @(posedge iclk) begin
    c  <= myClass #(int)::sum(a, b);
    c2 <= myClass #(logic [15 : 0])::sum(a1, b);
    c3 <= $bits(myClass #(logic [7 : 0])::pipa);
  end

endmodule

синтезируется корректно 😱

круто!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Первый раз вижу, чтоб можно было синтезировать классы)

 

Правда, боюсь, что в реальных случаях на данный момент это овер инжиниринг и я бы побоялся пускать в продакшн такой HDL код.
Плюс встаёт вопрос про кросс-платформенность между различными версиями САПР (не только между версиями Vivado, а вообще, между Vivado-Genus-Xcelium-VCS-DC).

Но всё равно необычно)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

18 часов назад, kenezoer сказал:

Правда, боюсь, что в реальных случаях на данный момент это овер инжиниринг и я бы побоялся пускать в продакшн такой HDL код.
Плюс встаёт вопрос про кросс-платформенность между различными версиями САПР (не только между версиями Vivado, а вообще, между Vivado-Genus-Xcelium-VCS-DC).

+1. Ещё следует иметь в виду, что тут нет синтеза класса какового -- нет объектов класса. А статические члены -- это по сути обычные объекты, только помещённые в отдельное пространство имён (класс), поэтому никакой магии тут нет. Насколько это полезно/удобно, вопрос. Если бы не то, что сказано выше (цитата), то вполне себе годное средство изоляции кода.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, dxp said:

Насколько это полезно/удобно, вопрос. 

если бы комитет решился на добавление параметризуемых функций или передачи в функцию безразмерных векторов (как в вхдл), то особо было бы и не нужно, но комитет на это не пошел

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, andrew_b said:

Известно, почему?

мне нет, @CaPpuCcino вроде должен был знать, он регулярно читал комитетские сводки

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, andrew_b said:

Известно, почему?

Может  потому как придется вводить еще и безразмерный вектор как отдельную  сущность?   Типа  что то типа logic [:]  name;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

18 hours ago, RobFPGA said:

Может  потому как придется вводить еще и безразмерный вектор как отдельную  сущность?   Типа  что то типа logic [:]  name;

когда размышлял над этим, думал что более правильно будет сделать как logic [$:0], потому что символ $ используется для очереди, в том числе безразмерной. Но, полагаю что проблема не в символе, а в общей концепции битового вектора языка, который не может быть адресован по произвольным координатам. Должен быть фиксирован либо размер, либо обе координаты.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...