假设我有 2 个文件,都称为foo.e
,但位于不同的目录中。该文档提到不可能同时导入两者。因为一旦加载第一个文件,第二个文件将被跳过。
这只是 Specman 的限制还是背后有更深层次的原因?
假设我有 2 个文件,都称为foo.e
,但位于不同的目录中。该文档提到不可能同时导入两者。因为一旦加载第一个文件,第二个文件将被跳过。
这只是 Specman 的限制还是背后有更深层次的原因?
这是一个相当哲学的问题——这是一个限制还是一个特征。
在e中有一个模块的概念。每个加载或编译的e文件成为一个模块,源文件名(不带扩展名)成为模块名。并且模块名称应该是唯一的。我可以看到一些原因。首先,模块名称(以“@”为前缀)在许多情况下显示以引用特定模块。例如,在消息或错误消息中,提供源引用。其次,模块在反射 API 中由rf_module对象表示,并且可以通过名称查询这些对象。
我可以看到的另一个可能更深层次的原因是处理导入语句的方式。当有两个或多个import语句引用同一个文件时,只有第一个生效(将各自模块的内容带入系统),其他的被忽略。现在,如果允许多个具有相同名称的模块,则会导致以下问题:我们如何确定给定的导入语句是否与之前的导入引用相同的文件语句(因此应该被忽略),或者它指的是恰好具有相同名称的不同文件?仅仅比较确切的明确说明的路径是不够的,因为同一个文件可以由不同的路径(相对、绝对、通过符号链接等)引用。
提到了所有这些原因,人们仍然可以声称它们只是技术性的(而不是概念性的),并且这些问题可以以某种方式处理。所以,我不能给出一个明确的答案,不管它是否是一个限制。