ISE综合属性问题

[复制链接]
 楼主| gongjian32 发表于 2012-3-10 22:12 | 显示全部楼层 |阅读模式
synthesis syn_noprune syn_perserver syn_keep 之类的综合属性为什么ISE不能识别?
就是如何保证我的设计中没有用到的某个寄存器不被优化掉? 这样方便用chipscope 来观察信号.
ISE如何来实现的呢?
bityoung 发表于 2012-3-10 22:16 | 显示全部楼层
https://bbs.21ic.com/viewthread.php?tid=270141&highlight=

请看这个----呵呵,如果你单纯就是想通过chipscope看某个信号的话。
GoldSunMonkey 发表于 2012-3-10 23:44 | 显示全部楼层
:lol对我的**很熟悉嘛。
 楼主| gongjian32 发表于 2012-3-11 07:11 | 显示全部楼层
谢谢2楼的纪即时解答.
在altera的Qii中,在内部定义一个寄存器,然后加上Synthesis之类的属性就可以了. 不知道为什么xilin 的ISE没有这种同样的功能了,非得要将它定义为输出才可以实现.
哎...
差距
bityoung 发表于 2012-3-11 10:00 | 显示全部楼层
3# GoldSunMonkey 猴哥的**对于我等小辈就是圣经啊!
GoldSunMonkey 发表于 2012-3-11 10:57 | 显示全部楼层
谢谢2楼的纪即时解答.
在altera的Qii中,在内部定义一个寄存器,然后加上Synthesis之类的属性就可以了. 不知道为什么xilin 的ISE没有这种同样的功能了,非得要将它定义为输出才可以实现.
哎...
差距 ...
gongjian32 发表于 2012-3-11 07:11
。。。可以呀,一样的。你看**没有?
GoldSunMonkey 发表于 2012-3-11 10:58 | 显示全部楼层
3# GoldSunMonkey  猴哥的**对于我等小辈就是圣经啊!
bityoung 发表于 2012-3-11 10:00
评价太高~
 楼主| gongjian32 发表于 2012-3-11 13:21 | 显示全部楼层
module adc(
iclk,rst_n,spi_cs,spi_clk,spi_din,spi_dout,busy,shift_done,adc12,adc_data
,test    );

input iclk;
input rst_n;
output spi_cs;
output spi_clk;
output spi_dout;
input spi_din;
input busy;
input shift_done;
output [11:0] adc12/* synthesis syn_keep = 1 */;
output [15:0] adc_data;
reg [11:0] adc12;
output [3:0] test/* synthesis syn_keep = 1 */;
reg [3:0] test;

reg spi_cs;
reg spi_clk/* synthesis syn_keep = 1 */;
reg spi_dout;

不行啊,我定义了1个内部的[3:0] test,内部也没有使用. 但是chipscope里面还是没有看到

为了调试逻辑,现在很少再将FPGA中的信号引出,通过示波器或者逻辑分析仪来观察,更多的是在工程中生成stp或者cdc文件,通过signalTAP或者chipscope这两个工具来调试.
但我们发现,有时候在chipscope中很难找到你预期的信号,这往往是被综合器优化掉了,或者更改了信号名.我发现有效的方法是在源代码中加上约束语句,这样就不用对代码做大的改动.
例如:
在VHDL中:
为了观察sys_rst信号,sys_rst往往是组合逻辑,如果在chipscope中很难找到.我们先将 sys_rst用采样时钟打一拍,输出为sys_rst_d.
process(sys_clk)
begin
   if sys_clk'event and sys_clk='1' then
    sys_rst_d <= sys_rst;
   end if;
end process;
然后在信号定义下面加上
attribute keep        : string;
attribute keep of sys_rst_d    : signal is "true";
这样在chipscope中很容易就能找到sys_rst_d 信号.

在Verilog中:
只需将需要监测的信号输出到port,然后加上约束就行.
例如:
output          rx_sof_det_out /* synthesis syn_keep = 1 */;
output          rx_eof_det_out /* synthesis syn_keep = 1 */

这篇**里面不是要说把要观察的信号"输出到port,然后加上约束就行."
GoldSunMonkey 发表于 2012-3-11 14:30 | 显示全部楼层
兄弟,如果这样找不着,就证明你的代码被综合器优化太多了。
只能采用手动添加IP核的方式。
那也只能如此了。
其实手动添加也很方便:)
bityoung 发表于 2012-3-11 14:52 | 显示全部楼层
8# gongjian32 那就不用核插入器了吧!直接用core generator生成icon和ila核,然后将信号连接到ila核上就可以了。
GoldSunMonkey 发表于 2012-3-11 15:07 | 显示全部楼层
8# gongjian32 那就不用核插入器了吧!直接用core generator生成icon和ila核,然后将信号连接到ila核上就可以了。
bityoung 发表于 2012-3-11 14:52
是的:)
daisyly 发表于 2012-3-26 23:09 | 显示全部楼层
:lol 3# GoldSunMonkey
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

108

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部