[chip front end] Research on file parsing mode of Filelist -f/-F

Keywords: Front-end vim

preface

File directory used for test (list key files):

/home/xiaotu/my_work/uvm_demo
-cfg/
-ctl/
-rtl/
-sim/
    -Makefile
-tc/
-th/
-ver/

-f/-F affects the parsing method in the followed filelist file, and does not affect the parsing method of the followed file

A typical scenario is that the suffix path in the makefile with - f or - F is the same (only for parsing the list)  , The absolute path is parsed according to the absolute path, and the relative path is parsed relative to the directory where the makefile is located.

However, all paths in.. / cfg/tb.f are affected by the previous - f or - F. as shown in the above figure, the file path in.. / cfg/tb.f is resolved by - f regardless of the following writing method:

-F ../ctl/ctl.f
-f ../rtl/dut.f
../rtl/a.v

-f when parsing the path in the filelist, it has nothing to do with the path where the current filelist is located

-f ../cfg/tb.f,

When the path in tb.f is a relative path, it will be parsed relative to the path where the makefile is located;

When the path in tb.f is an absolute path, it is directly parsed according to the absolute path;

Further, the path in - f path/file.f will not affect the file path resolution in file.f in any way;

-F when parsing the path in the filelist, it is related to the path where the current filelist is located

-F ../cfg/tb.f

When the path in tb.f is a relative path, the path where the prefix filelist is located will be resolved;

../cfg/cfg.f How to write in:
../th/harness.sv

cmp.log Path resolved in:
Parsing design file '../cfg/../th/harness.sv'

When the path in tb.f is an absolute path, no path will be prefixed and the absolute path will be resolved directly;

../cfg/cfg.f How to write in:
/home/xiaotu/my_work/uvm_demo/ver/my_env.sv

cmp.log Path resolved in:
Parsing design file '/home/xiaotu/my_work/uvm_demo/ver/my_env.sv'

When the inner path of tb.f is the library file loaded by - y, it is directly regarded as a relative path, and the path where the prefix filelist is located is parsed;

../cfg/cfg.f How to write in:
-y /home/xiaotu/my_work/uvm_demo/rtl

cmp.log Path resolved in:
Warning-[LFCOR] Library file or dir cannot be opened
  Library directory '../cfg//home/xiaotu/my_work/uvm_demo/rtl' cannot be 
  opened for reading due to 'No such file or directory', will skip it.
  The library was specified from command line through -y or -v.

Nested scenes

../cfg/cfg.f Path within:
-f/-F ../cfg/dut.f(arrangement A)


../cfg/dut.f The path within is:
-f/-F ../ctl/ctl.f(arrangement B)

../ctl/ctl.f The internal documents are:
../ctl/my_interface.sv

-F (level A) nested - f (Level B). Both parsing are performed according to the absolute path or the relative path of the relative Makefile;

-F (level A) nested - f (Level B), level B parses in the form of - F, the absolute path of the file in level B parses normally, and the relative path parses relative to level B (i.e... / ctl /);

Parsing design file '../cfg/../ctl/my_interface.sv'

-F (level A) nested - f (Level B), and - f followed by the absolute path filelist will lead to compilation errors (this is caused by - F, which is reasonable and has nothing to do with - F)

Makefile Medium:
-F ../cfg/tb.f

../cfg/tb.f Medium:
-f /home/xiaotu/my_work/uvm_demo/cfg/dut.f

Compilation error:

Error-[P1ARGS-CANTOPN-F] Cannot open file
  Unable to open '../cfg//home/xiaotu/my_work/uvm_demo/cfg/dut.f' due to 'No 
  such file or directory'.
  Please fix the reason mentioned above and continue.

-F (level A) nested - f (Level B). The relative paths behind - F are relative to - f followed by the relative path of the directory where the file is located

It's too windy. Take a specific example:

Makefile Medium:
-F ../cfg/tb.f

../cfg/tb.f Medium:
-f ./dut.f

./dut.f Medium( dut.f stay cfg Table of contents:
../rtl/mul_trans.v
-f ../ctl/ctl.f

../ctl/ctl.f Medium:
../ctl/my_interface.sv

So mul_ The compilation path of trans. V is:

Parsing design file '../cfg/../rtl/mul_trans.v'

../cfg ——  - F.. / CFG / tb.f makes the relative path resolution in tb.f prefixed with.. / CFG;

../cfg/../rtl/mul_trans.v ——  - F. / dut.f therefore, when parsing the file with the relative path in dut.f, the relative path is the current.. / CFG path (the function of the previous layer - F);

And my_ Resolution path of interface.sv:

Parsing design file '../cfg/../ctl/my_interface.sv'

The form is - f nested - F and then - f nested. You can see that the latter two - FS are parsed relative to.. / cfg, and there is no path superposition between the two - fs (as mentioned above, the path in - f path/file.f will not affect the file path resolution in file.f in any way);

-F (level A) nested - f (Level B), - f followed by the absolute path in the filelist (if the filelist is found), it will be compiled as an absolute path

Makefile Medium:
-F ../cfg/tb.f

../cfg/tb.f Medium:
-f ../cfg/dut.f

../cfg/dut.f Medium:
/home/xiaotu/my_work/uvm_demo/rtl/mul_trans.v

Compilation results (this point deviates from my previous memory. I'll check it again. The measured results are indeed like this):

Parsing design file '/home/xiaotu/my_work/uvm_demo/rtl/mul_trans.v'

From a comprehensive point of view, - f nesting - F will affect - F's resolution of the relative path in the subsequent filelist, which should be used with extreme caution;

-F (level A) nesting - f (Level B)

Follow the law of - F layer by layer, omitted

summary

Because - f has a greater impact on the subsequent progressive disassembly of filelist, I think it is the most reasonable and safe to organize filelist in the way of - F + absolute path.

Posted by gammaman on Sun, 28 Nov 2021 13:37:59 -0800