是否有任何非语言特定的良好依赖管理工具?

时间:2012-03-02 22:50:48

标签: dependency-management system-verilog

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

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

我们尝试使用Subversion外部代码来自动执行操作,因此当您签出模块时,您也会获得其依赖项。但是当你进入系统级别时,有很多嵌套的外部设备需要一个小时才能运行svn update。显然这种方法不起作用。

基本上,我希望能够说,“我的模块依赖于此版本的模块A,此版本的模块B,以及此版本的模块C.”该工具将执行检查依赖项,检查依赖项的依赖项,并确保没有冲突的依赖项(例如,同一模块的两个版本)的工作。

是否有任何工具能够与任意语言和Subversion一起使用?

2 个答案:

答案 0 :(得分:0)

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

一种方法是将所有版本的模块保存在同一个库中的单独文件中。例如,对于全加器HDL模块的第一个版本,您可以使用adder_0_0.sv,该模块将描述名为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 无法互换使用

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

答案 1 :(得分:0)

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

如果您正常工作,您可以进一步将主区域代码编译为共享的主库。这确实可以加快编译时间。