5

我正在寻找不特定于 Java 或任何其他语言的依赖管理工具。

我们使用 SystemVerilog(一种硬件描述语言)来创建独立模块。我们在各个里程碑标记这些模块的发布。更高级别的设计经常使用 Subversion 标签引入其他模块。

我们尝试使用 Subversion 外部组件来自动化操作,这样当您签出一个模块时,您也可以获得它的依赖项。但是当你进入系统级别时,嵌套的外部对象太多了,运行 svn update 需要一个小时。显然这种方法行不通。

基本上,我想说“我的模块依赖于这个版本的模块 A、这个版本的模块 B 和这个版本的模块 C”。该工具将检查依赖关系,检查依赖关系的依赖关系,并确保没有冲突的依赖关系(例如,同一模块的两个版本)。

是否有任何工具可以很好地与任意语言和 Subversion 配合使用?

4

2 回答 2

0

我没有感受到您所描述的依赖跟踪的痛苦,这意味着我可能不完全理解您的问题。

一种方法是将所有版本的模块保存在同一个库中的不同文件中。例如,您可以拥有adder_0_0.sv全加器 HDL 模块的第一个版本,该模块将描述一个名为adder_0. 如果您在模块中发现错误,您可以创建一个名为adder_0_1.sv也描述的文件adder_0。您将能够使用adder_0_1.sv而不是adder_0_0.sv. 如果您想通过添加或删除端口或更改端口的语义来更改接口,那么您可以创建一个名为adder_1_0.sv描述模块的文件adder_1。请注意,adder_0adder_1 不能互换使用。

这种方法背后的理念是所有这些文件都是一次写入的。您只需不断将新文件添加到您的库中。任何使用这个库的项目只需检查整个库并使用他们想要的任何文件。对于您使用的任何仿真或综合工具,依赖关系管理只需将正确的文件名放入正确的项目描述文件中即可。不需要特殊的依赖管理工具。您拥有的独立库越少,管理它们就越容易。

于 2012-03-06T08:59:28.693 回答
0

曾经我有一个在两个地方查找源文件的工具流。首先,它在本地目录中查找。其次,它查看了“master”区域,该区域是共享的只读目录,所有代码都已签出以供所有人使用。如果我需要修改代码,我只检查了我需要的模块。然后,该脚本将从我的本地工作区中获取该模块。它从主区域读取的其余代码。这都是自定义脚本,没有现成的工具,但这并不太难。

如果你得到这个工作,你可能会更进一步,将主区域代码编译到共享的主库中。这确实可以加快编译时间。

于 2012-10-11T10:48:21.357 回答