vivado Modifying Logic

news2024/11/14 15:20:30

修改逻辑

在中实现后,可以修改非只读逻辑对象的属性Vivado IDE以及Tcl。

注意:有关Tcl命令的更多信息,请参阅Vivado Design Suite Tcl命令参考指南(UG835),或键入<command>-help。要在“设备”窗口中修改对象的属性,请执行以下操作:

1.选择对象。

2.在“属性”窗口的“属性”视图中修改对象的属性值。

这些属性可以包括从块RAM INIT到时钟修改的所有内容MMCM上的属性。还有一个特殊的对话框,用于设置或修改LUT上的INIT物体。此对话框允许您指定LUT方程并让工具确定适当的INIT。

保存修改

•要捕获内存中对设计所做的更改,请编写设计的检查点。由于工作分配没有反向注释到设计中,因此必须添加工作分配以便它们影响下一次运行。

•要在项目模式中将约束保存到约束文件中,请选择“文件” → 约束 → 拯救

修改网表

网表有时需要更改以修复功能逻辑错误、满足时间限制或插入调试逻辑。您可以使用Tcl命令在合成后、放置后等修改现有网表,以及路线后。

Netlist修改命令

以下命令允许您修改现有网表:

•创建端口

•remove_port

•创建单元格

•remove_cell

•create_pin

•remove_pin

•创建net

•remove_net

•connect_net

•disconnect_net

注意:有关这些Tcl命令的更多信息,请参阅Vivado Design Suite Tcl命令参考指南(UG835),或键入<command>-help。

网表修改命令适用于后合成、后放置或后路由网表。

在修改网表之前,必须将其加载到内存中。网表修改命令允许您在网表位于内存中时对其进行逻辑更改。您可以使用write_checkpoint命令保存更改。

提示:Vivado工具允许您使用网表修改无条件地更改网表命令。但是,逻辑更改可能导致无效的物理实现。建议在执行网表更改后运行DRC。此外,DRC作为添加过程的一部分运行对物理实现的逻辑更改。这些DRC标记任何无效的网表更改或新的在实际实施开始之前需要解决的物理限制。只要网表修改命令,逻辑更改就会反映在原理图中执行。下图显示了使用LUT1作为参考单元格。

当LUT1的输出连接到OBUF时,示意图反映了这种变化显示ECO_INV/O引脚不再带有“无连接”。下图显示得到的示意图。

使用案例

以下示例显示了网表修改的一些最常见的用例。这个示例显示了原始逻辑网表的示意图,列出了修改Tcl的网表命令,并显示最终修改的网表的示意图。

用例1:反转网络的逻辑值

反转网络的逻辑值可以像修改现有的LUT方程一样简单LUTx基元,或者它可能需要插入一个LUT1,该LUT1被配置为将其输出反相输入下图中的示意图显示了驱动输出的FDRE原语通过OBUF端口wbOutputData[0]。

以下Tcl命令显示了如何在FDRE的输出和OBUF:

create_cell -reference LUT1 ECO_INV set_property INIT 2'h1 [get_cells
ECO_INV]
disconnect_net -net {n_0_SuspendM_pad_0_o_reg} -objects \ [get_pins
{SuspendM_pad_0_o_reg/Q}]
connect_net -net {n_0_SuspendM_pad_0_o_reg} -objects [get_pins {ECO_INV/O}]
create_net ECO_INV_in
connect_net -net ECO_INV_in -objects [get_pins {SuspendM_pad_0_o_reg/Q
ECO_INV/I0}]

在这个示例脚本中,LUT1单元ECO_INV被创建,INIT值被设置为2'h1实现反转。FDRE和OBUF之间的网络与Q断开FDRE的输出引脚,并且反相LUT1单元ECO_INV的输出连接到IOBUF的输入引脚。最后,在的Q输出引脚之间创建并连接一个网络FDRE和反相LUT1单元的I0输入引脚。下图显示了由此产生的逻辑网表更改的示意图。

成功修改网表后,必须实现逻辑更改。这个必须放置LUT1信元,并对信元之间的网络进行路由。这必须在没有修改未修改的设计部分的放置或布线。Vivado在上运行place_design时,实现命令会自动使用增量模式修改后的网表,日志文件通过显示“增量放置”反映了这一点总结

+--------------------------------------------------+
|Incremental Placement Summary |
+--------------------------------------------------+
| Type | Count | Percentage |
+--------------------------+----------+------------+
| Total instances | 3834 | 100.00 |
| Reused instances | 3833 | 99.97 |
| Non-reused instances | 1 | 0.03 |
| New | 1 | 0.03 |
+--------------------------+----------+------------+

要保留现有路由并仅路由修改后的网络,请使用route_design命令这只会增量路由更改,如您在增量路由中所见重用日志文件中的摘要:

+--------------------------------------------------+
|Incremental Routing Reuse Summary |
+--------------------------------------------------+
|Type | Count | Percentage |
+---------------------+-----------+----------------+
|Fully reused nets | 6401| 99.97 |
|Partially reused nets| 0| 0.00 |
|Non-reused nets | 2| 0.03 |
+---------------------+-----------+----------------+

而不是使用增量自动放置和路由修改后的网表place_design和route_design命令,可以使用提交逻辑更改手动放置和布线约束。有关详细信息,请参见修改放置以及本章前面的“修改路由”部分。

用例2:添加调试端口

您可以通过网表更改轻松地将内部信号路由到调试端口。下面的示意图显示了引脚demuxState_reg/Q,您可以在设备的外部端口上观察到它。

下面的Tcl脚本显示了如何向现有设计中添加端口并路由内部向新创建的端口发送信号。

create_port -direction out debug_port_out
set_property PACKAGE_PIN AB20 [get_ports {debug_port_out}]
set_property IOSTANDARD LVCMOS18 [get_ports [list debug_port_out]]
create_cell -reference [get_lib_cells [get_libs]/OBUF] ECO_OBUF1
create_net ECO_OBUF1_out
connect_net -net ECO_OBUF1_out -objects ECO_OBUF1/O
connect_net -net ECO_OBUF1_out -objects [get_ports debug_port_out]
connect_net -net [get_nets -of [get_pins demuxState_reg/Q]] -objects
ECO_OBUF1/I

示例脚本实现以下内容:

•创建调试端口。

○ 将其分配给封装引脚AB20。

○ 为其指定LVCMOS18的I/O标准。

•创建一个OBUF,通过网络ECO_OBUF1_out驱动调试端口。

•创建一个网络,将demuxState_reg寄存器的输出连接到OBUF的输入。

下图显示了由此产生的逻辑网表更改的示意图。

成功修改网表后,必须实现逻辑更改。由于端口已分配给封装引脚,驱动端口的OBUF自动放置在正确的位置。因此,放置者没有任何东西可放置,并且因此,当运行place_design后跟route_design。路由将内部信号连接到OBUF的新添加的网络输入,使用route_design-nets命令或手动路由网络以避免出现完整的route_design通过,这可能会更改其他网络的路由。或者,您可以运行route_design-preserve,它保留了现有的路由。请参见使用其他路线_设计选项。

用例3:添加管道阶段以改进计时

沿着一条路径添加寄存器以将组合逻辑拆分为多个循环称为流水线。流水线通过在中引入额外的延迟来提高寄存器到寄存器的性能流水线路径。流水线是否有效取决于您的设计的延迟容忍度。这个下图中的示意图显示了从RAMB36E1开始并经过通过两个LUT6单元,然后终止于FF。添加流水线级可以改善时序用于关键路径,并且可以通过修改网表来实现。

下面的Tcl脚本显示了如何在两个LUT6单元之间插入流水线寄存器。这个寄存器使用与加载寄存器相同的控制信号来实现。

create_cell -reference [get_lib_cells -of [get_cells
{wbOutputData_reg[29]}]] ECO_pipe_stage[29]
foreach control_pin {C CE R} {
connect_net -net [get_nets -of [get_pins wbOutputData_reg[29]/$
{control_pin}]] \
-objects [get_pins ECO_pipe_stage[29]/${control_pin}]
}
disconnect_net -objects \
{egressLoop[4].egressFifo/buffer_fifo/
infer_fifo.block_ram_performance.fifo_ram_reg/DOBDO[ 29]}
create_net {egressLoop[4].egressFifo/buffer_fifo/ECO_pipe_stage[29]_in}
connect_net -hierarchical -net
{egressLoop[4].egressFifo/buffer_fifo/ECO_pipe_stage[29]_in} -objects \
[list \
{ECO_pipe_stage[29]/D} \
{egressLoop[4].egressFifo/buffer_fifo/
infer_fifo.block_ram_performance.fifo_ram_reg/DOBDO[ 29]}]
connect_net -hierarchical -net {egressLoop[4].egressFifo/buffer_fifo/
dout2_in[29]}
-objects [list \ {ECO_pipe_stage[29]/Q}]
下图显示了由此产生的逻辑网表更改的示意图。

成功修改网表后,必须提交逻辑更改。使用place_design和route_design命令完成此操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1543687.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SEO 谷歌浏览器模拟baodu蜘蛛 模拟UA 设置UA

目录 前言baidu UA操作设置百度UA 前言 要在谷歌浏览器中设置用户代理(User Agent)来模拟百度蜘蛛,您可以按照以下步骤进行操作 baidu UA Mozilla/5.0 (compatible; Baiduspider-render/2.0; http://www.baidu.com/search/spider.html)操作…

Linux(1)常用指令总结大全

1、firewall-cmd 1.1 打开443/TCP端口 firewall-cmd --add-port443/tcp 1.2 永久打开3690/TCP端口 firewall-cmd --permanent --add-port3690/tcp ​ # 永久打开端口好像需要reload一下,临时打开好像不用,如果用了reload临时打开的端口就失效了 # …

【无标题】C高级325

练习1:输入一个数,实现倒叙123-》321 练习2:输入一个,判断是否是素数 练习3:输入一个文件名, 判断是否在家目录下存在, 如果是一个目录,则直接输出是目录下的sh文件的个数 如果存在则判断是否是…

java常用应用程序编程接口(API)——IO流概述及字节流的使用

前言: IO流和File是用于把数据存放在硬盘里的工具。File可以把文件存至硬盘,但不能更改里面的数据。通过IO流可以改写硬盘里的数据。整理下学习笔记,打好基础,daydayup!!! IO流 I指Input,称为输入流:负责把…

【好书推荐2】AI提示工程实战:从零开始利用提示工程学习应用大语言模型

【好书推荐2】AI提示工程实战:从零开始利用提示工程学习应用大语言模型 写在最前面AI辅助研发方向一:AI辅助研发的技术进展方向二:行业应用案例方向三:面临的挑战与机遇方向四:未来趋势预测方向五:与法规的…

扬州大数据局领导一行参访百望云 探索新质生产力在百态千业的落地场景

​ 在当前全球经济一体化的大背景下,新质生产力的发展代表着科技进步、产业升级和商业模式创新的方向。特别两会期间,新质生产力概念爆火,也体现出我国政府高度重视新质生产力,将其作为实现高质量发展的重要支柱。 在此背景下&…

Day20 代码随想录(1刷) 二叉树

目录 654. 最大二叉树 617. 合并二叉树 700. 二叉搜索树中的搜索 98. 验证二叉搜索树 654. 最大二叉树 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点,其值为 nums 中的最大值。递归地在最大值 左边 的 子数…

今日arXiv最热NLP大模型论文:微软重磅:AgentAI,下一代人工智能的关键

人工智能的发展已从简单算法进化到复杂的大型基础模型,尤其在理解开放世界环境中的感官信息方面取得显著进步。然而,关键转折点在于从过度简化方法转向强调整体运作的系统,催生了Agent AI的兴起。Agent AI将大型基础模型整合到代理行动中的具…

如何实现无公网IP及服务器实现公网环境企业微信网页应用开发调试

文章目录 1. Windows安装Cpolar2. 创建Cpolar域名3. 创建企业微信应用4. 定义回调本地接口5. 回调和可信域名接口校验6. 设置固定Cpolar域名7. 使用固定域名校验 企业微信开发者在应用的开发测试阶段,应用服务通常是部署在开发环境,在有数据回调的开发场…

❤ leetCode简易题1-两数之和、简易2--回文数判断、简易14-最长公共前缀

❤ leetCode简易题1-两数之和、简易题14- 最长公共前缀 1、简易1-两数之和 ① 题目要求 数字A B target,以target为求和结果,找出数组中符合的A、B数字下标。 第一次做的时候完全脑子一片蒙,随后认真看了看题目发现是发现找符合target和…

rust中字符串String常用方法和注意事项

Rust 中通常说的字符串指的是&#xff1a;String 和 &str(字符串字面值、或者叫字符串切片)这两种类型。str是rust中基础字符串类型&#xff0c;String是标准库里面的类型。Rust 中的字符串本质上是&#xff1a;Byte的集合&#xff08;Vec<u8>&#xff09; 基础类型…

职场口才提升之道

职场口才提升之道 在职场中&#xff0c;口才的重要性不言而喻。无论是与同事沟通协作&#xff0c;还是向上级汇报工作&#xff0c;亦或是与客户洽谈业务&#xff0c;都需要具备良好的口才能力。一个出色的职场人&#xff0c;除了拥有扎实的专业技能外&#xff0c;还应具备出色…

gsxt cookie:__jsl_clearance_s 参数研究获取

gsxt cookie&#xff1a;__jsl_clearance_s 参数研究获取 今天尝试了一下 gsxt 网站中 cookie __jsl_clearance_s 参数解密 抓包 打开 fiddler 抓包工具&#xff0c;新建无痕浏览器页面刷新后得到抓包数据 发现后续的所有的请求都会携带这两个加密参数 __jsl_clearance_s17…

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之六 简单图像倾斜校正处理效果

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之六 简单图像倾斜校正处理效果 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之六 简单图像倾斜校正处理效果 一、简单介绍 二、简单图像倾斜校正处理效果实现原理 三、简单图像倾斜校正…

2024年升级_python风控建模实战lendingClub_新增2020年数据(14万条)

作者Toby&#xff0c;来源公众号&#xff1a;python风控模型《python风控建模实战lendingClub_新增2020年数据&#xff08;14万条&#xff09;》 公告通知&#xff0c;我方重庆未来之智信息技术咨询服务有限公司自研课程《python风控建模实战lendingClub》2024年升级&#xff…

20240325数据驱动的机器学习预测单层二维材料力学性能

本论文使用模型主要有Mo,W,S,Se原子组成的单层二维材料。大小为30nmx30nm&#xff0c;中间有切口&#xff0c;切口大小从无切口以1nm增长到5nm&#xff0c;加载方向垂直于切口方向&#xff0c;并且分锯齿型和扶手椅型方向。 使用MD对模型进行拉伸&#xff0c;一共288个模型。 …

题目42—接雨水

题目来源于LeetCode 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 方法&#xff1a;使用单调栈。找到中间凹槽位置&#xff0c;并利用单调栈找出其左边的第一个最高柱子&#xff0c;右边的第一个最高柱…

NKCTF 2024(三月周报比赛一)

web My first cms 扫目录找到管理员界面登陆&#xff0c;账号Admin&#xff0c;密码Admin123,账号可以根据forget来进行查询是否存在&#xff0c;然后进行弱密码攻击&#xff0c;这里网上有两种rce&#xff0c;一种sstl一种代码执行 我用的是第二种 EXtension>use defined…

上班几周了,

过年回来后&#xff0c;时间变得飞快&#xff0c;很多事情都是马上要去干&#xff0c;而且又是很着急的事&#xff0c;呵呵&#xff0c;真的要干趴了 然后——经历了第一次年后的周末连续加班出版本保量产&#xff0c;经历了加班到凌晨3点调试问题&#xff0c;经历我们在疯狂的…

人物百度百科怎么做?需要什么资料?

在互联网时代&#xff0c;百度百科作为国内最具权威性的知识分享平台&#xff0c;吸引了大量用户关注和参与。究竟哪些人适合创建和编辑人物百度百科呢&#xff1f;本文伯乐网络传媒将为您揭秘人物百度百科的适用人群&#xff0c;并详细介绍如何注册、登录、创建及维护人物百度…