OpenFPGA系列(三) 运行设计流程demo

开发环境搭建好了和快捷命令都知道,那接下来就要掌握OpenFPGA的设计流程,这里从官方提供的Demo入手,学习如何使用OpenFPGA。

一、生成 Fabric 网表

目的:根据 FPGA 架构描述文件和基准电路生成 对应 Fabric 的 Verilog 网表。

1.1 准备 Task 配置文件

OpenFPGA 通过task进行设计流程运行,而每个task都通过 task.conf 配置文件进行配置,现在打算运行的Demo 是 generate_fabric,所在目录为 OpenFPGA/openfpga_flow/tasks/basic_tests/generate_fabric
在这里插入图片描述
在config目录下有该 task 的配置文件,

  • 第20行指定所要执行的openfpga shell 脚本
  • 第21行指定 Fabric 的架构描述文件
    这里都已经指定好,不用修改,直接用就行。

1.2 运行 Task

在完成配置文件的编辑后,在OpenFPGA根目录下调用 python 脚本来运行任务,输入参数是 task 所在路径(相对路径,相对于 TASK_DIRECTORY):

python3 openfpga_flow/scripts/run_fpga_task.py basic_tests/generate_fabric

在 task 所在路径下会生成两个文件夹,latest是链接符号,链接到最后一次运行所生成的输出文件夹,此次运行结果保存在 run001。
在这里插入图片描述
Verilog网表保存在下述路径中:

${OPENFPGA_PATH}/openfpga_flow/tasks/basic_tests/generate_fabric/latest/k6_frac_N10_tileable_40nm/and2/MIN_ROUTE_CHAN_WIDTH/SRC

在这里插入图片描述
此Veirlog 网表可以作为其他工具的输入,如布局工具。

1.3 运行 icarus iVerilog 编译

进行对应的目录:

cd ${OPENFPGA_PATH}/openfpga_flow/tasks/basic_tests/generate_fabric/latest/k6_frac_N10_tileable_40nm/and2/MIN_ROUTE_CHAN_WIDTH

使用iVerilog 命令编译:

iverilog SRC/fabric_netlists.v

生成 a.out 文件(暂时还不知道有什么用,之后知道了进行更新)

二、从Verilog到 验证(Verification)

目的:

  1. 先根据输入的FPGA架构文件和基准电路,生成对应的 Fabric Verilog 网表文件
  2. 再生成对应的 Verilog testbench 进行行为仿真,验证所实现的 Fabric 的正确性

2.1 自动编译仿真

这里测试的demo,FPGA架构是基于LUT-4的,然后基准电路为 2输入与门。

python3 openfpga_flow/scripts/run_fpga_task.py basic_tests/full_testbench/configuration_chain

输出的 Verilog 网表文件和 Testbench 都在下述路径中:

${OPENFPGA_PATH}/openfpga_flow/tasks/basic_tests/full_testbench/configuration_chain/latest/k4_N4_tileable_40nm/and2/MIN_ROUTE_CHAN_WIDTH/SRC/

然后进行 icarus iVerilog 仿真
刚刚所运行的 task 实际上已经完成了iVerilog 仿真,仿真结果放在:

${OPENFPGA_PATH}/openfpga_flow/tasks/basic_tests/full_testbench/configuration_chain/latest/k4_N4_tileable_40nm/and2/MIN_ROUTE_CHAN_WIDTH/vvp_sim_output.txt

在这里插入图片描述
出现 Simulation Succeed 就表示验证通过。
所有的波形都保存在 and2_formal.vcd 文件中。可以通过 GTKWave 查看波形。
GTKWave 安装:

sudo apt-get install GTKWave

然后输入:

gtkwave ${OPENFPGA_PATH}/openfpga_flow/tasks/basic_tests/full_testbench/configuration_chain/latest/k4_N4_tileable_40nm/and2/MIN_ROUTE_CHAN_WIDTH/and2_formal.vcd &

在这里插入图片描述

2.2 手动仿真

手动进行仿真步骤如下:

cd ${OPENFPGA_PATH}/openfpga_flow/tasks/basic_tests/full_testbench/configuration_chain/latest/k4_N4_tileable_40nm/and2/MIN_ROUTE_CHAN_WIDTH

source iverilog_output.txt

vvp compiled_and2

三、从 Verilog 到 GDSII

生成的Verilog 网表可以通过半定制流程生成 GDSII,在这里由于使用的半定制工具是商业工具,所以脚本没有开源出来。但开发流程还是一致的:
半定制流程
输入Verilog 网表,即.v文件,进行布局,然后进行时钟树综合,再布线,最后进行Signoff。
开发者 Dr.Xifan Tang 在文档给了使用 Cadence Innovus工具所生成的最后版图图片:
在这里插入图片描述

四、总结

通过运行 task demo,发现可以通过编写脚本,实现输入FPGA架构描述文件,基准电路等配置参数,很快的生成对应的 Fabric Verilog网表和Testbench,并进行自动仿真验证。生成的Verilog网表也可以作为半定制流程工具的输入,最终得到signoff的版图。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Activiti是一个基于Java的开源工作流引擎,可以通过它来实现各种复杂的业务流程。 Activiti的全流程demo通常包含以下几个关键步骤: 1. 流程定义:首先需要定义工作流程的各个节点和步骤。可以使用Activiti的图形化建模工具,也可以通过编写BPMN(Business Process Model and Notation,业务流程建模与标注)文件进行定义。建模工具可以帮助用户创建流程的各个活动、节点、网关以及连接它们的顺序和条件。 2. 流程部署:定义好工作流程后,需要将其部署到Activiti引擎中。部署可以在应用程序启动时自动完成,也可以通过Activiti提供的API手动部署。部署完成后,工作流程就可以开始执行了。 3. 流程实例启动:启动工作流程的实例,可以通过调用Activiti的API来完成,也可以通过Activiti提供的用户界面来完成。启动一个实例就相当于把定义好的工作流程拷贝一份,并将其设置为活动的状态,可以进行后续的操作。 4. 任务分配与处理:在工作流程中,不同的节点会有不同的任务需要处理。当某个任务需要分配给某个用户或组时,Activiti可以根据事先定义的规则,自动将任务分配给合适的人员。被分配的人员可以通过Activiti提供的任务列表,查询自己待办的任务,并进行处理。 5. 任务处理:被分配任务的人员可以根据自己的权限和职责,对任务进行处理,可以是完成、驳回、转办等操作。处理完成后,任务会自动流转到下一个节点,待下一个人员处理。 6. 流程结束:当工作流程中的所有任务都被处理完成时,工作流程就会结束。可以在流程结束后进行相关的收尾工作,如数据归档、统计等。 综上所述,activiti全流程demo包含流程定义、流程部署、流程实例启动、任务分配与处理以及流程结束等关键步骤。通过这些步骤,可以实现一个完整的工作流程,提高工作效率和流程管理的可控性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雪天鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值