u@home:~$

综合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。

screenshot0

又试了下在生成ram的时候如果选了LC,而不是Auto或者M9K,那ram就是由LC组成,会耗费非常多LC。忘了是几KB的ram,结果全部需要12000多LC。