我正在寻找非特定于Java或任何其他语言的依赖关系管理工具。
我们使用SystemVerilog(一种硬件描述语言)来创建独立模块。我们在不同的里程碑标记这些模块的版本。更高级别的设计经常使用Subversion标签引入其他模块。
我们尝试使用Subversion外部代码来自动执行操作,因此当您签出模块时,您也会获得其依赖项。但是当你进入系统级别时,有很多嵌套的外部设备需要一个小时才能运行svn update。显然这种方法不起作用。
基本上,我希望能够说,“我的模块依赖于此版本的模块A,此版本的模块B,以及此版本的模块C.”该工具将执行检查依赖项,检查依赖项的依赖项,并确保没有冲突的依赖项(例如,同一模块的两个版本)的工作。
是否有任何工具能够与任意语言和Subversion一起使用?
答案 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_0
和adder_1
无法互换使用。
这种方法背后的理念是所有这些文件都是一次写入。您只需不断向库中添加新文件即可。任何使用此库的项目都会检出整个库并使用他们想要的任何文件。依赖关系管理只是将正确的文件名放在正确的项目描述文件中,以用于您使用的任何模拟或综合工具。不需要特殊的依赖管理工具。您拥有的单独库越少,管理它们就越容易。
答案 1 :(得分:0)
我有一个工具流程,在两个地方查找源文件。首先,它查看了本地目录。其次,它查看了共享的“主”区域,只读了所有代码的目录,供大家使用。如果我需要修改代码,我只检查了我需要的模块。然后,脚本将从我的本地工作区中获取该模块。它从主区读取的其余代码。这是所有自定义脚本,没有现成的工具,但它并不太难。
如果您正常工作,您可以进一步将主区域代码编译为共享的主库。这确实可以加快编译时间。