D-Luxe 0 15 июня, 2011 Опубликовано 15 июня, 2011 · Жалоба Меня интересует следующий вопрос: допустим описываешь простейшую схему, которая входит в состав большого проекта. Ниже примерчик. process(clk) begin if ( clk'event and clk='1' ) then y <= a + b; z <= c + d; e <= y + z; end if; end process; Допустим после трассировки y находится в одной части кристалла, а z и e в другой части кристалла. Возможна ли такая ситуация, что y подается на сложение с z со значительной задержкой, в итоге в e защелкивается неправильное значение. Если такая ситуация возможно то как с этим бороться? Пример возможно довольно грубый, но надеюсь проблема понятна (проблема которая возникает в синхронной схеме из-за задержек после трассировки). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yuri_d 0 15 июня, 2011 Опубликовано 15 июня, 2011 · Жалоба Нужно описывать задержки распространения сигнала. Поищите в гугле constraints guide. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
D-Luxe 0 15 июня, 2011 Опубликовано 15 июня, 2011 · Жалоба Нужно описывать задержки распространения сигнала. Поищите в гугле constrain guide. Хотите сказать что эта проблема решается написанием констрейна на clk ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yuri_d 0 15 июня, 2011 Опубликовано 15 июня, 2011 · Жалоба Да, для Вашего примера будет достаточно констрейна на clk. Но это в итоге покроет только пути y -> e и z -> e. Сумматоры a+b и c+d остаются не покрытыми, так как неизвестно происхождение a, b, c и d. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bogaev_roman 0 16 июня, 2011 Опубликовано 16 июня, 2011 · Жалоба Допустим после трассировки y находится в одной части кристалла, а z и e в другой части кристалла. Возможна ли такая ситуация, что y подается на сложение с z со значительной задержкой, в итоге в e защелкивается неправильное значение Вобще ситуация вполне возможна при большой загрузке кристалла и большой разрядности сумматоров. При задании тактовой частоты Вы сможете определить максимальную тактовую частоту register-to-register. Если a b c d есть выходы регистра или триггера той же тактовой частоты, то задание тактовой частоты clk будет достаточным для определения максимальной тактовой частоты. Если выходы a b c d выходные триггеры другой тактовой частоты, то требуется задать соотношения этих тактовых частот и создать схему синхронизации перехода из одного клокового домена в другой. Если это вообще неизвестные входные сигналы, то требуется задать ограничения и соотношения по входам, но обычно в любом случае их каким то образом записывают в регистры через приемную логику. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nckkm 0 22 июня, 2011 Опубликовано 22 июня, 2011 · Жалоба Меня интересует следующий вопрос: допустим описываешь простейшую схему, которая входит в состав большого проекта. Ниже примерчик. process(clk) begin if ( clk'event and clk='1' ) then y <= a + b; z <= c + d; e <= y + z; end if; end process; Допустим после трассировки y находится в одной части кристалла, а z и e в другой части кристалла. Возможна ли такая ситуация, что y подается на сложение с z со значительной задержкой, в итоге в e защелкивается неправильное значение. Если такая ситуация возможно то как с этим бороться? Пример возможно довольно грубый, но надеюсь проблема понятна (проблема которая возникает в синхронной схеме из-за задержек после трассировки). у меня 3 встречных вопроса: 1) делали вы функциональную симуляцию проекта или модуля? все ли там впорядке? 2) насколько чип заполнен? если заполнение небольшое, скажем 30%, то врядли это проблема задержек 3) какова рабочая частота и какие разрядности сумматоров? на небольших частотах, скажем 10-20Мгц врядли проблема с задержками распространения, если разрядности сумматоров небольшие, скажем 8-16 бит, то вряд ли это проблема задержек распространения Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
D-Luxe 0 22 июня, 2011 Опубликовано 22 июня, 2011 · Жалоба у меня 3 встречных вопроса: 1) делали вы функциональную симуляцию проекта или модуля? все ли там впорядке? 2) насколько чип заполнен? если заполнение небольшое, скажем 30%, то врядли это проблема задержек 3) какова рабочая частота и какие разрядности сумматоров? на небольших частотах, скажем 10-20Мгц врядли проблема с задержками распространения, если разрядности сумматоров небольшие, скажем 8-16 бит, то вряд ли это проблема задержек распространения Я чисто гипотетически спрашиваю, возможна ли такая проблема. На практике пока не сталкивался с такой ситуацией. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sisuprun 0 7 июля, 2011 Опубликовано 7 июля, 2011 · Жалоба ....Если выходы a b c d выходные триггеры другой тактовой частоты, то требуется задать соотношения этих тактовых частот и создать схему синхронизации перехода из одного клокового домена в другой..... извиняюсь если офтоп но не хотелось плодить новую тему раз уж в этой зацепили этот вопрос. :laughing: а как правильно обконстрейнить кросклоковую передачу сигнала между двумя клоковыми доменами в xilinx, схема синхронизации стандартная на базе тригеров. Заранее благодарен Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Shtirlits 0 7 июля, 2011 Опубликовано 7 июля, 2011 · Жалоба На границе нужно сделать лишь две вещи, на примере fifo питаемого зависимыми клоками: 1) обеспечить минимальную длину связей (MAXDELAY) NET "*BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc(*)" MAXDELAY = 450 ps; NET "*BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc(*)" MAXDELAY = 450 ps; 2) попросить анализатор игнорировать нарушения setup и hold, так как они неизбежны (TIG) NET "*BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc(*)" TIG; NET "*BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc(*)" TIG; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться