文章目录
笔记同步在我的 个人网站进行更新,欢迎来访查看。
在跑设计流程Demo之前,需要先了解OpenFPGA Task。
Tasks 提供了在多个基准测试,架构和OpenFPGA参数上运行OpenFPGA流程的框架。框架的结构与VTR-Tasks实现非常相似,具有附加功能和次要文件扩展更改
一、Task 目录
tasks保存在 TASK_DIRECTORY
目录(默认为${OPENFPGA_PATH}/openfpga_flow/tasks
)中,在该目录中的任何带有../config/task.conf
文件的子目录都会被视为一个 task 。跟Pyhon的包概念有点类似。
例如,一个名为 basic_flow
的task,必然存在下述文件:
${TASK_DIRECTORY}/basic_flow/conf/task.conf
同样, task regression/regression_quick
,必然存在下述文件:
${TASK_DIRECTORY}/regression/regression_quick/conf/task.conf
二、OpenFPGA Task 解析
以 generate_fabric
为例,进行task的配置文件的讲解:
首先一个task的配置文件包括 GENERAL
, ARCHITECTURES
, BENCHMARKS
, SYNTHESIS_PARAM
和 SCRIPT_PARAM_<var_name>
,五大节。
打开 generate_fabric
的 task 配置文件:
2.1 GENERAL 节
这一节主要来用进行一些通用设置
[GENERAL]
run_engine=openfpga_shell
power_tech_file = ${PATH:OPENFPGA_PATH}/openfpga_flow/tech/PTM_45nm/45nm.xml
power_analysis = true
spice_output=false
verilog_output=true
timeout_each_job = 20*60
fpga_flow=vpr_blif
arch_variable_file=${PATH:TASK_DIR}/design_variables.yml
power_tech_file=<path_to_tech_XML_file>
用来指定进行功耗分析时所使用的工艺文件(XML)所在路径power_analysis=<true|false>
指定是否进行功耗分析spice_output=<true|false>
设置为 true 时将在流程的最后生成 Spice 网表verilog_output=<true|false>
设置为 true 时将在流程的最后生成 Verilog 网表timeout_each_job=<true|false>
设置每个OpenFPGA Flow执行的等待时间,单位为s,默认是20分钟。fpga_flow=<yosys_vpr|vpr_blif>
指定执行哪个OpenFPGA Flow,默认是yosys_vpr
arch_variable_file
用来指定架构变量文件(YML)所在路径
2.2 OpenFPGA_SHELL节
[OpenFPGA_SHELL]
openfpga_shell_template=${PATH:OPENFPGA_PATH}/openfpga_flow/openfpga_shell_scripts/generate_fabric_example_script.openfpga
openfpga_arch_file=${PATH:OPENFPGA_PATH}/openfpga_flow/openfpga_arch/k6_frac_N10_40nm_openfpga.xml
openfpga_sim_setting_file=${PATH:OPENFPGA_PATH}/openfpga_flow/openfpga_simulation_settings/auto_sim_openfpga.xml
# Use a absolute path for the Verilog netlists to be generated
# This is designed to allow the test case 'basic_tests/generate_testbench'
# to use the Verilog netlists along with testbenches in HDL simulation
openfpga_verilog_output_dir=${PATH:OPENFPGA_PATH}/openfpga_flow/tasks/basic_tests/generate_fabric/latest/k6_frac_N10_tileable_40nm/and2/MIN_ROUTE_CHAN_WIDTH
openfpga_shell_template
用来指定openfpga_shell 脚本所在路径openfpga_arch_file
用来指定openfpga 所支持的FPGA架构描述文件(XML)所在路径openfpga_sim_setting_file
用来指定仿真设置文件(XML)所在路径openfpga_verilog_output_dir
用来指定生成的verilog网表的存放路径
2.3 ARCHITECTURES节 和 BENCHMARKS节
[ARCHITECTURES]
arch0=${PATH:OPENFPGA_PATH}/openfpga_flow/vpr_arch/k6_frac_N10_tileable_40nm.xml
[BENCHMARKS]
bench0=${PATH:OPENFPGA_PATH}/openfpga_flow/benchmarks/micro_benchmark/and2/and2.blif
arch<arch_label>=<xml_architecture_file_path>
用来指定用于VPR输入的FPGA架构描述文件(XML)所在路径bench<bench_label>=<list_of_files_in_benchmark>
用来指定用于VPR输入的基准电路文件(blif ) 所在路径
2.4 SYNTHESIS_PARAM
为 BENCHMARKS节 中的基准电路设置额外的参数。
[SYNTHESIS_PARAM]
bench0_top = and2
bench0_act = ${PATH:OPENFPGA_PATH}/openfpga_flow/benchmarks/micro_benchmark/and2/and2.act
bench0_verilog = ${PATH:OPENFPGA_PATH}/openfpga_flow/benchmarks/micro_benchmark/and2/and2.v
bench<bench_label>_top=<Top_Module_Name>
设置顶层模块bench<bench_label>_act=<activity_file_path>
设置要测试的电路功能bench<bench_label>_verilog=<source_verilog_file_path>
设置基准电路源文件的路径,用作testbench期望信号的生成,以便与实际布局布线后网表所生成的信号进行对比。
三、总结
以 generate_fabric
task 为例,所需要的文件有:
- 用于功耗分析的工艺文件(XML)
- 架构变量文件(YML)
openfpga_shell: - openfpga_shell 命令脚本
- 适用于openfpga的架构描述文件(XML)
- openfpga的仿真设置文件(XML)
VPR: - 用于VPR输入的FPGA架构描述文件(XML)
- 用于VPR输入的基准电路文件(blif )
bilf(testbench): - 基准电路的Verilog代码文件(.V)
- 行为功能测试文件 (.act)