#verilog
#verilog
Вопрос:
Я пытаюсь понять дизайн verilog моего друга, он разбил большую логику на маленькую логику, он сказал, что это помогло ему устранить проблему с синхронизацией. Но я не понимаю, почему, потому что после синтеза это просто набор элементов И и ИЛИ, и логика та же, как это может уменьшить задержку? Вот исходный код:
assign state0 = ({104{d0_xq}} amp; markerState0[519:416]) |
({104{d1_xq}} amp; markerState1[519:416]) |
({104{d2_xq}} amp; markerState2[519:416]) |
({104{d3_xq}} amp; markerState3[519:416]);
assign state1 = ({104{d0_xq}} amp; markerState0[415:312]) |
({104{d1_xq}} amp; markerState1[415:312]) |
({104{d2_xq}} amp; markerState2[415:312]) |
({104{d3_xq}} amp; markerState3[415:312]);
assign state2 = ({104{d0_xq}} amp; markerState0[311:208]) |
({104{d1_xq}} amp; markerState1[311:208]) |
({104{d2_xq}} amp; markerState2[311:208]) |
({104{d3_xq}} amp; markerState3[311:208]);
assign state3 = ({104{d0_xq}} amp; markerState0[207:104]) |
({104{d1_xq}} amp; markerState1[207:104]) |
({104{d2_xq}} amp; markerState2[207:104]) |
({104{d3_xq}} amp; markerState3[207:104]);
assign state4 = ({104{d0_xq}} amp; markerState0[103:0]) |
({104{d1_xq}} amp; markerState1[103:0]) |
({104{d2_xq}} amp; markerState2[103:0]) |
({104{d3_xq}} amp; markerState3[103:0]);
always @(posedge clock) begin
state_xq <= {state0, state1, state2, state3, state4};
end
В чем разница, если я использую:
assign state = ({520{d0_xq}} amp; markerState0) |
({520{d1_xq}} amp; markerState1) |
({520{d2_xq}} amp; markerState2) |
({520{d3_xq}} amp; markerState3);
always @(posedge clock) begin
state_xq <= state;
end
Комментарии:
1. Если вы используете Xilinx, я предлагаю посмотреть на схематический вывод обоих и сравнить. Кроме этого, было бы трудно сказать, приведет ли какой-либо из них к другому синтезу. Я не уверен, как еще вы могли бы узнать.
Ответ №1:
Если это какая-то технология ASIC, вы можете покопаться в сгенерированном списке сетей и проверить, использовались ли по какой-либо причине разные примитивы и, следовательно, достигается разное время, хотя логически обе структуры дают одинаковый результат. В любом случае это странно, и я бы не ожидал увидеть значительное расхождение в результатах STA, но я не эксперт по механизмам синтеза, хотя.
В качестве альтернативы инструмент должен позволять вам генерировать отчет reg-2-reg, показывающий точную разбивку пути, это должно показать, где инструмент применяет другой подход (например, к какой операции).