Цитата(maksimp @ Feb 5 2012, 21:58)

В первом сообщении темы было "безотносительно технологии ПЛИС". То есть видимо на любой. Хочется код, для которого не важно какая ПЛИС.
Вопрос стоит некорректно. Код из примера Example 11–15. Verilog HDL Simple Dual-Port, Dual-Clock Synchronous RAM. будер работать безотносительно технологии ПЛИС в любом симуляторе, но то как он будет синтезирован в целевую ПЛИС отдается на откуп синтезатору. И если синтезатор, посчитает что описание не попадает под его критерии по которым он инферит память, то он сделает как умеет.
В свое время, для моделирования я делал DWC двухпортовую память, работало отлично, но в симуляторе. Попытки объяснить синтезатору что нужно вставить RAMB16 блок, вместо кучи логики успехом не увенчались. То же самое и про опцию byte_enable.
Поэтому, безотносительно технологии ПЛИс это будет классический
Код
always_ff @(posedge pipa_clk) begin
pipa_rdat <= ram[pipa_addr];
if (pipa_we)
ram[pipa_addr] <= pipa_wdat;
end
always_ff @(posedge popa_clk) begin
popa_rdat <= ram[popa_addr];
if (popa_we)
ram[popa_addr] <= popa_wdat;
end
но во что это синтезируется и каким свойством будет обладать (Read First, Write First, Don't care) будет зависить целиком и полностью от умности синтезатора.