一、Singal Tap 观察reg信号和wire信号
前言
编写完.v程序代码,全编译后,会将一些变量优化掉,导致调用Singal Tap时一些变量无法获取到,从而无法观察其运行程序代码时的变化情况。
下面介绍几种方法,来解决该问题。
keep -> reg、wire
1.
(* keep *) reg <variable_name>;
2.
(* keep *) wire <variable_name>;
wire <variable_name>/* synthesis keep */;
noprune -> reg
1.
(* noprune *) reg <variable_name>;
2.
reg <variable_name>/* synthesis noprune */;//避免quartus优化掉未输出的reg变量
preserve -> reg
1.
(* preserve *) reg <variable_name>;
2.
reg <variable_name>/* synthesis preserve */;//避免quartus将reg变量优化为常数,或者合并重复的reg变量。
3.
(* preserve *) module <module_name> (...);//观察整个模块的reg信号
4.
module <module_name> (...)/* synthesis preserve */;//观察整个模块的reg信号