原创 如何在SignalTAP II中保留特定节点

2008-1-2 10:11 6451 6 17 分类: FPGA/CPLD

    在使用SignalTAP II的过程中,我经常发现一些用于调试的逻辑(比如调试用的计数器)会被优化掉,不能出现在调试波形中。在Altera的一篇文档中,发现了以下关键信息: riple


In the logic synthesis stage, the Quartus II software may optimize away signals that you are trying to analyze with the SignalTap II Embedded Logic Analyzer. If this occurs, you will see a compilation error. You can force the Quartus II software to preserve these signals by adding the keep or preserve attribute in the source HDL to the signals you want to monitor.


The keep attribute is used for a wire or net node. For example:
In Verilog:
    wire my_wire /* synthesis keep = 1 */:
In VHDL:
    signal my_signal: bit;
    attribute syn_keep : boolean;
    attribute syn_keep of my_signal: signal is true;


The preserve attribute is used for a register. For example:
In Verilog:
    reg my_reg /* synthesis preserve = 1 */:
In VHDL:
    signal my_reg: stdlogic;
    attribute preserve : boolean;
    attribute preserve of my_signal: signal is true;


 


背景资料:Using SignalTap II Embedded Logic Analyzers in SOPC Builder Systems riple

文章评论11条评论)

登录后参与讨论

ash_riple_768180695 2010-6-21 10:17

使用哪种synthesis attribute是和综合工具有关的。不同的综合工具支持的attribute关键词可以是不同的,同一个综合工具也可以支持多个等价的attribute关键词。VHDL中的variable可以看作与verilog中的wire等价。wire如果不被连接到端口,就会被综合掉了,使用上述attribute也不起作用。可以考虑把wire连接到模块的输出端口,然后把这个悬空的端口属性设置为virtual pin,就可以在SignalTap II 中保留。

用户234413 2010-6-15 15:52

我想问一下 在verilog中,保留reg中是用 /*synthesis preserve=1*/; 但是我也在保留reg中用到过 /*synthesis noprune*/;而且确实可行,这两者功能都一样么?有没有什么区别呢? 另外我想用SIGNALTAP II观测VHDL中的variable变量又该怎么办呢?

用户1278632 2010-2-6 09:29

“谢谢你的评论,我刚刚发现,对于一些没有驱动任何逻辑的reg或wire,仅仅采用编译指示语句是不行的,还是要连接到一个空端口才能被保留。希望对你有帮助。” 说得很对,这一点我也验证了

ash_riple_768180695 2009-11-4 15:45

越辩越明!

用户505573 2009-11-4 11:34

“谢谢你的评论,我刚刚发现,对于一些没有驱动任何逻辑的reg或wire,仅仅采用编译指示语句是不行的,还是要连接到一个空端口才能被保留。希望对你有帮助。” 是啊,一些用于调试的逻辑(比如调试用的计数器)还是要接到端口上的,用这种方式不行的

用户1166636 2008-4-18 10:18

一语点醒梦中人!

用户1319511 2008-3-25 18:12

谢谢! 我发现这点确实有帮助!

ash_riple_768180695 2008-1-17 09:02

是的。还有一点:注释一定要在分号前边。

用户128735 2008-1-16 21:08

呵呵,客气了。经常看你的博客,受益匪浅,不时冒个泡也算表示感谢了。另外也是把自己实践过的结果贴上来给其他兄弟参考。

关于这个我试了一下:

In Verilog:
    wire my_wire /* synthesis keep = 1 */:

为什么末尾是冒号啊?我这样写编译通不过,改成分号就好了。

你贴的那个文件上也是这么写的,是不是Altera写错了?

ash_riple_768180695 2008-1-16 10:45

谢谢你的评论,我刚刚发现,对于一些没有驱动任何逻辑的reg或wire,仅仅采用编译指示语句是不行的,还是要连接到一个空端口才能被保留。希望对你有帮助。

相关推荐阅读
ash_riple_768180695 2015-12-18 11:06
学习示例程序:FPGA快速系统原型设计--敏捷实践
        学习与开发板配套的示例程序,是敏捷实践的起点。示例程序是厂商针对开发板上提供的硬件资源和接口量身定做的工程,可以展示其FPGA芯片的功能和性能特点。从示例程序入手最大的好处就是:示...
ash_riple_768180695 2015-11-03 16:46
开发板选取:FPGA快速系统原型设计--敏捷实践
    既然是“实践”,就不能只谈编码和仿真,必须要上板运行、调试。这个虚拟项目的目标是实现一块兼容Intel82574L以太网控制器的千兆网卡,需要运行在一块具备PCIe接口和10/100/10...
ash_riple_768180695 2015-10-22 12:41
开篇:FPGA快速系统原型设计--敏捷实践
    虽然借用了 “系统原型开发”的标题,本系列文章将围绕FPGA IP级别的开发这个主题展开,如果可能的话,将扩展至FPGA System级别的开发。     先上一篇PPT:RSPwFP...
ash_riple_768180695 2013-08-26 10:21
学习SystemVerilog(二)——学习它的理由
    学习SystemVerilog的理由也很多,我在阅读SystemVerilog for Design 和 SystemVerilog for Verification两本书前言的过程中,总...
ash_riple_768180695 2013-08-26 10:19
学习SystemVerilog(一)——不学习它的理由
    想要学习SystemVerilog已经很久了。曾经尝试通过Accellera网站上给出的LRM学习,怎奈内容众多,找不出入手点和重点,只能望而却步。虽然手头有三本SystemVerilog...
ash_riple_768180695 2011-06-26 23:20
Hardware-Assisted IEEE1588 Implementation Analysis
06/18/11 11:00:05 PM         最近一段时间在研究IEEE1588-2008精确时间同步协议(PTP)。该协议可以在软件中实现,如果需要提高时间同步...
我要评论
11
6
关闭 站长推荐上一条 /2 下一条