VHDL 中是否存在关键字 "volatile" 或这样的概念,而无需触及编译器设置?
Does the keyword "volatile" exist in VHDL or such a concept without touching compiler settings?
长话短说,我的一位负责硬件的同事正努力为他的 FPGA 优化他的 VHDL 代码。我,更多的是在软件方面,想知道在 VHDL 中是否会有类似于关键字 "volatile" 的东西(例如,在 C++ 中)。
想法是避免编译器优化 "too much" 代码,为 FPGA 提供损坏的固件而不 触及环境设置(为了代码可用于不同的设计软件)。
提前抱歉,如果这是一个愚蠢的问题,那只是出于对我的好奇,也许是我同事解决方案的开始。
谢谢。
不,"volatile" 在 VHDL 中没有位置。
如果他在进程之间共享变量(而不是信号),请将其设为 "protected object" (VHDL-2002,2008)。
如果他发现综合正在删除部分设计,那么它们是多余的并且不会影响结果。那么问题不在于优化,而是首先不正确的 VHDL,在进行综合之前应该在仿真中进行更好的测试。
如果他有特定的理由在合成过程中保留命名对象(信号等),其中它是其他信号的副本,那么他可以附加 "keep" 或 "dont_touch"它的属性 - 确切的语法因综合工具而异。
长话短说,我的一位负责硬件的同事正努力为他的 FPGA 优化他的 VHDL 代码。我,更多的是在软件方面,想知道在 VHDL 中是否会有类似于关键字 "volatile" 的东西(例如,在 C++ 中)。
想法是避免编译器优化 "too much" 代码,为 FPGA 提供损坏的固件而不 触及环境设置(为了代码可用于不同的设计软件)。
提前抱歉,如果这是一个愚蠢的问题,那只是出于对我的好奇,也许是我同事解决方案的开始。
谢谢。
不,"volatile" 在 VHDL 中没有位置。
如果他在进程之间共享变量(而不是信号),请将其设为 "protected object" (VHDL-2002,2008)。
如果他发现综合正在删除部分设计,那么它们是多余的并且不会影响结果。那么问题不在于优化,而是首先不正确的 VHDL,在进行综合之前应该在仿真中进行更好的测试。
如果他有特定的理由在合成过程中保留命名对象(信号等),其中它是其他信号的副本,那么他可以附加 "keep" 或 "dont_touch"它的属性 - 确切的语法因综合工具而异。