0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

物理约束实践:网表约束DONT_TOUCH

FPGA快乐学习 来源:FPGA快乐学习 作者:原创 特权同学 2022-11-12 14:14 次阅读

3d662754-623f-11ed-8abf-dac502259ad0.jpg

概述

对设计中的信号施加DONT_TOUCH约束,可以避免这些信号在综合编译过程中被优化掉。例如,有些信号节点在综合或布局布线编译过程中可能会被优化掉,但是我们希望在后期调试过程中能够监控到这些信号,此时就可以使用DONT_TOUCH约束达到保留这些信号的目的。又如,有时在设计中会对一些高扇出的信号进行手动的逻辑复制,也可以使用DONT_TOUCH约束避免它们被优化掉。

工程实践

下面有一个简单的例子,看看DONT_TOUCH约束如何使用。原始代码如下,目前只有一个寄存器vga_valid,它对应了adv7123_blank_n、vga_r、vga_g、vga_b等信号的输出。

reg vga_valid;

always @(posedge clk or negedge rst_n)

vga_valid<= vga_origin_vld;  

assign adv7123_blank_n = vga_valid;

assign vga_r = vga_valid ? vga_rdb:5'd0;

assign vga_g = vga_valid ? vga_gdb:6'd0;

assign vga_b = vga_valid ? vga_bdb:5'd0;

编译工程后,点击RunImplementation,打开实现界面。

3d8e04c2-623f-11ed-8abf-dac502259ad0.jpg

点击菜单Reports à Report High Fanout Nets。

3daf29fe-623f-11ed-8abf-dac502259ad0.jpg

如图,设定From cells为[get_cells-hierarchical "*vga_valid*"],即查看所有带vga_valid字符的信号。

3dd40792-623f-11ed-8abf-dac502259ad0.jpg

此时,可以看到当前vga_valid信号的扇出为17。

3e1b52aa-623f-11ed-8abf-dac502259ad0.jpg

这个例子中,vga_valid的扇出为,其实并不多。但是在实际工程中,我们可以通过类似的方式查看到设计中高扇出的关键信号节点。然后,我们会如下在代码中,对这样的信号做逻辑复制。意图减少单个信号的扇出。

reg vga_valid1;

reg vga_valid2;

always @(posedge clk or negedge rst_n)

vga_valid1<= vga_origin_vld;

always @(posedge clk or negedge rst_n)

vga_valid2<= vga_origin_vld;

assign adv7123_blank_n = vga_valid1;

assign vga_r = vga_valid2 ? vga_rdb:5'd0;

assign vga_g = vga_valid1 ? vga_gdb:6'd0;

assign vga_b = vga_valid2 ? vga_bdb:5'd0;

如图,可惜我们做过逻辑复制的代码,最终综合实现下来,并没有减少扇出,和原始代码实现的效果完全一样。怎么回事?综合工具太聪明了,识别了你这个小伎俩,为了减少设计资源消耗,综合工具默认优化掉了代码中新增加的vga_valid2。

3e1b52aa-623f-11ed-8abf-dac502259ad0.jpg

但是,工具并不懂我们真正的心思,怎么办?此时DONT_TOUCH约束就派上用场了。如下,在不希望被综合优化的2个寄存器前面,加上(*dont_touch ="true"*)的语法。

(*dont_touch = "true"*) reg vga_valid1;

(*dont_touch = "true"*) reg vga_valid2;

重新编译后,我们看到,代码生效了。vga_valid1和vga_valid2分担了原本vga_valid的扇出。

3e59364c-623f-11ed-8abf-dac502259ad0.jpg

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    30

    文章

    5028

    浏览量

    117723
  • 网表
    +关注

    关注

    0

    文章

    13

    浏览量

    7522

原文标题:物理约束实践:网表约束DONT_TOUCH

文章出处:【微信号:FPGA快乐学习,微信公众号:FPGA快乐学习】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Xilinx FPGA管脚物理约束介绍

    引言:本文我们简单介绍下Xilinx FPGA管脚物理约束,包括位置(管脚)约束和电气约束
    发表于 07-25 10:13 4280次阅读

    物理约束实践:I/O约束

    I/O约束(I/O Constraints)包括I/O标准(I/OStandard)约束和I/O位置(I/O location)约束
    的头像 发表于 11-18 16:42 556次阅读
    <b class='flag-5'>物理</b><b class='flag-5'>约束</b><b class='flag-5'>实践</b>:I/O<b class='flag-5'>约束</b>

    FPGA物理约束之布局约束

    在进行布局约束前,通常会对现有设计进行设计实现(Implementation)编译。在完成第一次设计实现编译后,工程设计通常会不断更新迭代,此时对于设计中一些固定不变的逻辑,设计者希望它们的编译结果
    的头像 发表于 01-02 14:13 538次阅读
    FPGA<b class='flag-5'>物理</b><b class='flag-5'>约束</b>之布局<b class='flag-5'>约束</b>

    物理约束之配置约束

    进行约束。set_property BITSTREAM.CONFIG.CONFIGRATE 12 [current_design]set_property CONFIG_VOLTAGE 1.8
    发表于 09-21 13:12

    物理约束之布局约束

    1. 单元布局约束set_property BELGTHE2_CHANNEL[get_cellsswitch_v2_i/srio_0/srio_gen2_0_inst
    发表于 09-26 15:32

    DONT_TOUCH约束

    ` 对设计中的信号施加DONT_TOUCH约束,可以避免这些信号在综合编译过程中被优化掉。例如,有些信号节点在综合或布局布线编译过程中可能会被优化掉,但是我们希望在后期调试过程中能够监控到这些信号
    发表于 09-18 14:24

    touch DONT_TOUCH约束

    对设计中的信号施加DONT_TOUCH约束,可以避免这些信号在综合编译过程中被优化掉。例如,有些信号节点在综合或布局布线编译过程中可能会被优化掉,但是我们希望在后期调试过程中能够监控到这些信号,此时
    发表于 09-23 10:47

    【MiniStar FPGA开发板】配套视频教程——Gowin进行物理和时序约束

    本视频是MiniStar FPGA开发板的配套视频课程,主要通过工程实例介绍Gowin的物理约束和时序约束,课程内容包括gowin的管脚约束及其他
    发表于 05-06 15:40

    请问物理约束文件ADC可做哪些约束

    物理约束文件ADC可做哪些约束
    发表于 08-11 08:37

    Adam Taylor玩转MicroZed系列74:物理约束

    : •放置约束——定义元件位置 •布线约束——定义信号布线 •I/O脚约束——定义I/O脚位置和I/O脚参数 •配置约束——定义配置方法 按照惯例,有一些
    发表于 02-08 02:20 223次阅读
    Adam Taylor玩转MicroZed系列74:<b class='flag-5'>物理</b><b class='flag-5'>约束</b>

    XDC约束物理约束的介绍

    观看视频,了解和学习有关XDC约束,包括时序,以及物理约束相关知识。
    的头像 发表于 01-07 07:10 5622次阅读
    XDC<b class='flag-5'>约束</b>及<b class='flag-5'>物理</b><b class='flag-5'>约束</b>的介绍

    简述Xilinx FPGA管脚物理约束解析

    引言:本文我们简单介绍下Xilinx FPGA管脚物理约束,包括位置(管脚)约束和电气约束
    的头像 发表于 04-27 10:36 3210次阅读
    简述Xilinx FPGA管脚<b class='flag-5'>物理</b><b class='flag-5'>约束</b>解析

    Gowin设计物理约束用户指南

    电子发烧友网站提供《Gowin设计物理约束用户指南 .pdf》资料免费下载
    发表于 09-15 16:07 0次下载
    Gowin设计<b class='flag-5'>物理</b><b class='flag-5'>约束</b>用户指南

    物理约束实践:网表约束LOCK_PINS

    话说网表约束中的CLOCK_DEDICATED_ROUTE、MARK_DEBUG和DONT_TOUCH,在实际工程中常常都可能遇上。MARK_DEBUG和DONT_TOUCH在设计和调试中可能常常
    的头像 发表于 11-28 15:24 841次阅读

    SystemVerilog中“软约束”与“硬约束”的应用示例

    示例中采用的是“硬约束”,因为定义在类中的约束与随机时指定的内嵌约束“矛盾”,所以导致约束解析器解析随机失败,即“硬约束”要求所有相关的
    发表于 03-15 16:56 2788次阅读