【问题标题】:Quartus 20.1 high logic cell usageQuartus 20.1 高逻辑单元使用
【发布时间】:2021-09-15 12:32:48
【问题描述】:

我在 Quartus Lite Edition 中偶然发现了一个非常奇怪的行为。我正在使用带有 Cyclone IV FPGA 的 DE2-115 板为大学项目设置开发容器。

使用 Quartus 19.1 一切构建良好并且按预期工作,但如果我使用 20.1 版本,我发现装配工需要 17 分钟而不是 8 秒。

比较日志时,引起我注意的是,使用的资源从 18897 个逻辑单元增加到 118824 个逻辑单元,但 RAM 段从 322 个减少到 190 个。资源量较高可能是拟合和路由过程需要 17 分钟。

有没有人遇到过类似的行为?有什么我应该激活/停用的吗?

综合日志输出 Quartus 19.1

...
[0m[0;32mInfo (128003): Physical synthesis algorithm combinational resynthesis using boolean division complete: estimated slack improvement of 745 ps
[0m[0;32mInfo (128001): Physical synthesis optimizations for speed complete: elapsed time is 00:00:07
[0m[0;32mInfo (16010): Generating hard_block partition "hard_block:auto_generated_inst"
[0m[0;32m    Info (16011): Adding 1 node(s), including 0 DDIO, 1 PLL, 0 transceiver and 0 LCELL
[0m[0;32mInfo (21057): Implemented 19285 device resources after synthesis - the final resource count might be different
[0m[0;32m    Info (21058): Implemented 6 input pins
[0m[0;32m    Info (21059): Implemented 35 output pins
[0m[0;32m    Info (21060): Implemented 16 bidirectional pins
[0m[0;32m    Info (21061): Implemented 18897 logic cells
[0m[0;32m    Info (21064): Implemented 322 RAM segments
[0m[0;32m    Info (21065): Implemented 1 PLLs
[0m[0;32m    Info (21062): Implemented 8 DSP elements
[0m[0;32mInfo: Quartus Prime Analysis & Synthesis was successful. 0 errors, 33 warnings
[0m[0;32m    Info: Peak virtual memory: 1337 megabytes
[0m[0;32m    Info: Processing ended: Wed Sep 15 08:32:55 2021
[0m[0;32m    Info: Elapsed time: 00:01:04
[0m[0;32m    Info: Total CPU time (on all processors): 00:01:13
...

综合日志输出 Quartus 20.1

...
[0m[0;32mInfo (128003): Physical synthesis algorithm combinational resynthesis using boolean division complete: estimated slack improvement of 330 ps
[0m[0;32mInfo (128001): Physical synthesis optimizations for speed complete: elapsed time is 00:00:27
[0m[0;32mInfo (16010): Generating hard_block partition "hard_block:auto_generated_inst"
[0m[0;32m    Info (16011): Adding 1 node(s), including 0 DDIO, 1 PLL, 0 transceiver and 0 LCELL
[0m[0;32mInfo (21057): Implemented 119080 device resources after synthesis - the final resource count might be different
[0m[0;32m    Info (21058): Implemented 6 input pins
[0m[0;32m    Info (21059): Implemented 35 output pins
[0m[0;32m    Info (21060): Implemented 16 bidirectional pins
[0m[0;32m    Info (21061): Implemented 118824 logic cells
[0m[0;32m    Info (21064): Implemented 190 RAM segments
[0m[0;32m    Info (21065): Implemented 1 PLLs
[0m[0;32m    Info (21062): Implemented 8 DSP elements
[0m[0;32mInfo: Quartus Prime Analysis & Synthesis was successful. 0 errors, 25 warnings
[0m[0;32m    Info: Peak virtual memory: 1181 megabytes
[0m[0;32m    Info: Processing ended: Wed Sep 15 09:49:49 2021
[0m[0;32m    Info: Elapsed time: 00:02:48
[0m[0;32m    Info: Total CPU time (on all processors): 00:02:57
...

完整日志:

https://github.com/t-crest/patmos/files/7169188/build_log_quartus_20.1.log

https://github.com/t-crest/patmos/files/7169189/build_log_quartus_19.1.log

【问题讨论】:

  • Found 12 instances of uninferred RAM logic... is uninferred due to asynchronous read logic。应该是这样的:intel.com/content/www/us/en/support/programmable/articles/…
  • 不知道为什么 quartus 19 设法通过添加传递逻辑来克服这个问题。是关于编译器选项,还是因为在两个(?)项目中定义不同的某些变量而导致设计具有不同的行为,不知道......
  • AFAIK 现在定义了可以改变行为的变量。默认值已更改,或者他们更改了编译器中的某些内容,从而破坏了代码。

标签: fpga quartus intel-fpga


【解决方案1】:

我注意到,在 20.1 日志中,它多次(粗体)表示以下内容:

信息 (125068):修订版“patmos”之前已在 Quartus 中打开 Prime 软件版本 19.1.0 精简版。创建 Quartus Prime 默认设置文件 /opt/t-crest/patmos/hardware/quartus/altde2-115/patmos_assignment_defaults.qdf, 其中包含来自 Quartus 的默认分配设置信息 Prime 软件版本 19.1.0 精简版。

信息 (125069):在当前版本的 Quartus Prime 软件中更改了默认分配值 -- 更改为默认值 分配值包含在文件中 /opt/intel_FPGA/quartus/linux64/assignment_defaults.qdf

您可能希望在 .qsf 文件中比较这些更改的默认设置是什么,因为这可能会导致逻辑推断方式发生一些变化。

更具体地说,在日志中引起我注意的是,在 20.1 版本中,它是这样说的:

信息 (276014):发现 12 个未推断的 RAM 逻辑实例

还有很多关于异步读取的陈述:

信息 (276007):RAM 逻辑“Patmos:comp|PatmosCore:cores_0|DataCache:dcache|DirectMappedCache:dm|MemBlock_4:tagMem|mem”由于异步读取逻辑而无法推断文件:/ opt/t-crest/patmos/hardware/build/Patmos.v 行:6420

但是,这些不在 19.1 日志中。相反,19.1 日志列出了一堆 altsyncram 宏功能,这些功能具有 20.1 日志中不存在的同步 RAM 逻辑。

信息 (276029):从以下设计逻辑推断出 altsyncram 宏功能:“Patmos:comp|PatmosCore:cores_0|DataCache:dcache|DirectMappedCache:dm|MemBlock_4:tagMem|mem_rtl_0”

所以这似乎是造成差异的罪魁祸首。尝试弄清楚为什么 RAM 的推断方式不同,或者 20.1 版本认为是异步的信号的来源/约束。

【讨论】:

  • 我从两个默认分配中获取了一个差异,只有一个值不同。 EDA_GENERATE_FUNCTIONAL_NETLIST 从关闭更改为打开。我执行了合成,但正如预期的那样没有变化
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-24
相关资源
最近更新 更多