verilog - 使用相同的单元名称编译 + 精心设计
问题描述
我正在编译一个使用 2 个 lib 文件中定义的单元的设计。
在两个 lib 文件中都有一个单元格,例如下面的 : ff
,具有相同的名称,这会导致编译器失败。
我试过的:
- 编辑 lib_file1.v - 将 ff 名称更改为 d_ff(呃!lib_file1.v 是第三方,我们不想碰它)
- 包含没有 -v 选项的文件。这可行,但随后会编译大量冗余单元。
- 编译成不同的库 - 这不起作用,因为失败处于细化阶段
有没有办法告诉编译器只使用在它实例化的 lib 文件中定义的单元格,而不编辑 lib_files。
文件列表如下所示:
top.v
-v lib_file1.v
-v lib_file2.v
文件 lib_file1.v
//other cells which use ff
module slow_ff(....);
............
ff i_ff(D, Q, CP);
endmodule
module ff(D, Q, CP);
.....
endmodule
文件 lib_file2.v
//other cells which use ff
module fast_ff(...);
..........
ff i_ff(D, Q, CP, EN);
endmodule
module ff(D, Q, CP, EN)
.....
endmodule
编辑:top.v 不直接实例化 ff,它使用“包装单元”(例如,slow_dff 和 fast_dff)。问题是,如果首先编译 lib_file1.v,链接器将使用 lib_file1.v 中定义的 ff 也用于 lib_file_2.v
解决方案
Verilog中有配置,但我认为解决问题的简单方法可能是:
module top (...);
...
`uselib file=lib_file1.v
ff ff1 (...);
`uselib file=lib_file2.v
ff ff2 (...);
...
endmodule
推荐阅读
- r - 使用 tidymodels recipes 包添加缺少的指标列
- flutter - Flutter - AnimatedBuilder ,第一次加载时出现动画/小部件错误
- amazon-web-services - 如何针对特定 REST 端点实施基于 http 500 错误率和 P99 延迟的故障转移策略?
- python - OSError: [Errno 2] 没有这样的文件/目录
- windows - 一种阻止 stm32 nucleo l4r5zi 提供 5v 输出的方法
- r - 如何在 Shiny 应用程序中为三个按钮提供一个可观察的功能
- r - 如何使用 R 中的 lavaan 包测试潜在变量的因子负载差异
- python - Numba,奇怪的类型修改
- angular - 单击时角度材料表选择/取消选择行
- r - 当每个对象的因子向量不同时,如何从长格式转换为宽格式?