EE/System on Chip

[System on Chip] IP(Intellectual Property)

아이스얼그레이 2022. 3. 2. 17:30

SoC분야에서 IP(Intellectual Property)는 재사용이 가능하도록 잘 정리, 정의된 모듈을 의미합니다.

 

이때 IP를 재사용하는 이유는 처음부터 재설계를 하면 개발시간이 너무 오래걸리기 때문입니다. 이는 time to market을 떨어트리고 결국 chip을 생산하는 회사의 수익감소로 이어져서, 대부분의 SoC 제조사들은 ARM 사에서 IP를 구입해서 개발을 진행한다고 합니다.

 

Exynos 7420

위 사진은 삼성에서 만든 AP(Application processor)인 Exynos 7420입니다. 이러한 Architecture만을 통해서는 동작을 자세히 이해할 수는 없지만, core, cache, ISP 등이 bus(ABMA라는 protocol을 따릅니다.)를 통해 interconnected된 것을 확인할 수 있습니다.

 

여기서 core, cache 등이 ARM의 IP에 따라 만들어집니다.

 

크게는 Hardware IPSoftware IP 두 가지로 구분합니다.

또 HW IP는 soft IP, firm IP, hard IP 세 가지로 구분됩니다. 각 IP의 특징은 다음과 같습니다.

 

Soft IP

- 특정 HDL로 만들어진 RTL 수준의 설계이며, VHDL 또는 verilog HDL 사용합니다. HDL상에서 설계가 이루어지므로 설계변경이 용이합니다.

- 공정 기술 맵핑(technology mapping)이 이루어지지 않았습니다. 공정에 independent한 설계가 가능합니다.

- 논리 합성(logic synthesis)을 통해서 gate-level의 netlist로 변환됩니다.

 

장점 : reusability가 높습니다. 수정이나 개량이 용이하며 공정 변경에 따른 재설계가 필요없습니다.

단점 : 재사용을 위해서 추가적인 많은 과정(논리 합성, Place & Route, verification 등)을 거쳐야 합니다.

 

Firm IP

- 특정 공정의 library cells(gates)를 사용하여 기술된 netlist 형태의 IP입니다. 재사용성 및 공정 최적화는 soft IP와 hard IP의 중간 정도입니다.

assign tmp_re_1 = (in_re * tw_re);
assign tmp_re_2 = (in_im * tw_im);
assign tmp_im_1 = (in_re * tw_im);
assign tmp_im_2 = (in_im * tw_re);
always @ (posedge clk or negedge rst_n) begin
if (rst_n == 1'b0) begin
pipe_re_1 <= 0;
pipe_re_2 <= 0;
pipe_im_1 <= 0;
pipe_im_2 <= 0;
end
else begin
pipe_re_1 <= tmp_re_1;
pipe_re_2 <= tmp_re_2;
pipe_im_1 <= tmp_im_1;
pipe_im_2 <= tmp_im_2;
end
end
assign out_re = ((pipe_re_1 - pipe_re_2) >> 15);
assign out_im = ((pipe_im_1 + pipe_im_2) >> 15);

위와 같은 RTL level design을 logic synthesis하면 다음과 같이 gate level design으로 변경됩니다.

 

INVX1 U5 ( .A(n133), .Y(n134) );
NOR2X1 U6 ( .A(n134), .B(n132), .Y(n130) );
INVX1 U7 ( .A(A[15]), .Y(n132) );
XOR2X1 U8 ( .A(n49), .B(n50), .Y(SUM[30]) );
XOR2X1 U9 ( .A(B[30]), .B(A[30]), .Y(n50) );
OAI21XL U10 ( .A0(n51), .A1(n52), .B0(n53), .Y(n49) );
XOR2X1 U11 ( .A(n54), .B(n52), .Y(SUM[29]) );
AOI21X1 U12 ( .A0(n55), .A1(n56), .B0(n57), .Y(n52) );
INVX1 U13 ( .A(n58), .Y(n55) );
NAND2BX1 U14 ( .AN(n51), .B(n53), .Y(n54) );
NAND2X1 U15 ( .A(B[29]), .B(A[29]), .Y(n53) );
NOR2X1 U16 ( .A(B[29]), .B(A[29]), .Y(n51) );
XOR2X1 U17 ( .A(n56), .B(n59), .Y(SUM[28]) );
NOR2X1 U18 ( .A(n58), .B(n57), .Y(n59) );
AND2X1 U19 ( .A(B[28]), .B(A[28]), .Y(n57) );
NOR2X1 U20 ( .A(B[28]), .B(A[28]), .Y(n58) );

이때 HDL to gate level 변환은 compiler가 최적화해서 해줍니다. 이 단계의 IP는 soft IP보다는 재사용성이 떨어집니다. verilog 문법에 따라 고치기만하면 되는 soft IP와는 달리, gate level의 설계를 보고 어떤 동작인지 알아내야하고, 각각의 연결을 일일이 확인해야 하기 때문입니다.

 

Hard IP

- 특정 공정의 규칙에 맞추어 설계된 layout 형태의 IP입니다. 이 단계의 IP는 위 사진과 같이 Tr level에서 설계가 이루어지므로, 설계 수정이 거의 불가능에 가깝습니다. Tr의 연결을 보고 어떤 gate인지 알아낸 후, 또 그 gate의 연결을 통해 어떤 동작을 수행하는지 알아야하기 때문입니다.

 

장점 : 재이용이 가장 빠르고, 공정에 최적화되어 있습니다.

단점 : 앞에서 설명한것 처럼, 설계 수정이 매우 어려워서 재사용성이 낮습니다. 또한 타공정으로의 전환 시 이식성이 낮습니다.