原创 如何让LCELL不被优化掉

2012-12-3 12:40 4663 14 19 分类: FPGA/CPLD 文集: QuartusII

1、通过QuartusII中的设置实现



完成下列两个设置即可实现:


"Remove redundant logic cells" , must be "off"
"Ignore LCELL buffers", must be "off"

You will find these 2 settings in the settings ->Analysis&Synthesis -> more settings


2、通过在HDL中添加综合属性来实现


       1)、下面是一个例子,首先代码中没有添加综合属性



library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_unsigned.all;


entity LcellTest is 
   
    port (
          clk :      in std_logic;   
          din :      in std_logic;
          dout :      out std_logic
    ); 
end LcellTest;
       
architecture rtl of LcellTest is
signal reg1,reg2,reg3: std_logic;


component lcell
port (
      a_in : in std_logic;
      a_out : out std_logic
);
end component;
 
begin
 
u1:lcell
port map (a_in => din, a_out => reg1);
u2:lcell
port map (a_in => reg1, a_out => reg2);
u3:lcell
port map (a_in => reg2, a_out => reg3);
u4:lcell
port map (a_in => reg3, a_out => dout);
 
end rtl;


上面没有添加综合属性代码编译后,通过Tchnology Map View(post-fitting)查看如下:


662cf7ac-1bd2-4e3e-bc58-9c148a917adf.jpg


可以看到代码中例化的所有lcell都被优化掉了。


 


2)、将代码修改(即添加相应的综合属性见紫红色段)如下:


library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_unsigned.all;


entity LcellTest is 
   
    port (
          clk :      in std_logic;   
          din :      in std_logic;
          dout :      out std_logic
    ); 
end LcellTest;
       
architecture rtl of LcellTest is
signal reg1,reg2,reg3: std_logic;
attribute keep : boolean;
attribute keep of reg1,reg2,reg3 : signal is true;


component lcell
port (
      a_in : in std_logic;
      a_out : out std_logic
);
end component;
 
begin
 
u1:lcell
port map (a_in => din, a_out => reg1);
u2:lcell
port map (a_in => reg1, a_out => reg2);
u3:lcell
port map (a_in => reg2, a_out => reg3);
u4:lcell
port map (a_in => reg3, a_out => dout);
 
end rtl;


上面添加综合属性后代码全编译查看Technology Map View(post-fitting)结果为:


点击看大图


从上图可以看到保留了3个lcell。


 


3)、假如既将第一种方法中的选项“off”掉,同时在代码中对reg1、reg2以及reg3添加keep属性,则编译结果如下:


点击看大图


 


4)、这里补充只“off”掉方法一的选项,而不添加keep属性,则上面代码编译结果为:


点击看大图

PARTNER CONTENT

文章评论5条评论)

登录后参与讨论

coyoo 2014-2-20 09:57

这跟语言没有关系,唯一区别是添加综合属性的语法有些区别而已。

用户1530460 2014-2-19 20:17

verilog中怎么加才能不让优化?

ytuxiaobin_573863401 2013-11-27 17:15

这两种方法都试过,一样的效果,在对信号加了signaltap监控之后,可以防止信号在布线的时候被优化掉,然后禁止signaltap有一定的几率在布线时候不被优化

coyoo 2013-11-27 15:57

哪种方法?我这里介绍了不止一种方法。

ytuxiaobin_573863401 2013-11-27 14:27

我通过试验验证,这种方法在RTL级确实没有优化掉,但是在布线后,通过chip planer看,添加的lce还是被优化掉了
相关推荐阅读
coyoo 2025-01-16 13:07
PET探测器
记录下PET探测器的知识点。所谓探测器,即探测出核医学里的核辐射。人体代谢等反应发生的湮没产生了伽马光子,该伽马光子的能量很强,当前很难直接探测(尽管还存在直接探测的探测器)。所以,更多的时候是间接探...
coyoo 2024-12-25 14:13
ALTERA Cyclone 10器件的使用-8:特定的上电顺序
概述 Intel 要求用户为其10代FPGA器件使用特定的上电和掉电顺序,这就要求用户在进行FPGA硬件设计的时候必须选择恰当的FPGA供电方案,并合理控制完整的供电上电顺序。经过在Cyclone 1...
coyoo 2024-12-22 11:46
AD9218子板在新处理板上表现的问题
概述 新的数据处理板融合了数字和数据处理功能模块,计划采用ADI的4通道串行ADC芯片代替之前的并行ADC。由于初次使用,所以初次设计时预留了AD9218的子板的插槽。 在调试AD9633功能的同时并...
coyoo 2024-12-14 17:15
在Cyclone 10 GX器件上实现高精度TDC探索
概述 Cyclone 10 GX器件的ALM结构与Cyclone V类似,所以在Cyclone 10 GX器件上实现TDC功能理论上是可以完全参考甚至移植自Cyclone V系列的成功案例。但是,现实...
coyoo 2024-12-10 13:28
Cyclone V GX FPGA设计TDC的优化问题
概述 通过前面的研究学习,已经可以在CycloneVGX器件中成功实现完整的TDC(或者说完整的TDL,即延时线),测试结果也比较满足,解决了超大BIN尺寸以及大量0尺寸BIN的问题,但是还是存在一些...
coyoo 2024-12-03 12:20
比较器检测模拟脉冲说明(四)
概述 说明(三)探讨的是比较器一般带有滞回(Hysteresis)功能,为了解决输入信号转换速率不够的问题。前文还提到,即便使能滞回(Hysteresis)功能,还是无法解决SiPM读出测试系统需要解...
我要评论
5
14
关闭 站长推荐上一条 /3 下一条