问题:
在用SignalTap去抓信号波形时,会发现部分变量名变红了,且大部分都是中间定义的reg型、wire型变量。
原因:
查阅资料之后发现原因:quartus在综合的时候会将这些中间变量综合掉,从而在signaltap上没办法对其信号进行采样。
解决方法:
1、对于wire 型变量:在待观察的wire信号旁边加上/synthesis keep = 1/;
举例:wire spi_ack /* synthesis keep = 1 */ ;
2、对于reg型变量:加/synthesis noprune/ 或者 /* synthesis preserve */
两者的不同之处在于:
/synthesis noprune/避免Quartus II优化掉没output的reg。
/synthesis preserve/避免Quartus II将reg优化为常数,或者合并重复的reg。
举例:reg [07:00] logp_start_cnt /synthesis noprune/ ;