Specman导入文件生成另一个要导入的文件的时间

Specman导入文件生成另一个要导入的文件的时间,specman,Specman,我想要一个导入另外两个文件的文件。第一个导入的文件实际上创建了第二个要导入的文件,因此必须在导入后立即执行。这在斯派克曼可能吗?我想我在其中一本手册中读到,在加载文件后,有一些内置函数会立即运行 接下来,我假设第一个文件可以使用Specman的反射来访问以前导入的其他结构/单元,以决定生成什么。 有关使用反射的详细信息: 例如: File1.e: <' // Function that runs immediately after this file is loaded // an

我想要一个导入另外两个文件的文件。第一个导入的文件实际上创建了第二个要导入的文件,因此必须在导入后立即执行。这在斯派克曼可能吗?我想我在其中一本手册中读到,在加载文件后,有一些内置函数会立即运行

接下来,我假设第一个文件可以使用Specman的反射来访问以前导入的其他结构/单元,以决定生成什么。 有关使用反射的详细信息:

例如:

File1.e:
<'
  // Function that runs immediately after this file is loaded
  // and generates File2.e
  on_load???(){
    ...
  };
'>

File2.e:
<'
// This file was generated by File1.e
'>

top.e:
<'
import File1;
import File2;
'>
File1.e:
文件2.e:
顶部e:

这几乎可以实现,但新版本的specman似乎不允许导入
#ifdef
。。如果你能找出
ifdef
的用法,那么这就行了

               top.e
       +--------/| \----------+
      /          |             \
macro.e    macro_call.e     generated_loader.e
                                 |
                             generated.e
top.e
具有:

<'
import macro;
import macro_call;
import generated_loader;
'>
<'
define <GENERATOR'statement> "GENERATOR" as computed {
    compute system("printf \"<'\\nextend sys{run() is first { print \\\"in generated.e\\\"; }; };\\n'>\\n\">generated.e");
};
#define ENABLE_GENERATOR_LOADER 1;
'>
<'
GENERATOR;
'>
<'
#ifdef ENABLE_GENERATOR_LOADER {
import generated.e;
};
'>
宏调用.e
具有:

<'
import macro;
import macro_call;
import generated_loader;
'>
<'
define <GENERATOR'statement> "GENERATOR" as computed {
    compute system("printf \"<'\\nextend sys{run() is first { print \\\"in generated.e\\\"; }; };\\n'>\\n\">generated.e");
};
#define ENABLE_GENERATOR_LOADER 1;
'>
<'
GENERATOR;
'>
<'
#ifdef ENABLE_GENERATOR_LOADER {
import generated.e;
};
'>
然后生成
。在运行
生成器
宏后,e
应具有以下内容:

<'
extend sys{run() is first { print "in generated.e"; }; };
'>
收益率:

[...]
Loading generated_loader.e   (imported by top.e) ...
read...parse...update...
   *** Error: Import Statements should be placed at the top of the file -
please change the statements order, pay attention to the imported module
'generated.e'.
                at line 4 in generated_loader.e
import generated.e;
编辑

再想一想,您可能只想将
定义为computed
,这将生成要就地解析的代码,而无需经历生成新文件的麻烦