spectr 0 18 марта, 2012 Опубликовано 18 марта, 2012 (изменено) · Жалоба Квартус 11.1SP1. Выдает такую ошибку: Info (276014): Found 8 instances of uninferred RAM logic Info (276007): RAM logic "bpformer:inst8|multichannel_dds_synthesizer:dds|true_dpdcram:pinc_ram|ram" is uninferred due to asynchronous read logic Info (276007): RAM logic "bpformer:inst8|multichannel_dds_synthesizer:dds|sin_rom" is uninferred due to asynchronous read logic Info (276007): RAM logic "bpformer:inst8|multichannel_dds_synthesizer:dds|cos_rom" is uninferred due to asynchronous read logic Info (276007): RAM logic "bpformer:inst8|multichannel_dds_synthesizer:dds|dpscram:acc_ram|ram" is uninferred due to asynchronous read logic Info (276007): RAM logic "bpformer:inst8|bpchannel:generated[1].bp|DataDelay:delayline|dpram:ram|ram" is uninferred due to asynchronous read logic Info (276007): RAM logic "bpformer:inst8|bpchannel:generated[2].bp|DataDelay:delayline|dpram:ram|ram" is uninferred due to asynchronous read logic Info (276007): RAM logic "bpformer:inst8|bpchannel:bp_ref|DataDelay:delayline|dpram:ram|ram" is uninferred due to asynchronous read logic Info (276007): RAM logic "bpformer:inst8|bpchannel:generated[0].bp|DataDelay:delayline|dpram:ram|ram" is uninferred due to asynchronous read logic А потом сразу же: Error (276003): Cannot convert all sets of registers into RAM megafunctions when creating nodes. The resulting number of registers remaining in design exceeds the number of registers in the device or the number specified by the assignment max_number_of_registers_from_uninferred_rams. This can cause longer compilation time or result in insufficient memory to complete Analysis and Synthesis При этом блоки памяти использованы на основе стандартных темплейтов квартуса, например: module dpscram #( parameter DATA_WIDTH=8, parameter ADDR_WIDTH=6 ) ( input [(DATA_WIDTH-1):0] data, input [(ADDR_WIDTH-1):0] read_addr, write_addr, input we, clk, output reg [(DATA_WIDTH-1):0] q ); reg [DATA_WIDTH-1:0] ram[2**ADDR_WIDTH-1:0]; initial begin : init integer i; for(i = 0; i < 2**ADDR_WIDTH; i = i + 1) ram[i] = {DATA_WIDTH{1'b0}}; q = 0; end always @ (posedge clk) begin if (we) ram[write_addr] <= data; q <= ram[read_addr]; end endmodule Что ему не нравится? Кристалл EP2S60, так что памяти там с лихвой хватит... Изменено 18 марта, 2012 пользователем spectr Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 18 марта, 2012 Опубликовано 18 марта, 2012 · Жалоба где-то, что-то не так Info (276007): RAM logic "bpformer:inst8|bpchannel:generated[1].bp|DataDelay:delayline|dpram:ram|ram" is uninferred due to asynchronous read logic либо вы код привели не тот, либо одно из двух %) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kluwer 0 19 марта, 2012 Опубликовано 19 марта, 2012 · Жалоба Господа, ну надо же хоть иногда читать руководства! Смотрите главу 11 руководства по Квартусу, которая посвящена особенностям упихивания HDL-кода в камни. Не помню точно как называется, но там есть раздел как раз посвященный памяти с одновременной записью и чтением. Как раз ваш случай. Там есть все ответы! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться