1.【超实用】一分钟学会如何用最小存储空间保存Vivado工程!码安
2.安装工具使用要求
3.Visual Tcl简介
4.NS2NS2使用方法
5.Ubuntu16.04/18.04配置mumax3+oommf
6.Linuxä¸ç./configure
【超实用】一分钟学会如何用最小存储空间保存Vivado工程!码安
在FPGA调试过程中,码安大家常会发现Vivado工程体积庞大,码安动辄数百兆,码安甚至几个G,码安收费系统源码这无疑对存储空间提出了较高要求。码安本文提供了一种利用Vivado自带的码安tcl命令,将工程保存为.tcl脚本的码安方法,使得几百兆的码安工程体积缩减至几百K,极大节省了存储空间。码安
VIVADO工程目录中包含大量中间生成文件,码安导致工程大小通常在几百MB至GB之间,码安这对工程备份与使用Git等工具操作时显得颇为不便。码安不过,码安VIVADO提供了一系列脚本,仅需保留工程源码与一个脚本即可。需要时,通过tcl命令即可恢复VIVADO工程。
生成VIVADOtcl的途径有两种:
1、输入命令:在打开的vivado工程中,于tcl命令输入行输入如下命令 `write_project_tcl { ~/work/system.tcl}`,即可将工程保存为.tcl文件。这里的`~/work/`为文件保存路径,`system.tcl`为文件名,用户可根据实际需求调整。
2、使用GUI:在打开的vivado工程中,依次点击 `File` → `Write Project to Tcl`,进入`Write Project To Tcl`界面设置相关参数(主要为tcl文件保存路径和文件名),实现工程保存为.tcl文件。pf平台源码
恢复VIVADO工程时,操作如下:
1、获取tcl形式的VIVADO工程,此时工程内仅包含脚本与src文件夹,内含设计与仿真文件,文件体积仅几十个KB。
2、启动VIVADO,切换至tcl对应的目录。
输入命令,VIVADO将根据tcl指示恢复工程。
3、工程恢复成功。
生成Tcl工程操作如下:
1、在VIVADO.2中选择 `File` -> `Project` -> `Write TCL`。
2、配置tcl名称和路径。
3、移除不需要的文件(如SRC和tcl文件之外的文件),保存文件。
注意:
1、在Windows系统下跨盘符操作时需使用`(cd E:)`等命令。
2、确保使用与工程版本一致的VIVADO。
安装工具使用要求
安装工具使用要求(安装工具使用要求有哪些)前言
想和大家来聊聊性能测试,聊到了性能测试必须要说的是性能测试中的工具,在这些工具中我今天主要给大家介绍wrk。
电脑介绍wrk是一款开源的性能测试工具 ,简单易用,没有Load Runner那么复杂,战舰巅峰源码他和 apache benchmark(ab)同属于性能测试工具,但是比 ab 功能更加强大,并且可以支持lua脚本来创建复杂的测试场景。
wrk 的一个很好的特性就是能用很少的线程压出很大的并发量, 原因是它使用了一些操作系统特定的高性能 I/O 机制, 比如 select, epoll, kqueue 等。 其实它是复用了 redis 的 ae 异步事件驱动框架. 确切的说 ae 事件驱动框架并不是 电脑 redis 发明的, 它来自于 Tcl的解释器 jim, 这个小巧高效的框架, 因为被 redis 采用,而更多的被大家所熟知。
安装wrk只能运行于 Unix 类的系统上,也只能在这些系统上便宜,所以我们需要一个Linux或者macOs。
不得不说,使用了 Win之后方便很多。
必备条件:
Win RS及以上版本启用Ubuntu子系统1、Win 系统通过bash命令,切换到Ubuntu子系统。
然后需要安装一下编译工具,通过运行下面命令来安装工具:
# 安装 make 工具sudo apt-get install make# 安装 gcc编译环境sudo apt-get install build-essential
安装 gcc 编译环境的时候最好挂一下***,速度会快些。
2、安装完成之后使用 git 下载 wrk 的源码到本地。
3、切换到git的wrk目录,然后使用make命令:
cd /mnt/盘符/wrk目录make
编译完成之后,目录下面会多一个 wrk 的文件。
测试使用以下命令来测试一下:
./wrk -c 1 -t 1 -d 1
简单说一下wrk里面各个参数什么意思?
-t 需要模拟的线程数-c 需要模拟的连接数--timeout 超时的时间-d 测试的持续时间结果:
Latency:响应时间Req/Sec:每个线程每秒钟的完成的请求数Avg:平均Max:最大Stdev:标准差+/- Stdev: 正负一个标准差占比标准差如果太大说明样本本身离散程度比较高. 有可能系统性能波动很大.
如果想看响应时间的分布情况可以加上--latency参数
我们的模拟测试的时候需要注意,一般线程数不宜过多,核数的2到4倍足够了。 多了反而会因为线程切换过多造成效率降低, 因为 wrk 不是使用每个连接一个线程的模型, 而是管理兼职源码通过异步网络 I/O 提升并发量。 所以网络通信不会阻塞线程执行,这也是 wrk 可以用很少的线程模拟大量网路连接的原因。
在 wrk 的测试结果中,有一项为Requests/sec,我们一般称之为QPS(每秒请求数),这是一项压力测试的性能指标,通过这个参数我们可以看出应用程序的吞吐量。
总结今天的分享就到这里了,喜欢的可以点赞评论收藏加关注哟,文中的源码有需要的可以私信我“资料”获取哟。
Visual Tcl简介
Visual Tcl 是一款卓越的、无需付费的TCL语言开发工具,专为各类主要的操作系统设计。它支持广泛的平台,包括UNIX、Windows、Macintosh和AS,旨在为用户提供一个自由且性能卓越的软件开发环境。这款工具旨在优化开发者的工作流程,无论你是在哪种平台上进行应用程序的构建和调试,都能得到高效和稳定的支持。它凭借其丰富的特性,如集成的代码编辑器、调试器和强大的社区支持,使得TCL语言的开发过程变得更加直观和便捷。Visual Tcl的开放源代码特性,确保了其持续的改进和适应性,使得开发者能充分利用TCL的强大功能,创造出令人满意的高质量软件作品。
NS2NS2使用方法
NS2网络仿真的疫情实时源码使用方法主要包括两个层次的编程:基于OTcl和C++的编程。首先,你需要明确仿真的需求层次,如果是利用已有的NS网络元素,可以通过编写OTcl脚本来实现,无需改动NS源代码。OTcl脚本主要用于配置网络拓扑,如设定链路的延迟、带宽和丢包策略,以及建立协议代理和业务量模型。 具体步骤如下:首先,编写OTcl脚本,设定网络的结构参数。然后,设置协议代理,绑定端设备的协议并构建通信业务模型。接着,配置业务量模型参数,定义网络流量分布。创建Trace对象,NS2通过这个工具记录模拟过程,便于后续分析。编写辅助过程,包括设定模拟的结束时间,完成脚本编写。 执行仿真时,使用NS解释器执行OTcl脚本。完成仿真后,对Trace文件进行分析,提取有价值的数据。如果需要,可以调整拓扑结构和业务模型,然后重复上述步骤。NS2采用两级架构,C++编译层负责数据处理,OTcl解释层则负责环境配置和模拟控制。这种设计使得NS2既具有事件驱动的灵活性,又保证了代码执行效率,用户可以通过OTcl轻松配置和修改C++对象,体现了NS2的高度一致性与灵活性。扩展资料
NS2是指 Network Simulator version 2,NS(Network Simulator) 是一种针对网络技术的源代码公开的、免费的软件模拟平台,研究人员使用它可以很容易的进行网络技术的开发,而且发展到今天,它所包含的模块几乎涉及到了网络技术的所有方面。所以,NS成了目前学术界广泛使用的一种网络模拟软件。此外,NS也可作为一种辅助教学的工具,已被广泛应用在了网络技术的教学方面。因此,目前在学术界和教育界,有大量的人正在使用或试图使用NS。Ubuntu./.配置mumax3+oommf
配置Ubuntu./.环境以运行mumax3和oommf的步骤如下:
首先,更新系统和安装必要的软件。对于Ubuntu.,推荐使用apt安装nvidia显卡驱动,而不是通过cuda安装。安装cuda-9.0,确保驱动版本不低于.。在Ubuntu.上,虽然官方文档可能不直接支持cuda-9.0,但实际操作中可以成功安装。注意安装前关闭桌面并杀死所有vnc桌面,使用命令行界面进行操作。
安装mumax3,从github下载3.9.3版本的源代码。先安装golang-go并添加环境变量,创建一个名为3的目录用于存放mumax3代码。将源代码解压到指定目录,并在编译前修改相关文件以适应cuda-9.0环境。添加环境变量以确保mumax3命令可用。
接下来,配置和安装oommf。安装ActiveTcl-8.6.8,并将其环境变量添加到bash配置文件中。确保g++编译器已安装,这是在Linux系统中配置tcl/tk环境时所需。下载并解压oommfb2压缩包,运行相关命令进行安装和升级。如果遇到x安装不完整的问题,执行特定命令以解决。最后,使用vnc打开桌面并创建启动器,使得oommf可以轻松启动。
完成这些步骤后,你将拥有配置良好的环境来运行mumax3和oommf。请注意,这里所涉及的文件和软件可以通过百度网盘、官网或参考链接获得。在操作过程中,确保遵循官方文档和社区指导以避免问题。
Linuxä¸ç./configure
Linuxç¯å¢ä¸ç软件å®è£ ï¼å¹¶ä¸æ¯ä¸ä»¶å®¹æçäºæ ï¼å¦æéè¿æºä»£ç ç¼è¯åå¨å®è£ ï¼å½ç¶äºæ å°±æ´ä¸ºå¤æä¸äºï¼ç°å¨å®è£ åç§è½¯ä»¶çæç¨é½é常æ®éï¼ä½ä¸åä¸ç¦»å ¶ä¸ï¼å¯¹åºç¡ç¥è¯çæå®ææ¡ï¼å®è£ åç§è½¯ä»¶çé®é¢å°±è¿åè解äºãConfigureèæ¬é ç½®å·¥å ·å°±æ¯åºç¡ä¹ä¸ï¼å®æ¯autoconfçå·¥å ·çåºæ¬åºç¨ã
ä¸ä¸äºæå·§ç¸æ¯ï¼Configureæ¾å¾åºç¡ä¸äºï¼å½ç¶ä½¿ç¨åå¦ä¹ èµ·æ¥å°±æ¾å¾æ¯ç¥ä¹å³ä¸äºï¼å½ç¶è¦æ为é«æï¼å¯¹åºç¡ççæä¸è½è¶ è¶å¦ã
为æ¤æ转载äºä¸ç¯å ³äºConfigureé项é ç½®ç详ç»ä»ç»ãä¾å¤§å®¶åè
'configure'èæ¬æ大éçå½ä»¤è¡é项ã对ä¸åç软件å æ¥è¯´ï¼è¿äºé项å¯è½ä¼æååï¼ä½æ¯è®¸å¤åºæ¬çé项æ¯ä¸ä¼æ¹åçã带ä¸'--help'é项æ§è¡'configure'èæ¬å¯ä»¥çå°å¯ç¨çææé项ã尽管许å¤é项æ¯å¾å°ç¨å°çï¼ä½æ¯å½ä½ 为äºç¹æ®çéæ±èconfigureä¸ä¸ªå æ¶ï¼ç¥éä»ä»¬çåå¨æ¯å¾æçå¤çãä¸é¢å¯¹æ¯ä¸ä¸ªé项è¿è¡ç®ç¥çä»ç»ï¼
--cache-file=FILE
'configure'ä¼å¨ä½ çç³»ç»ä¸æµè¯åå¨çç¹æ§(æè bug!)ã为äºå ééåè¿è¡çé ç½®ï¼æµè¯çç»æä¼åå¨å¨ä¸ä¸ªcache fileéãå½configureä¸ä¸ªæ¯ä¸ªåæ éé½æ'configure'èæ¬çå¤æçæºç æ æ¶ï¼ä¸ä¸ªå¾å¥½çcache fileçåå¨ä¼æå¾å¤§å¸®å©ã
--help
è¾åºå¸®å©ä¿¡æ¯ãå³ä½¿æ¯æç»éªçç¨æ·ä¹å¶å°éè¦ä½¿ç¨ä½¿ç¨'--help'é项ï¼å 为ä¸ä¸ªå¤æç项ç®ä¼å å«éå çé项ãä¾å¦ï¼GCCå éç'configure'èæ¬å°±å å«äºå è®¸ä½ æ§å¶æ¯å¦çæåå¨GCCä¸ä½¿ç¨GNUæ±ç¼å¨çé项ã
--no-create
'configure'ä¸çä¸ä¸ªä¸»è¦å½æ°ä¼å¶ä½è¾åºæ件ãæ¤é项é»æ¢'configure'çæè¿ä¸ªæ件ãä½ å¯ä»¥è®¤ä¸ºè¿æ¯ä¸ç§æ¼ä¹ (dry run)ï¼å°½ç®¡ç¼å(cache)ä»ç¶è¢«æ¹åäºã
--quiet
--silent
å½'configure'è¿è¡ä»çæµè¯æ¶ï¼ä¼è¾åºç®è¦çä¿¡æ¯æ¥åè¯ç¨æ·æ£å¨ä½ä»ä¹ãè¿æ ·ä½æ¯å 为'configure'å¯è½ä¼æ¯è¾æ ¢ï¼æ²¡æè¿ç§è¾åºçè¯ç¨æ·å°ä¼è¢«æå¨ä¸æçææ£å¨åçä»ä¹ï¼ä½¿ç¨è¿ä¸¤ä¸ªé项ä¸çä»»ä½ä¸ä¸ªé½ä¼æä½ æå°ä¸æã(è¯æ³¨ï¼è¿ä¸¤å¥è¯æ¯è¾æææï¼åææ¯è¿æ ·çï¼If there was no such output, the user would be left wondering what is happening. By using this option, you too can be left wondering!)
--version
æå°ç¨æ¥äº§ç'configure'èæ¬çAutoconfççæ¬å·ã
--prefix=PEWFIX
'--prefix'æ¯æ常ç¨çé项ãå¶ä½åºç'Makefile'ä¼æ¥çéæ¤éé¡¹ä¼ éçåæ°ï¼å½ä¸ä¸ªå å¨å®è£ æ¶å¯ä»¥å½»åºçéæ°å®ç½®ä»çç»æç¬ç«é¨åã举ä¸ä¸ªä¾åï¼å½å®è£ ä¸ä¸ªå ï¼ä¾å¦è¯´Emacsï¼ä¸é¢çå½ä»¤å°ä¼ä½¿Emacs Lisp file被å®è£ å°"/opt/gnu/share"ï¼
$ ./configure --prefix=/opt/gnu
--exec-prefix=EPREFIX
ä¸'--prefix'é项类似ï¼ä½æ¯ä»æ¯ç¨æ¥è®¾ç½®ç»æåèµçæ件çå®è£ ä½ç½®ï¼ç¼è¯å¥½ç'emacs'äºè¿å¶æ件就æ¯è¿æ ·ä¸ä¸ªé®ä»¶ãå¦æ没æ设置è¿ä¸ªé项çè¯ï¼é»è®¤ä½¿ç¨çé项å¼å°è¢«è®¾ä¸ºå'--prefix'é项å¼ä¸æ ·ã
--bindir=DIR
æå®äºè¿å¶æ件çå®è£ ä½ç½®ï¼è¿éçäºè¿å¶æ件å®ä¹ä¸ºå¯ä»¥è¢«ç¨æ·ç´æ¥æ§è¡çç¨åºã
--sbindir=DIR
æå®è¶ 级äºè¿å¶æ件çå®è£ ä½ç½®ãè¿æ¯ä¸äºé常åªè½ç±è¶ 级ç¨æ·æ§è¡çç¨åºã
--libexecdir=DIR
æå®å¯æ§è¡æ¯ææ件çå®è£ ä½ç½®ãä¸äºè¿å¶æ件ç¸åï¼è¿äºæ件ä»æ¥ä¸ç´æ¥ç±ç¨æ·æ§è¡ï¼ä½æ¯å¯ä»¥è¢«ä¸é¢æå°çäºè¿å¶æ件ææ§è¡ã
--datadir=DIR
æå®éç¨æ°æ®æ件çå®è£ ä½ç½®ã
--sysconfdir=DIR
æå®å¨å个æºå¨ä¸ä½¿ç¨çåªè¯»æ°æ®çå®è£ ä½ç½®ã
--sharedstatedir=DIR
æå®å¯ä»¥å¨å¤ä¸ªæºå¨ä¸å ±äº«çå¯åæ°æ®çå®è£ ä½ç½®ã
--localstatedir=DIR
æå®åªè½åæºä½¿ç¨çå¯åæ°æ®çå®è£ ä½ç½®ã
--libdir=DIR
æå®åºæ件çå®è£ ä½ç½®ã
--includedir=DIR
æå®C头æ件çå®è£ ä½ç½®ãå ¶ä»è¯è¨å¦C++ç头æ件ä¹å¯ä»¥ä½¿ç¨æ¤é项ã
--oldincludedir=DIR
æå®ä¸ºé¤GCCå¤ç¼è¯å¨å®è£ çC头æ件çå®è£ ä½ç½®ã
--infodir=DIR
æå®Infoæ ¼å¼ææ¡£çå®è£ ä½ç½®.Infoæ¯è¢«GNUå·¥ç¨æ使ç¨çææ¡£æ ¼å¼ã
--mandir=DIR
æå®æå页çå®è£ ä½ç½®ã
--srcdir=DIR
è¿ä¸ªé项对å®è£ 没æä½ç¨ï¼ä»ä¼åè¯'configure'æºç çä½ç½®ãä¸è¬æ¥è¯´ä¸ç¨æå®æ¤é项ï¼å 为'configure'èæ¬ä¸è¬åæºç æ件å¨åä¸ä¸ªç®å½ä¸ã
--program-prefix=PREFIX
æå®å°è¢«å å°æå®è£ ç¨åºçååä¸çåç¼ãä¾å¦ï¼ä½¿ç¨'--program-prefix=g'æ¥configureä¸ä¸ªå为'tar'çç¨åºå°ä¼ä½¿å®è£ çç¨åºè¢«å½å为'gtar'ãå½åå ¶ä»çå®è£ é项ä¸èµ·ä½¿ç¨æ¶ï¼è¿ä¸ªé项åªæå½ä»è¢«`Makefile.in'æ件使ç¨æ¶æä¼å·¥ä½ã
--program-suffix=SUFFIX
æå®å°è¢«å å°æå®è£ ç¨åºçååä¸çåç¼ã
--program-transform-name=PROGRAM
è¿éçPROGRAMæ¯ä¸ä¸ªsedèæ¬ãå½ä¸ä¸ªç¨åºè¢«å®è£ æ¶ï¼ä»çååå°ç»è¿`sed -e PROGRAM'æ¥äº§çå®è£ çååã
--build=BUILD
æå®è½¯ä»¶å å®è£ çç³»ç»å¹³å°ãå¦æ没ææå®ï¼é»è®¤å¼å°æ¯'--host'é项çå¼ã
--host=HOST
æå®è½¯ä»¶è¿è¡çç³»ç»å¹³å°ãå¦æ没ææå®ãå°ä¼è¿è¡`config.guess'æ¥æ£æµã
--target=GARGET
æå®è½¯ä»¶é¢å(target to)çç³»ç»å¹³å°ãè¿ä¸»è¦å¨ç¨åºè¯è¨å·¥å ·å¦ç¼è¯å¨åæ±ç¼å¨ä¸ä¸æä¸èµ·ä½ç¨ãå¦æ没ææå®ï¼é»è®¤å°ä½¿ç¨'--host'é项çå¼ã
--disable-FEATURE
ä¸äºè½¯ä»¶å å¯ä»¥éæ©è¿ä¸ªé项æ¥æä¾ä¸ºå¤§åé项çç¼è¯æ¶é ç½®ï¼ä¾å¦ä½¿ç¨Kerberos认è¯ç³»ç»æè ä¸ä¸ªå®éªæ§çç¼è¯å¨æä¼é ç½®ãå¦æé»è®¤æ¯æä¾è¿äºç¹æ§ï¼å¯ä»¥ä½¿ç¨'--disable-FEATURE'æ¥ç¦ç¨å®ï¼è¿é'FEATURE'æ¯ç¹æ§çååï¼ä¾å¦ï¼
$ ./configure --disable-gui
-enable-FEATURE[=ARG]
ç¸åçï¼ä¸äºè½¯ä»¶å å¯è½æä¾äºä¸äºé»è®¤è¢«ç¦æ¢çç¹æ§,å¯ä»¥ä½¿ç¨'--enable-FEATURE'æ¥èµ·ç¨å®ãè¿é'FEATURE'æ¯ç¹æ§çååãä¸ä¸ªç¹æ§å¯è½ä¼æ¥åä¸ä¸ªå¯éçåæ°ãä¾å¦ï¼
$ ./configure --enable-buffers=
`--enable-FEATURE=no'ä¸ä¸é¢æå°ç'--disable-FEATURE'æ¯åä¹çã
--with-PACKAGE[=ARG]
å¨èªç±è½¯ä»¶ç¤¾åºéï¼æ使ç¨å·²æ软件å ååºçä¼ç§ä¼ ç»ãå½ç¨'configure'æ¥é ç½®ä¸ä¸ªæºç æ æ¶ï¼å¯ä»¥æä¾å ¶ä»å·²ç»å®è£ ç软件å çä¿¡æ¯ãä¾å¦ï¼åèµäºTclåTkçBLTå¨ä»¶å·¥å ·å ãè¦é ç½®BLTï¼å¯è½éè¦ç»'configure'æä¾ä¸äºå ³äºæ们æTclåTkè£ çä½å¤çä¿¡æ¯ï¼
$ ./configure --with-tcl=/usr/local --with-tk=/usr/local
'--with-PACKAGE=no'ä¸ä¸é¢å°æå°ç'--without-PACKAGE'æ¯åä¹çã
--without-PACKAGE
ææ¶åä½ å¯è½ä¸æ³è®©ä½ ç软件å ä¸ç³»ç»å·²æç软件å 交äºãä¾å¦ï¼ä½ å¯è½ä¸æ³è®©ä½ çæ°ç¼è¯å¨ä½¿ç¨GNU ldãéè¿ä½¿ç¨è¿ä¸ªé项å¯ä»¥åå°è¿ä¸ç¹ï¼
$ ./configure --without-gnu-ld
--x-includes=DIR
è¿ä¸ªé项æ¯'--with-PACKAGE'é项çä¸ä¸ªç¹ä¾ãå¨Autoconfæå被å¼ååºæ¥æ¶ï¼æµè¡ä½¿ç¨'configure'æ¥ä½ä¸ºImakeçä¸ä¸ªåéæ¹æ³æ¥å¶ä½è¿è¡äºXç软件ã'--x-includes'é项æä¾äºå'configure'èæ¬ææå å«X头æ件çç®å½çæ¹æ³ã
--x-libraries=DIR
类似çï¼'--x-libraries'é项æä¾äºå'configure'èæ¬ææå å«Xåºçç®å½çæ¹æ³ã
å¨æºç æ ä¸è¿è¡'configure'æ¯ä¸å¿ è¦çåæ¶ä¹æ¯ä¸å¥½çãä¸ä¸ªç±'configure'产ççè¯å¥½ç'Makefile'å¯ä»¥æçæºç å±äºå¦ä¸æ£µæ ç软件å ãå¨ä¸ä¸ªç¬ç«äºæºç çæ ä¸æçæ´¾ççæ件ç好å¤æ¯å¾ææ¾çï¼æ´¾ççæ件ï¼å¦ç®æ æ件ï¼ä¼åä¹±çæ£å¸äºæºç æ ãè¿ä¹ä½¿å¨å¦ä¸ä¸ªä¸åçç³»ç»æç¨ä¸åçé ç½®é项æçåæ ·çç®æ æ件é常å°é¾ã建议使ç¨ä¸æ£µæ ï¼ä¸æ£µæºç æ (source tree)ï¼ä¸æ£µæçæ (build tree)ï¼ä¸æ£µå®è£ æ (install tree)ãè¿éæä¸ä¸ªå¾æ¥è¿çä¾åï¼æ¯ä½¿ç¨è¿ç§æ¹æ³æ¥æçGNU mallocå ï¼
$ gtar zxf mmalloc-1.0.tar.gz
$ mkdir build && cd build
$ ../mmalloc-1.0/configure
creating cache ./config.cache
checking for gcc... gcc
checking whether the C compiler (gcc ) works... yes
checking whether the C compiler (gcc ) is a cross-compiler... no
checking whether we are using GNU C... yes
checking whether gcc accepts -g... yes
checking for a BSD compatible install... /usr/bin/install -c
checking host system type... i-pc-linux-gnu
checking build system type... i-pc-linux-gnu
checking for ar... ar
checking for ranlib... ranlib
checking how to run the C preprocessor... gcc -E
checking for unistd.h... yes
checking for getpagesize... yes
checking for working mmap... yes
checking for limits.h... yes
checking for stddef.h... yes
updating cache ../config.cache
creating ./config.status
è¿æ ·è¿æ£µæçæ 就被é ç½®äºï¼ä¸é¢å¯ä»¥ç»§ç»æçåå®è£ è¿ä¸ªå å°é»è®¤çä½ç½®'/usr/local'ï¼
$ make all && make install
expect的源码安装方法
expect是在tcl基础上创建起来的,它提供了一些tcl所没有的命令,如果是源码安装的话首先需要安装tcl。spawn命令激活一个Unix程序来进行交互式的运行。send命令向进程发送字符串,expect 命令等待进程的某些字符串。
下载tcl源码包 wget /tcl/tcl8.4.-src.tar.gz
解压并编译安装tcl tar zxvf tcl8.4.-src.tar.gz cd tcl8.4./unix/ ./configure --prefix=/usr/tcl --enable-shared make make install 如果编译成功没报错如下图
安装完毕以后进入tcl源代码的根目录,把子目录unix下面的tclUnixPort.h copy到子目录generic中,expect的安装过程还需要用 cp unix/tclUnixPort.h generic/.
下载expect源码包 wget /projects/expect/files/Expect/5./expect5..tar.gz
解压并编译安装expect tar zxvf expect5..tar.gz cd expect5. ./configure --prefix=/usr/expect --with-tcl=/usr/tcl/lib --with-tclinclude=../tcl8.4./generic/ make make install
安装完成之后做一个软连接 ln -s /usr/tcl/bin/expect /usr/expect/bin/expect
加入环境变量并测试 echo 'export PATH=$PATH:/usr/expect/bin' /etc/profile
划水Vivado生成网表文件是怎么回事呢?
Vivado生成网表文件是一个将RTL源码封装成不可见的中间形式的过程,用于解决项目协作中的种种问题。当你在FPGA项目中遇到大量不同RAM、FIFO和子模块时,网表文件能让你集成时更方便,避免直接修改他人代码带来的混乱。此外,当源码安全性或知识产权受到威胁时,网表文件也能保护你的设计免受未经授权的使用。
具体操作以一个""序列检测器模块为例,首先打开已综合的Synthesized Design,然后在Tcl Console中输入命令来生成.v和.edf文件。生成的.v文件仅包含IO接口信息,而.edf文件则包含了LUT、FDCE等逻辑实现和连接信息,不含源码。在其他工程中,只需对网表文件进行例化,其结构会与原模块一致,除非在合成设置中选择不flatten模块层次,以保持原有的结构层次清晰。
总结来说,Vivado生成的网表文件是一种强大的工具,它通过封装设计,简化了多人协作,保护了设计的完整性和知识产权。在实际项目中,尤其是在复杂模块和敏感环境中,网表文件的应用显得尤为关键。
Vivado使用误区与进阶系列(七)用Tcl定制Vivado设计实现流程
FPGA 设计流程概述
FPGA 的设计流程主要从源代码到比特流文件的实现,类似 IC 设计流程,分为前端设计(源代码综合为门级网表)和后端设计(门级网表布局布线)。ISE 和 Vivado 设计流程对比显示,Vivado 统一约束格式和数据模型,支持 XDC 约束,每步输出包含网表、约束及布局布线信息的 DCP 文件,运行时间大幅缩短。
Vivado 设计实现流程
Vivado 支持工程模式和非工程模式,工程模式便于管理设计流程,非工程模式提供类似 ASIC 的流程自由度。工程模式创建文件,自动生成相关目录存储数据、输出文件和源文件。非工程模式需用户管理文件和流程,使用 Tcl 脚本实现输入输出。
非工程模式使用 Tcl 脚本进行设计实现,但同样可以在 Vivado IDE 中打开 .dcp 文件进行交互式操作。工程模式下使用简洁的 Tcl 脚本,而非工程模式需执行多条命令。正确使用模式,可实现设计流程的全定制。
利用 Tcl 进行设计定制
Vivado IDE 提供多种利用 Tcl 的方式,如 Tcl Console、钩子脚本(tcl.pre 和 tcl.post)和定制化命令,用于执行特定操作、扩展功能或优化设计流程。
物理优化和闭环设计流程
利用 Tcl 对物理优化(phys_opt_design)进行多次执行,以优化时序。闭环设计流程通过 place_design -post_place_opt 实现,基于前一次布线后的连线延迟信息进行针对性优化。
增量设计流程
在设计后期使用增量布局布线功能,利用已有布局布线数据缩短运行时间,减少对未变部分的破坏,保持时序稳定性。需确保参考的 .dcp 文件为完全时序收敛设计。
使用 Tcl 自定义 Vivado 设计实现流程,通过不同工具和方法实现流程优化、扩展和定制,满足设计需求,提升设计效率。