tag 标签: Xilinx

相关帖子
相关博文
  • 热度 5
    2022-1-12 11:15
    2782 次阅读|
    0 个评论
    基于vcs+uvm+xilinx ip的仿真平台的半自动化搭建
    1. 总体概述 1.1 软件环境 系 统: ubuntu 18.04 仿真平台: vcs_2018.09-SP2 开发平台: vivado 2019.2 本文的主要目的是自动化搭建基于 vcs+uvm+xilinx ip 的仿真平台,节省平台搭建的时间与精力。 1.2 概述 拿到一个项目,一般的平台搭建的步骤:去网上找一个 makefile 脚本(或者使用原项目脚本),修改相应的软件路径,添加 rtl 与 tb 顶层,如果工程中包含 xilinx ip 核就比较麻烦,需要添加相应的库文件,这里面最麻烦的就是对 xilinx ip 核的独立编译。有经验的工程师很快可以搞定,对于小白来说就要花一些时间。 vivado 关联 vcs 仿真可以导出 shell 脚本,天然支持 xilinx ip 核,解决了上述的麻烦。将生成的脚本转换成 makefile 脚本,添加 uvm 编译仿真配置以及 uvm 开发代码,支持 vcs+uvm+xilinx ip 核的平台就搭建好了。 除了自动化的部分以外,我们需要准备的东西包括 1. xilinx 的工程(项目工程) 2. makefile 脚本(后面会给出模板,替换相应的位置即可) 3. uvm 代码(如果不需要 uvm ,用 sv 即可) 2. vivado 关联 vcs 仿真 这一步骤需要安装好 vcs ,能够正常启动,然后在 vivado 2019.2 中做如下配置: 2.1 编译仿真库 点击 Compile Simulation Libraries Compiled library location会默认选择 *.cache下 在 Simulator executable path中添加vcs 仿真器可执行文件的位置 ,点击 compile等待仿真库编译完成。 编译完仿真库,打开仿真库所在文件夹,找到 synopsys_sim.setup,先记住它,后面会用到。 2.2 修改仿真配置 点击打开 1. 修改 Target simulator为Veriolog Compiler Simulator(VCS) 2. 在以下位置 添加 配置 vcs.elaborate.vcs.more_options中添加以下配置 -cpp g++-4.8 -cc gcc-4.8 -LDFLAGS -Wl,--no-as-needed 保证系统当前使用的 gcc g++版本是4.8 2.3 启动仿真 3. 导出仿真脚本 3.1 导出仿真脚本 打开 Export Simulation ,如下图 Exoprt directoty 路径 选择好以后,点击 OK 会生成相应的仿真脚本 3.2 将 shell 改写为 makefile 在导出路径下面会生成一个顶层命名的 shell ,将其改写成 Makefile ,这里已经将 Makefile 准备好模板,完成 “ 填空 ” 后直接添加即可。如下图,修改以下 ”##” 标示的 4 处即可。 3.3 关联 xilinx ip 库 创建 synopsys_sim.setup 文件,将路径指向 2.1 小节中的 synopsys_sim.setup 位置,内容如下: 4. 添加 UVM 添加文件夹uvm与uvm-1.2,其中uvm文件夹内是uvm开发代码,uvm-1.2是 uvm库文件,将目录放到与vcs(导出仿真脚本路径)同级路径下,这样修改工程后再次导出的时候文件夹就不会被覆盖。uvm相关的配置已添加在Makefile脚本中,不需要再添加。 5. 启动仿真 打开终端,输入 make ,启动仿真。
  • 热度 3
    2021-6-10 14:45
    2170 次阅读|
    0 个评论
    疫情爆发,“缺芯潮”来袭,ZYNQ系列出货量剧增如何满足供求,看这里!
    1、疫情爆发,加剧“缺芯潮”! 据中国台湾《经济日报》6月5日消息,中国台湾半导体封测大厂京元电子(King Yuan Electronics)竹南厂发生聚集性感染事件,6月3日,京元电子就有45人确诊,4日又新增32例,5日又增加54人,截至目前,京元电子厂共有210人确诊。 同样作为全球芯片封测中心,占据了13%的封测市场份额的马来西亚,于6月1日开始进入第二次全国性“全面”封锁,封锁将持续到14日。 疫情的爆发,必然会导致众多半导体工厂产线运作能力下降,甚至是停工停产,从而造成处理器的产能下降,进一步加剧“缺芯潮”。 图 1 芯片封测 2、异构多核成为主流,ZYNQ系列出货量剧增! 伴随着产品性能的提升,对处理器的性能要求也越来越高,单一核心处理器已无法满足,异构多核处理器逐渐成为工业市场新宠。随着异构多核逐步成为行业主流架构,Xilinx ZYNQ系列处理器出货量剧增。以Zynq-7010/7020核心板为例,创龙科技2021年上半年的出货量,已超过2020全年出货量的200%! SOM-TLZ7x核心板(Xilinx Zynq-7010/7020) 创龙科技SOM-TLZ7x是一款基于Xilinx Zynq-7000系列XC7Z010/XC7Z020高性能低功耗处理器设计的异构多核SoC工业级核心板,处理器集成PS端双核ARM Cortex-A9 + PL端Artix-7架构28nm可编程逻辑资源,通过工业级B2B连接器引出千兆网口、USB、CAN、UART等通信接口,可通过PS端加载PL端程序,且PS端和PL端可独立开发。核心板经过专业的PCB Layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。 图 2 核心板正面图 图 3 核心板背面图 面对日益剧增的缺芯潮,创龙科技作为Xilinx官方合作伙伴,将持续与Xilinx保持紧密沟通,以保证我司Zynq-7010/7020系列产品的正常供应。经与我司供应链进行了解,7月、9月、11月均有芯片不断到货,欢迎大家选用创龙科技Zynq-7010/7020工业核心板。 同时,为进一步满足部分客户降成本需求,我司已推出邮票孔版本的Zynq-7010/7020核心板,欢迎咨询! 图 4 核心板正面图(邮票孔) 图 5 核心板背面图 3、低成本ARM+FPGA方案推荐,现货,现货! 创龙科技专注于DSP、ARM、FPGA多核异构技术开发,下面为您推荐两款低成本的ARM+FPGA核心板,助您项目快速选型。同时,在缺芯潮下,此两款工业核心板相关芯片有大量库存,核心板库存充足,可确保您的项目顺利量产以及大批量供应。 SOM-TL437xF核心板(TI AM437x + Xilinx Spartan-6) 创龙科技SOM-TL437xF是一款基于TI Sitara系列AM4376/AM4379 ARM Cortex-A9 + Xilinx Spartan-6 FPGA处理器设计的异构多核工业级核心板。核心板内部AM437x与Spartan-6通过GPMC、I2C通信总线连接。通过工业级B2B连接器引出LCD、CAMERA、GPMC、CAN等接口。核心板经过专业的PCB Layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。 图 6 核心板正面图 ​SOM-TL138F核心板(TI OMAP-L138 + Xilinx Spartan-6) 创龙科技SOM-TL138F是一款基于TI OMAP-L138(定点/浮点DSP C674x + ARM9) + Xilinx Spartan-6 FPGA处理器设计的工业级核心板。核心板内部OMAP-L138与Spartan-6通过uPP、EMIFA、I2C通信总线连接,并通过工业级B2B连接器引出网口、EMIFA、SATA、USB、LCD等接口。核心板经过专业的PCB Layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。 图 7 核心板正面图 图 8 核心板背面图 划重点!以上产品供货稳定,芯片库存充足,欢迎留言。 ​
  • 热度 2
    2019-8-26 17:48
    3133 次阅读|
    0 个评论
    问题描述:EP端发起了DMA写,但是RP侧并未收到DMA写的TLP,但是收到了写完成的中断TLP。 参考了Xilinx官网论坛这个帖子,解决了这个问题: https://forums.xilinx.com/t5/PCI-Express/Problems-of-PCIE-DMA-simulation/m-p/329263 xapp1052只是说要设置Bus Master Enable,实际在仿真(或者实际设计)的时候RP和EP侧都行将该bit置位。
  • 热度 5
    2019-8-15 11:16
    2717 次阅读|
    0 个评论
    32位存储器写任务
    完成剩下的DS端口模型任务函数学习,本文来看看存储32bit写,首先复习下32-bit地址存储器写TLP的头部格式,如下图所示: 图1:32位地址存储器写TLP头部格式 接下来我们来看DS端口模型里是如何使用这个函数的,在启动DMA操作之前都需要对DMA进行复位,这时候需要Host使用存储写操作往设备控制状态寄存器使能复位,具体实现代码如下(下述代码先写1启动复位,再写0,释放复位): DATA_STORE = 8'h01; //reset DATA_STORE = 8'h00; DATA_STORE = 8'h08; //data width path DATA_STORE = 8'h14; //fpga family TSK_TX_MEMORY_WRITE_32(DEFAULT_TAG,DEFAULT_TC, 10'd1,BAR_INIT_P_BAR +8'h00, 4'h0, 4'hF, 1'b0); TSK_TX_CLK_EAT(10); DEFAULT_TAG = DEFAULT_TAG + 1; DATA_STORE = 8'h00; //reset TSK_TX_MEMORY_WRITE_32(DEFAULT_TAG,DEFAULT_TC, 10'd1,BAR_INIT_P_BAR +8'h00, 4'h0, 4'hF, 1'b0); TSK_TX_CLK_EAT(10); DEFAULT_TAG = DEFAULT_TAG + 1; 至于BMD各个设计描述寄存器请查阅xapp1052文档,这里给出各个寄存器地址的截图: 图2:BMD设计描述寄存器地址 ( 注 :很重要,对于初学者来说,理解PCIe应用里各种地址有点困难。图2中寄存器地址是FPGA逻辑为DMA操作定义的寄存器,DMA引擎依据这些寄存器来采取对应的操作,这些寄存器可以通过存储器读写来进行访问。而配置寄存器则是与PCIe核相关,这些寄存器的相对地址和这里的寄存器地址甚至名称都可能一样,但是完全不是一个概念,配置寄存器只能通过Type0/1配置寄存器读写程序访问,且一般是驱动程序发起,电脑上电时BIOS也会发起。) 个人理解,上述寄存器用户可以随意定义,前提是要知会驱动程序以及软件设计人员,上中下层级协调一致即可。当然,对应FPGA设计者来说如果是基于BMD的设计,没有必要从头再来另搞一套,除非用户自己设计自己的DMA控制器。 下面来分析TSK_TX_MEMORY_WRITE_32这个函数,下图对函数输入参数进行了简单说明 对应前面调用该函数时,可以看到,写数据长度是1,即一个DW数据。 LastDW BE和First DW BE这两个字段的使用规则如下。 如果传送的数据长度在一个对界的双字(DW)之内,则Last DW BE字段为0b0000,而First DW BE的对应位置1;如果数据长度超过1DW,Last DW BE字段一定不能为0b0000。PCIe总线使用LastDW BE字段为0b0000表示所传送的数据在一个对界的DW之内。 如果传送的数据长度超过1DW,则First DW BE字段至少有一个位使能。不能出现First DW BE为0b0000的情况。 如果传送的数据长度大于等于3DW,则在First DW BE和Last DW BE字段中不能出现不连续的置1位。 如果传送的数据长度在1DW之内时,在First DW BE字段中允许有不连续的置1位。此时PCIe总线允许在TLP中传送1个DW的第1,3字节或者第0,2字节。 如果传送的数据长度为2DW之内时,则First DW BE字段和Last DW BE字段允许有不连续的置1位 根据以上规则,在发起BDM的DMA操作的时候,多次用该函数,而每次仅对一个寄存器进行写,故只有1个DW数据,所以 Last DW BE字段为0b0000,而First DW BE的对应位置1。此外,函数的地址参数是BAR的基地址+对应寄存器地址(即偏移地址,图2中各个寄存器地址)。
  • 热度 23
    2019-8-14 16:05
    3260 次阅读|
    0 个评论
    在ModelSim里添加带路径的文件
    最近在仿真Xilinx的PCIe,用的是其xapp1052下的参考工程,这个工程基于vivado,默认使用vivado自带的仿真器,如果转换成ModelSim的话,vivado会后台自动生成一系列脚本文件,仿真的时候直接运行批处理文件,该批处理文件会自动调用脚本启动ModelSim进行仿真。 下图是编译源文件的时候vlog使用的语法 由于xapp1052这个设计并不完备,我需要对其进行修改,但是为了让自己能够回到初始状态,又不希望在这个项目上直接修改,所以想到将其pcie_7x_0_example.srcs目录下所有文件拷贝到其它地方再进行修改并仿真。问题是改动位置后上述vlog语法找寻文件的路径就变了,需要做如下更正: 学过dos系统都知道,“..”表示上一级目录,“.”表示本级目录,如果源文件都在脚本目录下,就不需要指定路径。其实还有一个最笨的办法,就是给每个文件提供完整的绝对路径。
相关资源