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

Задержка сигнала на Verilog

41 minutes ago, Kluwer said:

RTL-код перестал вдруг портироваться на асики? Really, Elon Mask?!

А почему вдруг? Я лет 5, не меньше, знаю контору, которая разрабатывает Асики на ПЛИСах

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


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

2 hours ago, Kluwer said:

RTL-код перестал вдруг портироваться на асики? Really, Elon Mask?!

а как это бьётся с этим заявлением:

 

 

On 5/22/2019 at 10:50 AM, Kluwer said:

Никогда не мог понять желание всё подряд писать руками и обвешивать атрибутами синтеза, к-рые, на самом деле синтезатор Квартуса игнорит только в путь. Для таких задач специально сделаны удобные и вылизанные IP-коры или мегафункции.

 

 

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


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

On 5/17/2019 at 4:17 PM, des00 said:

вот как раз этот вариант, адекватен и нормален. для альтеры я поступаю точно также. Квартус тоже глючит, особенно с пользовательскими типами.


  always_ff @(posedge iclk) begin
    if (iclkena) begin
      if (ival) begin
        addr        <= addr + 1'b1;
        raddr       <= addr;
        waddr       <= addr + delay;
        //
        ram[waddr]  <= wdata;
        rdata       <= ram[raddr];
        //
        dat2out     <= rdata;
      end
    end
  end

на все случаи жизни, завернуть в компонент и использовать.

Более того, как видно из кода, задержка меньше трех тактов, на памяти не получится при полной конвейризации и двух без оной. Это сразу показывает например, почему софту не выгодно делать мелкие задержки на памяти)

В итоге сдался и сделал так же. Хотел только узнать - двойная выходная буферизация - для того, чтобы на выходе BRAM использовать встроенные регистры, а второй регистр использовать на россыпи в месте, где эти самые данные будут использованы?

 

Похоже иного способа заставить вивадо не существует,

что примечательно, в синплифай для xilinx нет значения атрибута syn_srlstyle, который бы позволял указывать на реализацию на блочной памяти, а для Altera & Lattice такое значение атрибута есть. странно это всё....

 

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


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

Приветствую!

1 hour ago, Doka said:

В итоге сдался и сделал так же. Хотел только узнать - двойная выходная буферизация - для того, чтобы на выходе BRAM использовать встроенные регистры, а второй регистр использовать на россыпи в месте, где эти самые данные будут использованы?

Второй регистр  на выходе BRAM  это встроенный в BRAM примитив. Улучшает  времянку чтения на высоких частотах. Но при P&R  Vivado часто "вытягивает" этот регистр  в обычную логику, чтобы сбалансировать задержки межу BRAM регистром и получателями данных или улучшить времянку при высоких fanout.  Естественно если есть запас по таймингам. 

Удачи! Rob.

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


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

Собственно RobFPGA уже ответил) при желании, можно три регистра поставить, два в памяти и один для улучшения разводки)

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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