des00 25 24 октября, 2022 Опубликовано 24 октября, 2022 · Жалоба В общем буду краток, 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 синтезируется корректно 😱 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 25 октября, 2022 Опубликовано 25 октября, 2022 · Жалоба 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 синтезируется корректно 😱 круто!!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kenezoer 0 10 декабря, 2022 Опубликовано 10 декабря, 2022 · Жалоба Первый раз вижу, чтоб можно было синтезировать классы) Правда, боюсь, что в реальных случаях на данный момент это овер инжиниринг и я бы побоялся пускать в продакшн такой HDL код. Плюс встаёт вопрос про кросс-платформенность между различными версиями САПР (не только между версиями Vivado, а вообще, между Vivado-Genus-Xcelium-VCS-DC). Но всё равно необычно) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 36 11 декабря, 2022 Опубликовано 11 декабря, 2022 · Жалоба 18 часов назад, kenezoer сказал: Правда, боюсь, что в реальных случаях на данный момент это овер инжиниринг и я бы побоялся пускать в продакшн такой HDL код. Плюс встаёт вопрос про кросс-платформенность между различными версиями САПР (не только между версиями Vivado, а вообще, между Vivado-Genus-Xcelium-VCS-DC). +1. Ещё следует иметь в виду, что тут нет синтеза класса какового -- нет объектов класса. А статические члены -- это по сути обычные объекты, только помещённые в отдельное пространство имён (класс), поэтому никакой магии тут нет. Насколько это полезно/удобно, вопрос. Если бы не то, что сказано выше (цитата), то вполне себе годное средство изоляции кода. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 11 декабря, 2022 Опубликовано 11 декабря, 2022 · Жалоба 1 hour ago, dxp said: Насколько это полезно/удобно, вопрос. если бы комитет решился на добавление параметризуемых функций или передачи в функцию безразмерных векторов (как в вхдл), то особо было бы и не нужно, но комитет на это не пошел Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 15 11 декабря, 2022 Опубликовано 11 декабря, 2022 · Жалоба 5 minutes ago, des00 said: комитет на это не пошел Известно, почему? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 11 декабря, 2022 Опубликовано 11 декабря, 2022 · Жалоба 1 hour ago, andrew_b said: Известно, почему? мне нет, @CaPpuCcino вроде должен был знать, он регулярно читал комитетские сводки Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 11 декабря, 2022 Опубликовано 11 декабря, 2022 · Жалоба 1 hour ago, andrew_b said: Известно, почему? Может потому как придется вводить еще и безразмерный вектор как отдельную сущность? Типа что то типа logic [:] name; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 12 декабря, 2022 Опубликовано 12 декабря, 2022 · Жалоба 18 hours ago, RobFPGA said: Может потому как придется вводить еще и безразмерный вектор как отдельную сущность? Типа что то типа logic [:] name; когда размышлял над этим, думал что более правильно будет сделать как logic [$:0], потому что символ $ используется для очереди, в том числе безразмерной. Но, полагаю что проблема не в символе, а в общей концепции битового вектора языка, который не может быть адресован по произвольным координатам. Должен быть фиксирован либо размер, либо обе координаты. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться