|
FPGA是ASIC设计者的一道普通难题?
随着开发 ASIC 与 SOC 的掩膜费用、复杂度和工具成本的上升,今天很多设计小组正在选用 FPGA 实现自己的产品设计。但是,在设计者跨出这一步之前,应从好、坏两个方面着手考虑多种因素。8 G. V" }6 _: n, R+ L7 f% I
要点:( x, i- [: q: U; K# K& \ V) k! x
* 设计者应听从 80% 的规则:如果你希望达到高性能目标,就要再以20%购买一种带有 LUT(查找表)的 FPGA。( B" a/ s4 v9 Z* z
* 最大的 FPGA 可以运行在 550 MHz。" S4 d3 b* q: G) n1 o& {
* 最大的 FPGA 有 33 万个逻辑单元,或大约等效于 1200 万个 ASIC 门。
' T" f) m; P( S8 a# \2 k$ ~ * FPGA 供应商的综合工具效率不及商业 EDA 公司的 FPGA 综合工具。! h, B5 y, c6 X, I
* 当选择一种 FPGA 时,注意观察布局与硬接线宏结构;这些会带来能影响时序的布局挑战。 过去 10 年来,FPGA 供应商在克服 FPGA 缺点方面取得了很大的进步,并从 ASIC 市场赢得了份额。在 90 年代末,FPGA 供应商增加了器件的容量,以抗衡中等规模 ASIC。然后在大约 2001 年,FPGA 供应商改进了器件的性能,与中等规模的 ASIC 竞争。尽管 FPGA 的功耗仍然远远高于密度与性能相当的 A SIC,但去年,FPGA 供应商迈出了一大步,稳定了 FPGA 的功耗(参考文献 1)。
/ W0 }3 ~0 w* h/ ~% ^& V1 h
" S% L/ D" T5 ?9 a8 D 在实现器件属性的同时,FPGA 价格也在下降。Actel、Altera、Lattice、Quicklogic 和 Xilinx 都提供范围广泛的器件,从每只几分钱的 CPLD(复杂可编程逻辑器件)到加密的非易失性 FPGA,还有高性能、高 LUT(查寻表)数、基于 SRAM 的 FPGA,它每片价格高达数千美元。1 O, F' S. S4 J9 J! s* k
. T5 g! w4 _. e; u6 Q 在 FPGA 业的早期,设计者主要将最昂贵和最高级的 FPGA 用于原计划用 ASIC 实现的功能原型代码,或用作系统设计的概念验证。他们会为自己的 ASIC 创建逻辑,运行验证,作 ASIC 设计分区,然后将这些分区编入一块原型板上的多个 FPGA 中(参考文献 2)。今天的设计者仍然使用这种方法,不过,由于 FPGA 各方面都有了提高,很多设计者甚至将最高级和最昂贵的 FPGA 用于生产部件。
5 ?, ?- ^8 d* D) H1 A6 z& L; h6 N m, A2 ?" x
我们很容易从一家 FPGA 供应商找到一位对 FPGA 赞不绝口的营销执行官,他会大谈 FPGA 如何取代 ASIC 的份额,甚至是用于量产。设计者也正在逐步认识到 FPGA 确实是真正可行的量产载体,设计者应当不再简单地把 FPGA 看作一种 ASIC 原型工具。
) C8 z. ~" W( g6 |, j6 k3 {# f$ y1 T+ @' {# J+ h8 i7 J- N8 u$ x
Sanjay Singh 是惠普公司不间断计算机部负责 ASIC/FPGA 设计的技术领导,他在职业生涯中设计过 10 种 FPGA 和 25 到 30 种 ASIC。他在 Tandem Computer 时开始设计 ASIC,后该公司在 1996 年被 Compaq 收购,HP 又在 2002 年收购了 Compaq。Singh 说:“我开始是用 0.5 微米为东芝不间断计算机做ASIC。”现在,他的小组正在用 110 纳米和 90 纳米节点设计 ASIC,并且当需要时,他的小组会用最高级的基于 SRAM的 FPGA(如 Altera 的 Stratix 级和 Xilinx Virtex 级器件)设计服务器应用。' y# y, M1 S' n4 z* s
$ V5 L( a+ r T& q1 ]4 V Singh 说:“我们的系统基于 Intel 的 Itanium 服务器芯片,而我们设计的 FPGA 必须与内存、I/O 和处理器通信。我们的增值是在硬件上,因此必须完成通信功能、端口功能、数据完整性功能,以及复制功能。我们设计的 FPGA 一般是在处理器板上,终端系统价格将在一百万美元以上。”
) A) Z/ O, d# Q/ ^$ [. c1 A- I9 r. E8 R4 q3 }0 B) I* I) |6 ~
另一方面,Ranjit Rozario 是新兴通信公司 Sonoa Systems 的一名高级设计工程师。这家公司的 100 名员工主要由软件工程师组成,Rozario 是其中少数硬件设计师之一。作为一名长期以来从事 ASIC的设计者,Rozario 最近第一次尝试了 FPGA 设计,最终选择了一片 Virtex-5 LX 220。( x5 k) R( N! ]
+ C+ K; `& A9 ` Y9 m6 M
Singh 和 Rozario 都认为,他们频繁地采用 FPGA有多种原因,但指出了用 FPGA 设计的优缺点。因此,当作这种转变时,ASIC 设计者必须考虑到多个因素,如设计规模、性能和功耗预算、PCB(印制电路板)要求、设计与验证要求,以及 FPGA 工具的局限。SRAM FPGA 也会带来新的挑战,例如软错误,这在 SRAM 结构中比标准单元更加常见。
0 {2 ?) }' `" E% E+ b- l
0 q1 d9 {5 {! B" U+ ] 为什么转向 FPGA?9 q$ ~ Z: \" {6 j
5 e7 m, \7 a T" |* l6 J 设计者选择 FPGA 代替 ASIC 有几个原因:FPGA 是可重新编程和现场升级的,设计周期短于 ASIC(图 1);FPGA 对高成本、低批量应用有更好的价格;它们相对稳定,因此你可以避免重新投片、掩膜的费用,并免除购买DFM(可制造设计)工具。 ' h4 u4 x' s% f% N! l A$ G4 `
+ x! U H. X' [3 F
& ]0 E+ R ~+ c% C7 q2 P
但是 Singh 称他的小组使用 FPGA 主要有两个原因。首先是 FPGA 能使他的小组将大量功能从 PCB 上拿掉,集成到一片 FPGA 中,增加速度性能和节省 PCB 空间。第二个也是最有说服力的理由,Singh 说使用 FPGA 只是因为 ASIC 的单位批量有时无法分担掩膜、设计与工具的成本,并且最重要的还有风险(图 2)。Singh 说:“FPGA 已得到发展,在很多情况下,它们可以满足你对性能和密度的要求。如果你正在设计一款中等规模的中等级别 ASIC,你就该问问自己:‘我要花费 2 百万到 3 百万美元去做一个 90 nm 或 65 nm 的 ASIC 吗?或者我用 90 nm 或 65 nm FPGA 技术能否得到相同的好处。’”
) o, a: E* y h* X
6 T7 |+ A, H! s9 E# ~' v Singh 指出,对于采用新架构、不需要像以往那样使用大量块的设计,他的小组更倾向于 FPGA 而不是 ASIC。由于 FPGA 可以重新编程,小组就可以尝试新的架构,当要修改时只需简单地重编程 FPGA。( l \. |% @6 T* Q. i
, W9 M$ \- z3 u5 _ 与 Singh 的小组类似,Rozario 的小组亦更爱用 FPGA而不是ASIC, 主要是出于成本因素。Rozario 说:“当你是一家新兴公司并且资金紧张时,首先要做的事就是寻找一种 FPGA,因为它的开发成本低得多,并且没有掩膜费用。”
* A8 L/ P& ` I- X4 e+ K L. w$ `* O( g2 ]2 V9 F0 {
Rozario 称,他的公司希望在下一代产品中,用单片 FPGA 硬件实现很多软件功能,以实现功能的集成和提速。他说:“我们开始时确实不清楚要将哪些功能移到芯片中,哪些功能需要加速。”他青睐 FPGA 的原因是小组在进程后期需要加快速度时,能够在 FPGA 上增加或减少功能。“FPGA 最棒的地方是你一直有改变的选择权。”
6 \ ]* i* c% _* H5 p8 Y0 g! K& G. C* _8 p' i, y
尽管选择转用 FPGA 相当简单,但 Rozario 和 Singh 也指出用 FPGA 作设计需要经过一些学习。两个工程师都认为,你在决定采用 FPGA 后,下一步就是选择一款正确的型号。9 P! B3 d& `( y2 @' O
3 y( g! c6 [- q- w4 T 确定 FPGA 需求
9 j- t" M1 P1 \ s4 s+ F8 L; K3 ?) A4 B! l3 I3 s
设计者需要从多个供应商那里查看有哪些可用的 FPGA 系列产品,找到性能、功耗与密度的正确组合。但购买时要记住:当从 ASIC 转向 FPGA 时,设计者需要了解的第一件事是确定一个性能等级指标,你购买的器件密度应比自己需要的高 20%。
( U: E, f3 N' G5 c) ?5 Z/ f% E* i' a ^7 Q
对于 Singh 迄今使用最多的 10 种 FPGA,他表示大多数选择的因素是要符合公司对批量与性能的要求。他解释说:“在所有这些情况下,我们都必须从频率、I/O 时间和使用率各个方面对设计作全面分析”。他的小组使用了一种经验法则,即如果你正在使用设计总资源的 60% 至 75%,则从一种编译到另一种编译之间的小变动就会给你一个满足性能需求并在实验室中完成的好机会。不过他也指出,如果你跨越了 85% 的使用界线,就可能无法获得需要的性能。, @+ g( }! _# _! ~6 A2 d
2 W0 W& L4 R" G+ F/ s1 ^ Singh 称他的小组设计出使用率高达 95% 的 FPGA,并达到了性能目标,但花费了大量工作。Singh 说:“你必须非常熟悉 FPGA 及其工作原理。在 ASIC 领域,你可以编写 TCL(工具指令语言)原程序,并查询数据库以获得你想要的东西,但在 FPGA 中,没有这么成熟的工具。它们通常是基于 GUI (图形用户界面)的。”
( g+ o+ _+ ]) l# N/ E
$ z* j6 Q% u6 H5 n6 y3 N Rozario 说,当他第一次在市场上寻找 FPGA 时,打动他的是供应商已经为满足多数性能和密度要求而改进了器件。然而,FPGA 仍然没有达到与 ASIC 相同的顶级速度或密度水平。如采用基于 SRAM 的最高级 FPGA,当按比例缩减功能,达到完全优化时,最高速度为 550 MHz,而 ASIC 的最高速度可以达到该性能的两倍。据 Xilinx 说,Xilinx Virtex-5 是现有最大的商用 65 nm FPGA,它有 33 万个逻辑单元,或大约等效于 1200 万个 ASIC 门。/ G1 t C& F# T3 a8 I
3 b" }, O, |3 i/ ^5 K7 w Rozario 最初担心 FPGA 的性能局限。但 FPGA 的速度与密度都令他吃惊。他警告说:“如果你过去习惯于设计 ASIC,那么在 FPGA 上肯定必须降低对性能的期望。”Rozario 指出,在第一次设计时,他的小组使用了 80% 的 Virtex-5 LX 220 资源,并达到了设计项目的性能目标。
7 J1 M6 Y' m {1 K! I' | o4 d
5 F' t/ j$ _) z" g/ V FPGA 供应商今天通常会提供自己器件的专用型。一个额定的 FPGA 产品系列通常有一种传统的门海 FPGA,以及一些面向特定市场的变型。有些器件面向网络应用,包括有硬接线的 SERDES(串行器/解串器)核;其它器件面向通信应用,带有硬接线的 DSP 块。所有这些都含有相当大数量的内存。例如,Xilinx 为高性能逻辑提供 Virtex-5 LX,为带串行连接的高性能逻辑提供 Virtex-5 LXT,而为带串行连接的高性能 DSP 提供 Virtex-5 SXT,为带串行连接的嵌入式处理提供 Virtex-5 FXT。 6 J! Y" v' `! n1 g* h% p' \# q! \
Singh 和 Rozario 都说,为你的应用选择正确器件极其重要,因为带有不需要硬接线核的 FPGA 会消耗资源,可能在设计周期后期成为布局的路障,妨碍实现自己的性能目标。
# W$ X" O" c! u n
$ F4 L1 b- U" U! z, ?. g5 o 两位设计者都没有做过功耗是主要考虑因素的应用,但 Singh 称做低功耗设计的小组必须考虑 FPGA 的功耗问题,虽然 FPGA 供应商已做出巨大努力来控制 90 nm 和 65 nm 节点下的总功耗与泄漏。+ e, |* Y4 @7 J' p
+ i) s( K% r; b' X- m, j
Singh 说,他的小组对功耗问题采取的唯一步骤是关断采用时钟门控技术的硬接线 5 Gbps SERDES。他说:“新型 FPGA 能非常好地处理低功耗问题,并且你可以用很多技术来降低功耗,但是我们还没有使用到它们。”当然,随着服务器应用越来越把功耗作为一种卖点,情况也会发生变化。
6 K; J- k' r. ~( c7 v4 |. i6 Q! A. f% I! R7 y
相同性能与节点工艺的 ASIC 功耗一般比 FPGA 小得多,不过 FPGA 供应商们正致力于取得这方面的进展。Xilinx 与 Altera 称已实现了稳定的泄漏功率,因此它们的 65 nm 器件的泄漏功率不超过 90 nm 器件的水平。# X% W- o$ k/ @- g
2 X4 W& G1 ~! b
适合系统需求
4 K9 W& D1 ]7 n S: o
$ c/ y N) k, d/ L! O 除了确保 FPGA 能满足性能、密度和功耗目标以外,设计者还必须考虑 FPGA 对 IC 封装和 PCB 的影响。FPGA 芯片通常在 PCB 上占用面积较大,它们密集的 I/O 一般也需要设计者为 PCB 增加更多层数,以处理这些 I/O 的走线。它们还需要更先进的封装和 PCB 信号完整性分析及足够的空间,用于容纳为 FPGA 正确供电的额外电源电路。所有这些要求都会增加设计周期和终端产品的成本。' s5 q) z5 d5 a: x( r3 X% W1 Z
* n9 R, K- W8 {+ W5 ^ Rozario 指出,对于这个设计,该小组没有其它运行在 1V 的器件,因此,为适应 FPGA,必须要在 PCB 上多放一个电源块,为器件供电。他提到,这个步骤没有问题,因为 PCB 比其上的 FPGA 大一点。; w5 k; d0 x9 S* q
" D# ~, U. `: I5 Y1 R8 n
除了选择一款满足系统性能、功耗和密度目标的器件,你还要查看 FPGA 供应商与独立 EDA 供应商提供哪种工具(图 3)。多年前,Altera 的 Quartus 开发套件出现了可用性问题,遭遇了一个相当大的挫折。该公司已纠正了这些问题,但用户必须留意工具的可用性与质量。 G( ]& U! n3 K$ L
7 r1 P- y3 D$ z4 C 工具与设计差异! z& u n+ F4 h) k+ E' {6 ~0 [
1 k; r; Y& [4 \3 B* B
Singh 和 Rozario 都说,尽管 FPGA 供应商的工具非常便于按钮式使用,并且如果你购买足够多的硅片,通常还是免费的,但它们并不比 ASIC 工具更简便。即你不能像用 ASIC 工具那样使用它们,完成定制的任务。Singh 特别强调,FPGA 供应商提供了相当不错的编译器或综合技术,但 FPGA 供应商的综合工具在设计实现时无法达到商用 FPGA 综合工具的效率,如 Synplicity、Mentor Graphics 和 Magma Design Automation 公司的产品。有些 FPGA 供应商做商用 EDA 工具的 OEM,为客户提供这些工具的一种“简约”配置,如只面向该供应商的 FPGA,只需少许价格或完全免费。多数情况下,这些工具要好于 FPGA 供应商自己的工具,但缺乏 EDA 供应商全价商用版的特性。另外,对于 FPGA 领域中的大多数部件,用户只能使用 FPGA 供应商自己开发的物理设计工具,而没有其它选择。FPGA 供应商自己开发的物理设计工具能帮助用户发挥供应商的 FPGA 架构的优点。但 Singh 和 Rozario 也说,与 ASIC 综合一样,布局工具很少像相应的 ASIC 工具那么复杂。
, h2 x6 \! y7 R
' I* @" f! K1 |- q Singh 和 Rozario 称,FPGA 的布局很难处理,因为很多 FPGA 有固定的宏,如 SERDES、RAM、PLL(锁相环)和 DSP 内核,有些还有固定的微处理器块。+ e# Q* J! ^* f
8 m9 C6 p8 z: l6 }% m! w) q 例如,Altera 提供的 Stratix 和 Stratix GX 系列。Singh 称这两款 FPGA 相似,但 GX 包含硬接线的 SERDES 块。他解释说,当定位 RAM、PLL 和专用的 I/O 块时,你需要作自下而上的设计:获得出脚、封装和片芯上的宏,然后作规划和实现。I/O 技术的挑战、DDR 的 SSTL(短分支串行端结逻辑),以及 PCI 的 HSTL(高速收发器逻辑),所有这些都使 Singh 明白了事先努力的重要性,了解各款器件提供的功能以及设计时需做的工作。4 T6 M% U2 V/ n3 H- w6 L1 Y6 a# V
0 N9 J4 ]. w+ d; X) h Singh 还指出,虽然 ASIC 有多个时钟资源,但 FPGA 有更多的限制,通常有全局时钟。Singh 说:“如果你正在考虑将一个 ASIC 设计移植到 FPGA 上,但它包含多个时钟域(尤其是大的时钟域),那么你必须与 FPGA 供应商合作,以确定该器件是否能承担你的设计。”除了全局时钟以外,FPGA 也有局部时钟。但 Singh 警告说,这些时钟仅限于一定数的象限,因此要特别注意你的逻辑及其时钟。Singh 的设计采用了多个时钟域,通常有 15 至 20 个, FPGA 的实现需要大量工作。他解释说:“用 ASIC 时,你可以调整自己的 I/O。FPGA 的 I/O 很复杂,调整要占用相当多的开销,因为它很难协调转换速率、驱动强度以及阻抗。”据 Singh 说,如果你未能在设计开始时正确地调整好 I/O,则信号完整性和时钟都会成为大问题。
! G9 {4 _8 Y: z) o3 uRozario 的小组在布局时遇到了类似的问题。但由于他的设计里时钟域相对较少,时钟结构比较简单,足以满足他的设计。Rozario 说:“FPGA 结构中带有内置时钟,这样时钟均衡要比 ASIC 简单得多。你不必担心 H 树信号完整性,因为 FPGA 架构已注意了所有时钟问题,每个区域内你都有大量的时钟。”0 u* `/ e. X: N, q3 c5 U( B/ D
* U6 I$ J7 z9 z, l: M7 K) p, X Rozario 警告说,规划很差的布局会造成时序问题。“有些较大的 FPGA 有你不需要的功能,你得花精力处理它们。我们使用的器件有硬接线 DSP 功能。我们在设计 中并不使用 DSP,但可能在下个设计中用到它。”一旦他的小组建立了最佳布局,Xilinx ICE(在线仿真器)工具就完成了一件“相当不错的工作”,使设计适应于架构。开始时,他的小组会对每个 FPGA 子模块作平面规划,使之达到最高层级,然后为整个芯片重复这种方法。不过,ICE 应用工程师警告说该小组的做法违反了他们的建议,要求小组采用自动化工具。Rozario 表示怀疑,但发现两种方法的结果是相似的。9 f8 o! s* f" k5 B/ c: [, [
* a* G8 r, W0 c, L% w7 ]/ z4 P 尽管 FPGA 工具较 ASIC 设计工具缺少定制能力,Singh 仍鼓励 ASIC 设计者转向 FPGA 设计,以利用 FPGA 供应商的免费工具、IP(知识产权)产品,以及客户支持。他举出了一系列好处,包括供应商良好的程序管理、架构、以及懂得 FPGA 的设计专家,还有现场支持。他发现这些工具对基础工作很有价值,如平面规划和信号完整性。
* } [& l$ t) U5 r! `) y" G; |! N) U6 @" y3 r$ d, s
验证问题
, y5 X! l6 Z3 W: N+ c4 P8 a% \6 A2 q' Q6 y( L! E
当 FPGA 初次进入市场时,最大的卖点之一是设计者可对它们编程,然后直接在一个运行系统原型的板上作测试,从而跳过了基于仿真的逻辑验证。很多 FPGA 老手仍然使用这种方案。但 Singh 和 Rozario 认为,即使是现在的中规模FPGA 一般也太大太复杂,不能做简单编程、板上运行,以及系统测试与起动期间的调试。4 V* P5 |$ l3 U6 }) p; e, k$ c9 f; @& N
5 k3 \& G n( ], P- I+ i2 v
很多有经验的 FPGA 设计者告诉 Rozario 说,他们设计芯片会跳过逻辑验证步骤,然后在实验室中测试芯片。Rozario 并不支持这种方法,原因是,尽管他的芯片外部有标准的总线接口,但内部很复杂,在看不到芯片内部的情况下作调试相当困难。他说:“有了波形就容易多了,所以我们坚持 ASIC 验证方法。我们仍会在实验室作调试,但我们尝试在进实验室以前解决掉大多数问题。”
3 W& o) f3 ?$ S" c1 L- s, `2 {' U- N' L# R
同样,Singh 称由于自己的小组只使用最大的 FPGA,它对 FPGA 使用了与 ASIC 相同的验证方法,用一个测试平台对每个设计作彻底仿真、调试和时序分析,。
$ m: F+ l* Y( `6 |2 E/ H" T; N5 i8 I S$ ~# W) @4 y/ _- a
Singh 说:“我们要做功能仿真、门级仿真和动态仿真,将门与寄生参数送回到功能仿真。然后,我们会做一次多个角度和模式的全面静态时序分析。一旦我们获得了完美的结果,就将其装到电路板上,上电起动。”他承认,第一次使用这种方法时,一定会做一些重复工作,然后它就会成为一种标准的过程,后面的项目就比较容易了。这种方法一般都会给 Singh 带来满意的结果。FPGA 供应商为他们的软硬块、SERDES、PLL 和其它宏提供功能强大的仿真模型,有助于小组的验证工作。
( v4 _; ?) m; T* Y" \
, y7 x1 {- c! |1 [ 软错误, [( |0 B E- [' i+ D1 ?
. }& n% {" I8 U7 ]! Y! s( K 除了 ASIC 与 FPGA 设计之间的微妙差异以外,基于 SRAM 的 FPGA 亦给用户带来了一个新的挑战:软错误。软错误出现在一个随机大气中子与 IC 碰撞时,它会造成一个位的错误,或有些情况下产生一个虚假信号(参考文献 3)。标准单元器件一般不易受软错误影响,但 SRAM 结构、逻辑及其它类型存储器则相反。Xilinx、Altera 和 Lattice 这些公司的最高性能 FPGA 都建立在 SRAM 上。
2 i; w2 t; s. w+ @4 p/ A
+ R2 L& Y6 ]2 y9 I, v1 Z+ O. [0 h Singh 表示,他的小组也开始频繁地遇到软错误。因此他警告说,当挑选器件时,你需要查看它的可靠性研究。并且,即使供应商声称该 FPGA 是可靠的,你也需要在自己设计中增加一些 ECC(纠错编码)。基于 SRAM 的器件需要一种 ECC 配置,以确保不会有虚假错误,即中子撞击所造成的交换位。2 E( S* a# V$ ~' Z
" t& G& F2 S3 O
如果设计中有用于检查配置 RAM 完整性的控制电路,则每当你的 RAM 改变配置时,差不多都会遇到一个软错误。软错误在 ASIC 设计中不常见,但它们能够影响 FPGA 中所有基于 SRAM 的部分,包括基于 SRAM 的逻辑结构和片上 SRAM 块。Singh 说:“由于晶体管越来越小,电压不断下降,你无法阻止它,你总会被一粒中子击中。”
' a0 }; J& e0 s
" N+ f+ W# @/ W0 s" i U6 A% Q9 C
1 M" H) f3 A8 u! | 所幸,Actel 和 Lattice 等供应商已经解答了软错误问题,因为它们可提供基于快闪的非易失性 FPGA。这些器件的速度和密度都比不上 SRAM 器件,但它们能够抵制软错误。非易失性器件正在日益普及,因为它们为进入全球市场营销的企业提供了更佳的安全性。
9 k5 `2 t+ _# m5 A
, {3 T2 @$ A' b# ] J 面对不断上升的 ASIC 掩膜、开发与工具成本,FPGA 供应商向设计人员展示了一种切实可行的选择,可以快速使设计实用化。但是,在设计者跨出这一步之前,他们需要研究 FPGA,并权衡每家供应商的架构、设计工具以及技术支持。设计者还必须了解 FPGA 架构的局限性,并提高相应的设计技能。 |
评分
-
查看全部评分
|