综合soc2,LC资源不够了,altera的EP4CE6
前两天把cpu7b加上了vga,准备在FPGA板上跑一下,结果综合的时候说M9K不够了,altera EP4CE6的芯片有30个M9K,soc2里数量超了。
我就先把32KB的RAM改小,最后都改小到2KB了。虽说改小了以后不报M9K不够,改报LC不足了,因为也可以用LC实现memory。
Error (170048): Selected device has 30 RAM location(s) of type M9K. However, the current design needs more than 30 to successfully fit
Info (170057): List of RAM cells constrained to M9K locations
Info (170000): Node "text80x25:textvga|chrom:rom|altsyncram:altsyncram_component|altsyncram_10b1:auto_generated|ram_block1a1"
Info (170000): Node "text80x25:textvga|chrom:rom|altsyncram:altsyncram_component|altsyncram_10b1:auto_generated|ram_block1a0"
Info (170000): Node "text80x25:textvga|vgatextram:textram|altsyncram:altsyncram_component|altsyncram_j9u1:auto_generated|q_b[6]"
Info (170000): Node "text80x25:textvga|vgatextram:textram|altsyncram:altsyncram_component|altsyncram_j9u1:auto_generated|q_b[0]"
Info (170000): Node "text80x25:textvga|vgatextram:textram|altsyncram:altsyncram_component|altsyncram_j9u1:auto_generated|q_b[1]"
Info (170000): Node "text80x25:textvga|vgatextram:textram|altsyncram:altsyncram_component|altsyncram_j9u1:auto_generated|q_b[2]"
Info (170000): Node "text80x25:textvga|vgatextram:textram|altsyncram:altsyncram_component|altsyncram_j9u1:auto_generated|q_b[3]"
Info (170000): Node "text80x25:textvga|vgatextram:textram|altsyncram:altsyncram_component|altsyncram_j9u1:auto_generated|q_b[4]"
Info (170000): Node "text80x25:textvga|vgatextram:textram|altsyncram:altsyncram_component|altsyncram_j9u1:auto_generated|q_b[5]"
Info (170000): Node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[15]"
Info (170000): Node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[7]"
Info (170000): Node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[31]"
Info (170000): Node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[23]"
Info (170000): Node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[17]"
Info (170000): Node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[16]"
Info (170000): Node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[30]"
Info (170000): Node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[14]"
Info (170000): Node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[29]"
Info (170000): Node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[13]"
Info (170000): Node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[28]"
Info (170000): Node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[12]"
Info (170000): Node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[11]"
Info (170000): Node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[27]"
Info (170000): Node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[26]"
Info (170000): Node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[10]"
Info (170000): Node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[25]"
Info (170000): Node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[9]"
Info (170000): Node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[24]"
Info (170000): Node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[8]"
Info (170000): Node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[6]"
Info (170000): Node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[22]"
Info (170000): Node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[21]"
Info (170000): Node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[5]"
Info (170000): Node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[4]"
Info (170000): Node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[20]"
Info (170000): Node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[19]"
Info (170000): Node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[3]"
Info (170000): Node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[2]"
Info (170000): Node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[18]"
Info (170000): Node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[1]"
Info (170000): Node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[0]"
Info (170190): Fitter placement preparation operations ending: elapsed time is 00:00:00
Info (11888): Total time spent on timing analysis during the Fitter is 0.17 seconds.
Warning (171167): Found invalid Fitter assignments. See the Ignored Assignments panel in the Fitter Compilation Report for more information.
Error (171000): Can't fit design in device
Info (144001): Generated suppressed messages file /home/u/prjs/soc2/systhesis/altera/soc2_top.fit.smsg
Error: Quartus II 64-Bit Fitter was unsuccessful. 2 errors, 10 warnings
Error: Peak virtual memory: 792 megabytes
Error: Processing ended: Mon Jan 29 10:34:23 2024
Error: Elapsed time: 00:00:14
Error: Total CPU time (on all processors): 00:00:15
报LC不足是说当前的项目需要9000多LC,EP4CE6上有的资源是6000多LC。 LC 就是logic cell,或者LE logic element。
后来搜了下才知道Altera Cyclone IV,EP4 就是这个cyclone 4,CE6就表示芯片上有6000多LC,CE10就是有10K,CE15就是有15K,等等。
还有个情况,就是我把vga部分的代码注释掉以后,就不会报资源不足的错了,而且说device resources才用了7个?并且信息里还有优化掉了sram。
结果是全优化掉了,7个device resources是soc2_top的7个pin。
Info (12128): Elaborating entity "altsyncram_08t1" for hierarchy "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated"
Warning (14284): Synthesized away the following node(s):
Warning (14285): Synthesized away the following RAM node(s):
Warning (14320): Synthesized away node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[0]"
Warning (14320): Synthesized away node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[1]"
Warning (14320): Synthesized away node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[2]"
Warning (14320): Synthesized away node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[3]"
Warning (14320): Synthesized away node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[4]"
Warning (14320): Synthesized away node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[5]"
Warning (14320): Synthesized away node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[6]"
Warning (14320): Synthesized away node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[7]"
Warning (14320): Synthesized away node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[8]"
Warning (14320): Synthesized away node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[9]"
Warning (14320): Synthesized away node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[10]"
Warning (14320): Synthesized away node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[11]"
Warning (14320): Synthesized away node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[12]"
Warning (14320): Synthesized away node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[13]"
Warning (14320): Synthesized away node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[14]"
Warning (14320): Synthesized away node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[15]"
Warning (14320): Synthesized away node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[16]"
Warning (14320): Synthesized away node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[17]"
Warning (14320): Synthesized away node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[18]"
Warning (14320): Synthesized away node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[19]"
Warning (14320): Synthesized away node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[20]"
Warning (14320): Synthesized away node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[21]"
Warning (14320): Synthesized away node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[22]"
Warning (14320): Synthesized away node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[23]"
Warning (14320): Synthesized away node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[24]"
Warning (14320): Synthesized away node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[25]"
Warning (14320): Synthesized away node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[26]"
Warning (14320): Synthesized away node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[27]"
Warning (14320): Synthesized away node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[28]"
Warning (14320): Synthesized away node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[29]"
Warning (14320): Synthesized away node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[30]"
Warning (14320): Synthesized away node "sram:ram|altsyncram:altsyncram_component|altsyncram_08t1:auto_generated|q_b[31]"
Info (21057): Implemented 7 device resources after synthesis - the final resource count might be different
我感觉是因为没有了vga的输出,soc2_top只有clk和resetn两个输入,没有别的输出了,所以全部都优化了?因为实际上啥效果也产生不了?
又找了下各部分需要LC的统计,在soc2_top.map.rpt里。
确实是。
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
; Analysis & Synthesis Resource Utilization by Entity ;
+----------------------------+-------------------+--------------+-------------+--------------+---------+-----------+------+--------------+---------------------+--------------+
; Compilation Hierarchy Node ; LC Combinationals ; LC Registers ; Memory Bits ; DSP Elements ; DSP 9x9 ; DSP 18x18 ; Pins ; Virtual Pins ; Full Hierarchy Name ; Library Name ;
+----------------------------+-------------------+--------------+-------------+--------------+---------+-----------+------+--------------+---------------------+--------------+
; |soc2_top ; 0 (0) ; 0 (0) ; 0 ; 0 ; 0 ; 0 ; 7 ; 0 ; |soc2_top ; work ;
+----------------------------+-------------------+--------------+-------------+--------------+---------+-----------+------+--------------+---------------------+--------------+
之前报需要8000多LC。
又试了下在生成ram的时候如果选了LC,而不是Auto或者M9K,那ram就是由LC组成,会耗费非常多LC。忘了是几KB的ram,结果全部需要12000多LC。