如何在飞行中更新标题
How to update the header on the fly
是否有办法在飞行中更改头文件?
头文件包含许多可用于模块的常量。然而,在我的应用程序中,有些常量必须经常手动更改。有什么方法可以自动改变这些值吗?
我尝试了以下方法。1. 使用c++确定常量并将其写入头文件。2. 使用SV模块更新头文件。在运行top模块之前,所有这些方法都需要额外的步骤。有没有办法在执行模拟器时更新头文件?
在下面的标题中。v包含NUM,它在模块main中使用。NUM经常更改
这个问题也适用于其他语言,如c++或Java。
header.v:
`define NUM 256 //256 must be changed often
module top ();
initial ...
//instantiation
main MAIN();
endmodule
//this module contains NUM
module main ();
byte[0:`NUM - 1];
endmodule
如果在相同的模拟中每个模块不同,那么您应该使用parameter
而不是`define
。
main #(parameter NUM) (/*portlist*/);
// ...
byte array [0:`NUM - 1]; // FYI 'byte' is a SystemVerilog keyword
// ...
endmodule
大多数模拟都支持从命令行传递定义,如果模拟中的值相同,但每个模拟的值不同,则可以工作。
-
+define+NUM=256
-
-define NUM=256
-
-D NUM=256
为了减少重新定义警告,将`ifndef
包装到header.v
中的定义:
`ifndef NUM
`define NUM 256 //256 must be changed often
`endif
c++是一种编译语言,在编译期间,像东西这样的常量被翻译成机器语言(我知道它的非常原始的描述,为了详细理解,您可以参考进程地址空间和常量驻留的地方http://www.geeksforgeeks.org/memory-layout-of-c-program/)。如果您想要更改这些常量(或类似的东西),则应该重新编译代码。有一些技术可以让您使用一些工具从输入文本文件生成自定义代码。但这并不适用于您的场景。
我认为配置文件是您的情况下最好的匹配,您可以根据自定义定义参数。
相关文章:
- 从C++本机插件更新Vector3数组
- QGraphicsPolygonItem在拖动时未更新QPolygonF坐标
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- cmake更新缓存的变量
- 更新到莫哈韦后出现cmath错误
- OpenMP:并行更新数组总是需要减少数组吗
- 为什么我的变量没有更新,我的 LED 没有亮起?
- 指针没有更新它在void函数内部指向的值
- 如何在c++中获取要更新的值
- 已修改的LinkedList未在文本文件本身中更新
- Qt:当QListView获得新条目时,如何更新QStringList
- 对于C++,方括号中的标题必须总是在引号中的标题之上吗
- 更新的矢量元素不打印
- 库标题在标题中不可见,但在 cmake build 下.cpp文件中完全可见.为什么?
- 如何使用按钮更新GTK3图像以使用C++从相机捕获图片
- 如何在ECS框架中更新组件数据和通知系统
- 从VS 2015更新3更新到VS2015更新3 d后浮点计算行为不同的原因
- Cinder 无法在应用程序运行时更新窗口的标题
- 如何在飞行中更新标题
- 如何动态更新QMenu和子菜单标题文本