开源仿真工具Icarus Verilog中的命令行参数处理方法
专栏:ExASIC Oct. 25, 2024, 10:36 p.m. 13 阅读
iverilog中的命令行参数处理方法

flex和bison介绍

flex是一个词法分析工具(以单词为单位),它能够识别文本中定义的单词pattern。github地址:https://github.com/westes/flex

GNU bison是语法分析工具,常和flex一起使用,来产生语法树。

具体使用方法可参考两篇博客:

Icarus Verilog中的实现

driver
    \ cflexor.lex
    \ cfparse_misc.h
    \ cfparse.y
    \ globals.h
    \ iverilg.man.in
    \ main.c
    \ Mainfile.in
    \ substit.c

driver目录是iverilog的可执行文件的源码。主要功能是接收命令行参数,启动子命令来实现编译。

我们注意到其中有cflexor.lex和cfparse.y两个特殊文件。cflexor.lex是flex的输入文件,定义了命令行参数格式,如+define+、-y、-f等。而cfparse.y是bison的输入文件,类似一个c语言的模板,经过bison处理后,得到完整的parser源码(cfparser.c)。可以从Makefile.in里得到确认:

cflexor.c: $(srcdir)/cflexor.lex
    $(LEX) -s -t $< > $@

cfparse.c: $(srcdir)/cfparse.y
    $(YACC) --verbose -t -p cf -d -o $@ $<

注:bison与YACC兼容,在YACC基础上做了改进。

感谢阅读,更多文章点击这里:【专栏:ExASIC】
最新20篇 开设专栏