Leka 1 22 декабря, 2021 Опубликовано 22 декабря, 2021 · Жалоба По поводу Верилога/SV. Внутри процедурного блока можно объявлять регистры и временные переменные: always@(posedge clk) begin ... begin reg [31:0] a; var [31:0] b; ... end ... end Фактически это означает инстанцирование регистров внутри процедурного блока. Если так-же можно было инстанцировать модули внутри процедурного блока - было-бы очень удобно, в эту сторону и надо было развивать HDL (вместо украшения свистелками и перделками из ООП). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Leka 1 23 декабря, 2021 Опубликовано 23 декабря, 2021 · Жалоба Проверка "2D-песочницы" - 2 слабо связанных маятника должны давать биения, это и наблюдается. Сравнил объем кода математики на Си, на HDL с лаконичным описанием конвейера/блочной памяти, и на Верилоге - по числу знаков ","+";" (такой способ точнее отражает объем кода). На Си - 75шт., HDL с лаконичным описанием - 150шт., на Верилоге (после транслятора) - 1000шт. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Leka 1 23 декабря, 2021 Опубликовано 23 декабря, 2021 · Жалоба On 12/22/2021 at 1:29 PM, Leka said: инстанцировать модули внутри процедурного блока Зачем это нужно - чтобы не тянуть лишние переменные на верхний уровень. В Верилоге все для этого есть, кроме лаконичного языка. Синтезируемый пример: module top(clk, d, q); input clk; input [7:0] d; output [7:0] q; sum(q, top.a.b, top.a.c); always@(posedge clk) begin:a reg [7:0] b,c; b=d; c=c+1; end endmodule module sum(q, a, b); input [7:0] a, b; output [7:0] q=a+b; endmodule Добавлю в свою надстройку инстанцирование модулей внутри блоков. Заодно выкину begin-end из конструкций if()/for()/else/…, заменив на { }. К неоднозначности (путанице с конкатенацией) это не приведет, зато код будет выглядеть намного лучше. Еще кое-какие изменения, в результате на порядок уменьшится необходимое число переменных в коде (и сам код дополнительно сократится). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться