[an error occurred while processing this directive]
|
например ксайлинкс рекомендует так (VHDL или другие варианты в xst.pdf)
module raminfr (clk, we, a, dpra, di, spo, dpo);
input clk;
input we;
input [4:0] a;
input [4:0] dpra;
input [3:0] di;
output [3:0] spo;
output [3:0] dpo;
reg [3:0] ram [31:0];
always @(posedge clk) begin
if (we)
ram[a] <= di;
end
assign spo = ram[a];
assign dpo = ram[dpra];
endmodule
если это библиотечный cell, то обычно он поставляется с моделью (генераторы памяти генерят поведенческую модель), в которой приблизительно такое же описание + куча проверок на setup/hold/clock-to-clock и т.п.
описано как обычными always, так и
specify
$setuphold(posedge CLKB &&& re_flagB0, posedge DB[0],1.000, 0.500, NOT_DB0);
.......