# 插件启动

该插件是针对工程文件夹的,因此在单独打开一个HDL文件的时候是不会启动插件的,此时使用插件功能会有“无法找到命令”的报错。因此您需要以文件夹为单位来打开。

打开文件夹之后插件会到.vscode文件夹下寻找配置文件,如果找不到会建议你配置property.json,同时会检索当前文件夹下所有的HDL文件,并进行分析。

注:在分析阶段也是使用不了插件功能的,此时使用插件功能依旧会有“无法找到命令”的报错,目前并未做分离。

在插件完成分析之后即可使用插件了。

# 工程配置文件

本插件定义工程配置文件为property.json,只放置于.vscode文件夹下。生成配置文件的方式如下:

使用快捷键F1呼出控制命令框,输入 Digital-IDE:Generate property.json 即可生成初始的 property.json 模板文件。生成的配置文件会直接放置于.vscode的文件夹下

如果你有属于自己的模板可以使用Digital-IDE:Overwrite property.json template 来自定义模板文件。

如果你是0.3.0之前的工程配置文件的话,可以输入Digital-IDE: Transform configure file from previous version to new version来进行配置文件的更新。

0.3.0版本后,插件每次启动都会自动询问用户是否要创建property.json

# 工程配置文件的说明

注:在0.3.0版本之后将使用全新的配置属性

// porperty.json 所有属性解说
{
    // 当前使用的第三方工具链
    "toolChain": "xilinx", 

    // 工程命名 
    // PL : 编程逻辑设计部分即之前的FPGA
    // PL : 处理系统设计部分即之前的SOC
    "prjName": {
        "PL": "template",
        "PS": "template"
    },

    // 自定义工程结构,若无该属性则认为是标准文件结构(详见下文说明)
    // 工程路径,软硬件设计路径
    // 所有属性均支持${workspace}、${plname}、${psname}、相对路径的写法
    // ${workspace} : 当前工作区的路径
    // ${plname}、${psname} :PL或PS的工程的名字
    "arch" : {
        "prjPath": "",
        "hardware" : {
            "src"  : "",  // 放置设计源文件,注: src上一级为IP&bd
            "sim"  : "",  // 放置仿真文件,会直接反应在树状结构上
            "data" : ""   // 放置约束、数据文件,约束会自动添加进vivado工程
        },
        "software" : {
            "src"  : "",
            "data" : ""
        }
    },

    // 代码库管理,支持远程和本地两种调用方式(详见下文库管理)
    // 使用UI来进行配置,不建议用户直接更改
    "library" : {
        "state": "", // local | remote
        "hardware" : {
            "common": [], // 插件提供的常见库
            "custom": []  // 用户自己的设计库
        }
    },

    // xilinx的IP仓库,直接添加到vivado的IP repo中
    // 目前支持ADI和ARM提供的IP repo (adi | arm)
    "IP_REPO" : [],

    // 当设计时用到PL+PS即为SOC开发
    // 当其中core不为none的时候即为混合开发
    "soc": {
        "core": "none",
        "bd": "",
        "os": "",
        "app": ""
    },

    // 工程综合实现时,是否在终端输出信息
    "enableShowLog": false,

    // 设备类型 可以是如下几种:
    // "none",
    // "xc7z020clg400-2",
    // "xc7a35tftg256-1",
    // "xc7a35tcsg324-1",
    // "xc7z035ffg676-2",
    // "xc7z020clg484-1"
    "device": "none"
}

其中最重要的属性是arch属性,配置了arch属性则认为是用户自定义工程结构。对于用户自定义结构,一切文件变动均由用户自行管理。当不进行arch属性配置的时候则认为使用本插件推荐的标准文件结构。对于标准文件结构的说明如下:

.vscode
  └── property.json   -- 工程配置文件 用户自定义 (或者存放于工作区的根目录也可)
prj                   -- 用于存放工程文件
  ├── simulation      -- 用于存放第三方仿真工具运行时的中间文件
  ├── intel           -- 用于存放Intel的工程文件
  └── xilinx          -- 用于存放xilinx的工程文件
user                  -- 用于存放用户设计的源文件 用户自定义
  ├── ip              -- 用于存放工程ip代码 (厂商工具管理,但由插件搬移至src同级目录)
  ├── bd              -- 用于存放工程block designer源码 (厂商工具管理,但由插件搬移至src同级目录)
  ├── data            -- 主要存放数据文件,以及约束文件
  ├── sim             -- 用于存放用户仿真代码
  └── src             -- 用于存放用户的设计源码   
       └─ lib         -- 用于存放用户的硬件库源码   

property.json 文件中 soc.core 设置不为 "none" 后保存配置文件时,文件结构会自动更改为PS+PL的混合设计结构。在该结构下user文件夹会发生改变,变为如下结构:

user               -- 用于存放用户设计的源文件 用户自定义
  Hardware         -- 主要存放硬件逻辑设计
     ├── ip        -- 用于存放工程ip代码 (厂商工具管理,但由插件搬移至src同级目录)
     ├── bd        -- 用于存放工程block designer源码 (厂商工具管理,但由插件搬移至src同级目录) 
     ├── data      -- 主要存放数据文件,以及约束文件
     ├── sim       -- 用于存放用户仿真代码
     └── src       -- 用于存放用户的设计源码  
          └─ lib   -- 用于存放用户的硬件库源码   
  Software         -- 主要存放软件驱动设计
     ├── data      -- 主要存放数据文件,以及约束文件
     └── src       -- 用于存放用户的工程源码   

注:在soc.core的值由非none变为none时,Software文件夹默认为不需要,会被删除(插件也会给出相应的提示),请做好备份。另外,IP和bd设计会被放置到src的上一级目录,因此src最好不要设置为工作区的根路径

此外,如果用户在ARCH下配置的路径错误或者无效,插件会直接改为标准下的结构路径。当用户不去配置property.json文件时,文件结构全部默认为工作区的路径,该行为可能会造成大量的性能消耗,请用户注意