• 카테고리

    질문 & 답변
  • 세부 분야

    반도체

  • 해결 여부

    해결됨

BRAM은 어떻게 합성되나요?

23.09.15 10:10 작성 조회수 282

1

module true_sync_dpbram (

clk,

addr0,

ce0,

we0,

q0,

d0,

addr1,

ce1,

we1,

q1,

d1

);

parameter DWIDTH = 16;

parameter AWIDTH = 12;

parameter MEM_SIZE = 3840;

input clk;

input[AWIDTH-1:0] addr0;

input ce0;

input we0;

output reg[DWIDTH-1:0] q0;

input[DWIDTH-1:0] d0;

input[AWIDTH-1:0] addr1;

input ce1;

input we1;

output reg[DWIDTH-1:0] q1;

input[DWIDTH-1:0] d1;

(* ram_style = "block" *)reg [DWIDTH-1:0] ram[0:MEM_SIZE-1];

always @(posedge clk)

begin

if (ce0) begin

if (we0)

ram[addr0] <= d0;

else

q0 <= ram[addr0];

end

end

always @(posedge clk)

begin

if (ce1) begin

if (we1)

ram[addr1] <= d1;

else

q1 <= ram[addr1];

end

end

endmodule

 

저기서 시스템이 BRAM을 사용한다는 걸 어떻게 인식할 수 있나요?

(* ram_style = "block" *)reg [DWIDTH-1:0] ram[0:MEM_SIZE-1];

이 한문장이 없으면 BRAM을 사용하지 않게 되나요?

아니면 단순히 코드 구성을 보고 자동으로 BRAM이 있다고 판단하여 합성해주나요?

답변 1

답변을 작성해보세요.

0

안녕하세요 :)

저 코드는 Xilinx tool 에서 만들어준 코드입니다.

tool 의 정확한 동작원리는 저도 잘 모르겠어요.

예상해본다면, (정확하지 않습니다.)

(* ram_style = "block" *)reg [DWIDTH-1:0] ram[0:MEM_SIZE-1];

위 라인이 없으면 BRAM 으로 사용하지 못할 것 같습니다.

해봐야 알 것 같은데, 그 부분은 질문자님께서 하실 수 있는 내용이라 판단이 되네요.

직접 해보시면 답이 되실 것 같아요.

즐공하세요 :)