本文描述基于f3实例的RTL(Register Transfer Level)开发流程。

前提条件

  • 已创建f3实例,并且实例能访问公网。具体操作,请参见创建f3实例
  • 已在f3实例所在安全组中添加规则放行SSH(22)端口。具体操作,请参见添加安全组规则
  • 登录ECS管理控制台,在f3实例的详情页上,获取实例ID。
  • 已在华东2创建一个OSS Bucket,专门用于FaaS服务。具体操作,请参见创建一个OSS Bucket
    说明 这个Bucket会对FaaS管理账号开通读写权限,因此不建议您存储与FaaS无关的内容。
  • 使用RAM用户操作FPGA,必须先完成以下操作:
    • 创建RAM用户并授权,详情请参见创建RAM用户为RAM用户授权

      您需要为RAM用户授予的权限为:AliyunECSReadOnlyAccess、AliyunOSSFullAccess和AliyunRAMFullAccess。

    • 授权FaaS服务角色,授权页面请参见授权FaaS服务角色
    • 获取AccessKey ID和AccessKey Secret。

背景信息

开始操作之前,您需要了解以下注意事项:
  • 本文所述所有操作必须由同一个账号在同一个地域执行。
  • 强烈建议您使用RAM用户操作FPGA实例。基于最小授权原则,建议您不要对RAM用户过度授权,而只授予RAM用户刚好满足其工作所需的权限,例如访问OSS bucket获取原始DCP/xclbin文件、上传Vivado编译log、操作指定的ECS实例等。您还需要指定RAM角色AliyunFAASDefaultRole,FaaS服务默认使用此角色来访问您在其他云产品中的资源,其权限策略AliyunFAASRolePolicy还包括KMS相关的权限,以便您使用KMS服务对IP进行加密。

操作步骤

  1. 远程连接Linux实例
    说明 编译工程时需要2~3小时。建议您使用nohup或者VNC连接实例,以免编译时意外退出。
  2. 下载并解压RTL参考设计
  3. 配置环境。
    • 如果驱动为xdma,需要运行以下命令来配置环境。
      source /root/xbinst_oem/F3_env_setup.sh xdma #每打开一个终端窗口就需要执行该命令一次  
    • 如果驱动为xocl,则需要运行以下命令来配置环境。
      source /root/xbinst_oem/F3_env_setup.sh xocl #每打开一个终端窗口就需要执行该命令一次
    说明 配置环境主要包括安装xdma驱动或xocl驱动,设置vivado环境变量,检查vivado license,检测aliyun-f3 sdaccel平台,2018.2 runtime配置和faascmd版本检测 。
  4. 指定OSS存储空间。
    faascmd config --id=<hereIsYourSecretId> --key=<hereIsYourSecretKey> #将<hereIsYourSecretId>和<hereIsYourSecretKey>替换为您的RAM用户AK信息
    faascmd auth --bucket=hereIsYourBucket # 将<hereIsYourBucket>替换为您创建的OSS Bucket名称                        
  5. 运行以下命令编译RTL工程。
    cd <您之前解压的路径>/hw/ # 进入解压后的hw路径
    sh compiling.sh               
    说明 编译工程需要2~3小时。
  6. 上传网表文件,并下载FPGA镜像。
    使用faascmd工具上传网表文件并下载FPGA镜像。关于faascmd命令的用法,请参见使用faascmd
    1. 依次运行以下命令,将压缩包上传到您个人的OSS Bucket,再将存放在您个人OSS Bucket中的gbs上传到FaaS管理单元的OSS Bucket中。
      faascmd upload_object --object=bit.tar.gz --file=bit.tar.gz
      faascmd create_image --object=bit.tar.gz --fpgatype=xilinx --name=<hereIsFPGAImageName> --tags=<hereIsFPGAImageTag> --encrypted=false --shell=<hereIsShellVersionOfFPGA>