tag 标签: eco

相关博文
  • 热度 3
    2024-6-14 13:39
    5015 次阅读|
    0 个评论
    ECO那些事之ALM端口DATAF
    ECO那些事之ALM端口DATAF 概述 这里继续《ECO那些事之LE和ALM》一文,详细了解下ALM的端口DATAF,在前文中列举了ALM和LE的差异,其中之一就是DATAF端口。随着基于FPGA的TDC设计深入,越来越发现了解DATAF端口细节的重要性。 ALUT子LUT掩码真值 首先列举一些常识,LUT(ALUT的子LUT,打开属性编辑器,Top ALUT分为一个F0和两个F2子LUT,Bottom ALUT分为一个F1和两个F3 子LUT)只有DATAA端口的输入时其16位LUT掩码真值为“AAAA”,只有DATAB端口的输入时其16位LUT掩码真值为“CCCC”,只有DATAC端口的输入时其16位LUT掩码真值为“F0F0”,只有DATAD端口的输入时其16位LUT掩码真值为“FF00”。 端口DATAE和DATAF不直接作为子LUT输入 。 上述信息是笔者应用属性编辑器的时候观察总结得到,而如果查阅器件handbook,对于ALM工作算术模式的描述是这样的,ALM工作在算术模式时使用两组各包含2个四输入LUT以及两个专用全加器。如图1所示,两个4输入LUT共享DATAA和DATAB输入端口。 图1:工作在算术模式的ALM 这几个DATA端口在ALM内的具体路径可以参考《基于FPGA的TDC那些事之设计资源LAB》一文中的ALM内部结构图,或者查阅相关器件手册,本文后续会基于属性编辑器详细剖析。 注意图1中端口DATAE和DATAF与笔者观察总结属性编辑器的差异,由于DATAE和DATAF不直接feed属性编辑器中的“子LUT”,所以通过ECO方式修改子LUT等式或者掩码的时候需要特别小心 。 针对DATAF解剖ALM 在《ECO那些事之LE与ALM》一文中对于ALM配置为normal和算术模式,都给出了其在属性编辑器中概览。图2给出DATAF端口进来的信号第一条可能路径,图3是该ALUT的逻辑属性。其中图3-(a)的F2 LUT的等式为“!a&!b&!c”,而F2的掩码真值为“0101”,这个真值可以根据上一节的单个端口输入的真值推导得到,即“!(AAAA)&!(CCCC)&!(F0F0)”=“(5555)&(3333)&(0F0F)”=“0101”。观察COMBOUT等式,分别与F0 LUT等式、F2 LUT等式以及DATAF有关,而此时DATAF不参与构成子LUT等式。 图2:DATAF端口信号进入ALM后可能路径(一) 图3:ALUT属性栏 图4显示了一个更复杂的例子,DATAF的路径和图2一样,同时DATAE走的也是这种路径,而且图4是一个7输入查找表的具体实现。 图4:7输入LUT功能实现 以下是图4的组合逻辑输出等式,由于太长,图4无法全部展示: ( E & ( F & ( (!A & ((!B) # ((!C)))) # (A & (C & ((D) # (B)))) ) ) ) # ( !E & ( F & ( (!B & (((C & D)))) # (B & (!A $ ((C)))) ) ) ) # ( E & ( !F & ( (!B & ((!A) # ((C & D)))) ) ) ) # ( !E & ( !F & ( (!B & (C & D)) ) ) ) ( E & ( F & ( (!A & ((!B) # ((!C)))) # (A & (C & ((D) # (B)))) ) ) ) # ( !E & ( F & ( (!B & (((C & D)))) # (B & (!A $ ((C)))) ) ) ) # ( E & ( !F & ( (!B & ((!A) # ((C & D)))) ) ) ) # ( !E & ( !F & ( (!B & (C & D)) ) ) ) 图2和图4显示的都是ALM配置在Normal模式下DATAF进入ALM的一种路径,当ALM配置成算术模式时,DATAF进入ALM的路径 图5显示了当ALM被配置为算术模式时,DATAF进入ALM的路径,如图中绿圈所示,同时图中红圈所示和图2中的路径一样,只是这里的combout等式为N/A,也即其没有fan out。另外注意图5右侧属性栏中的F0和F2 LUT等式,虽然同样为“!d”,但是F0 LUT的输出作为加法器一个输入,而F0 LUT的输入只有DATAD,所以其输出也只与DATAD有关,对应Sumout和Carryout等式中的“D”项。同理,观察DATAF位于绿圈的路径,尽管其没有“直接输入”到F2 LUT,但是此时DATAF就是F2 LUT的唯一输入,并且F2 LUT的输出作为加法器的另一个输入,对应Sumout和Carryout等式中的“!F”项。 图5:算术模式下DATAF进入ALM的路径 根据上述分析,DATAE和DATAF虽然没有作为F?LUT的直接输入,但是F2和F3 LUT和其后面的3输入模块构成了图1中ALUT的下面的那个4输入LUT。 图5显示了一个非常简单加法器例子,DATAF和DATAD直接作为加法器的两个输入,尽管DATAF被取反了,图中黄圈模块就是取反。另外,信号在ALM端口处是不是首先被取反了?!如图5所示的F0 LUT的等式为!d,输入为DATAD,F0 LUT到加法器直接是直通,并没有取反器,为何SUMOUT表现为“D”呢,所以推断端口处信号均被“取反”,可以放大图5端口处,发现DATA前似乎有取反符合“!”,从属性编辑器可以找到很多例子来印证上述猜测。 分析及结论 本文试图详细了解DATAF端口上的信号“feed in”ALM后的路径,从而为TDC设计中需要微小修改时提供帮助。 附:
  • 热度 2
    2024-1-19 14:42
    1874 次阅读|
    0 个评论
    Quartus Prime是否隐藏了ECO功能?(答案已找到:仅部分高端器件支持)
    QPP(Quartus Prime Pro)版本为22.4,开发中,打开Chip Planner,发现其Editing mode里的ECO - “器件型号”选项是灰色的,入下图所示: 所以打开Chip Planner的时候,默认的Editing mode就是“Assignment- 器件型号。下来框里面倒是可以找到ECO选项,但是已经是灰色,无法进行选择。而且,此时进入资源属性界面的时候,也没法进行ECO改动。 在Quartus 13.0版本的时候,我们在打开Chip Planner的时候,Editing mode里上述两个选项都是激活,可以随时更换,如下图所示: 在Chip Planner里双击某个ALM(或LUT)进入资源属性窗口,选择查找表的combinational端口,然后单击鼠标右键,弹出的窗口里已经少了很多项目,入下图所示: 而如果在Quartus13.0等老版本中,进行相同的操作,我们可以看到更多的选项,如下图所示: 比较上述两个操作图,可以看出QPP似乎隐藏或者已经关闭了ECO功能。或者是需要其它方式来打开ECO功能,目前还不知道到底是属于哪种情况。 在Chip Planner窗口菜单View里可以进一步确认QPP于老版本Quartus的差异,如下图为QPP的Chip Planner的View菜单项: 而我们打开Quartus13.0里对应相同的菜单项,则如下图所示: 对比二者,可以发现QPP里该菜单里总共有29个菜单项,而老版本里该菜单里总共有34个菜单项。我们发现与ECO相关的菜单项”Change Manger“更改管理已经在QPP里找不到了。 ######################################################################################### 这几天翻了些资料,发现ECO在QPP里不是被隐藏了,而是只有部分高端器件才支持此功能,非全系支持。如下图所示
  • 热度 25
    2013-4-8 12:10
    8381 次阅读|
    0 个评论
    ECO那些事之LE与ALM 王敏志 概述   这里继续《ECO那些事之属性编辑器》一文,描述下如何在属性编辑器里对LE以及ALM进行手动修改。重点比较一下LE与ALM在属性编辑器中的区别,通过这些比较就可以很容易地理解为何在ALTERA的高端FPGA中实现TDC功能的难度要比其低端器件高很多。 在《基于FPGA的TDC那些事之设计资源LAB》一文中对于ALTERA高低端器件组成LAB不同的单元LE和ALM进行了介绍,同时也作了比较。本文笔者希望站在ECO处理角度再次进行比较介绍LE和ALM。   LE在属性编辑器中概览   在《ECO那些事之属性编辑器》一文中,有一节详细描述了LE的属性,由于笔者主要使用ECO修改TDC设计,所以这里重点关注LE的算术模式。在算术模式下,LUT可以理解为两个三输入子LUT。第一个三输入子LUT产生相加“和”信号输出,第二个子LUT用于产生进位输出信号。当LE配置为算术模式时,用户不仅能更改SUM方程式,还可以修改CARRY进位方程式。如图1所示,右侧的SUM等式和Carry等式都是可修改的,当然也可以通过修改SUM和Carry LUT掩码来自动更新等式。 从图1可以看出,虽然LUT分成了两个子LUT但是求和输出(Sumout)只与LUT(注意与LE的区别)的输入有关,这个从图左侧的视图或者右侧的SUM等式都可以清楚看到。这点是LE与ALM最大的区别,后面详述。 图1:配置成算术模式LE属性编辑器概览 另外,注意图1右侧等式里的符号“#”和“$”,在《ECO那些事之属性编辑器》一文中已经对其所代表的涵义进行了推导,理解其含义对于利用ECO修改LE和ALM很重要。为了便于比较,图2给出的是当LE配置为Normal模式下时,其属性编辑器的概览。可以看到,左侧只有一个LUT,而右侧的Carry掩码以及Carry等式均为“N/A”状态。 图2:配置成Normal模式LE属性编辑器概览   ALM在属性编辑器中概览   ALTERA的宣传资料在介绍ALM的时候通常如《基于FPGA的TDC那些事之设计资源LAB》一文中图3那样进行简单介绍。ALM的工作模式比LE多出了几个,其实主要模式还是Normal和算术模式。图3所示为ALM的Normal模式。 图3:Normal模式下的ALM 如果只看图3,似乎和图2的LE没什么太大区别(多个LUT,及LUT的输入更多),其实除了图3表面的这些区别之外,如果深入到属性编辑器可以发现更多细节的不同处,如图4所示。 图4:配置在Normal模式下ALM属性编辑器概览 虽然Normal模式不是本文的重点,但是这里还是有必要比较并列举出图2和图4的主要差别点,有些差异在算术模式下一样。 l  ALM包含2个ALUT,所以属性栏分别包含TOP和BOTTOM两栏 l  ALM的属性编辑器里属性栏没有显示当前察看的ALM的工作模式 l  每个ALUT被分为3个子LUT,上面的分别为1个F0 LUT和2个F0 LUT,下面分别为1个F1 LUT和2个F3 LUT l  ALM内包含有2个加法器,不象图1中的LE需要LUT自己实现加法功能 l  多出端口DATAF、DATAE,以及这两个端口和其它端口在ALM内部路径是有区别的 l  端口DATAD也和LE有些许区别 上面列举的这些差异,都是造成ALTERA高端FPGA器件中实现TDC功能难度增大的原因。那么,逻辑实现TDC功能,还是需要利用逻辑单元的算术模式,其在属性编辑器中概览如图5所示。 图5:配置在算术模式下ALM属性编辑器概览 比较图4和图5,明显区别是ALM中的加法器以及寄存器都被利用起来了,而且右侧的属性栏里多了有关register的两项。 利用属性编辑器手动修改ALM 在《ECO那些事之属性编辑器》一文里也举了几个利用属性编辑器简单的修改ALM例子,特别是在推导符号“#”和“$”功能的时候。笔者这里首先给出的一个例子是对《ALTERA FPGA/CPLD设计 – 基础篇》中关于属性编辑器一段描述的存疑。在该书的第179页的表5-1中列出了LUT掩码真值表。图6给我们展示了实际输入DATAD和DATAC的真值,即分别为“FF00”和“F0F0”,那么DATAA和DATAB的真值也很容易知道,这和该书籍上的描述不一致,该书将ABCD正好弄反了。 图6:LUT输入真值 接下来,我们注意虽然ALM有8个输入,但是每个子LUT的方程式只能包含A、B、C和D,不能包含F0 、F1、E0和 E1,而Sumout方程式和Carryout方程式中可以包含,而我们知道这两个方程式不能直接进行修改。 图7:修改前ALM上半部分 图7是图6对应的ALM原理视图,三个子LUT的输入只有DATAC和DATAD,这和图6中的求和及进位方程式相符。如果我们要把DATAC移到DATAF,会发生什么呢?如图8所示,我们发现这时候QuartusII并没有自动更新LUT掩码以及方程式。这时候如果使用ECOs得到的结果是不对的,因为方程式中使用的DATAC根本没有任何连接。所以还需要手动修改LUT方程式,使得Sumout方程式由SUM((!D)+(!C))+(!VCC)变成SUM((!D)+(!F))+(!VCC),同样的Carryout方程式也会得到自动更新。注意这里的目的不是要改变逻辑功能,只是简单将DATAC上的信号移到DATAF(这点在以后的TDC设计中非常重要,因为我们不是要改变功能,而是要改变路径,即信号path)。 图8:只是将DATAC移动到DATAF 那么应该修改那个子LUT方程式呢,分析图8,应该是修改F2子LUT方程式,但是怎么修改呢,经过尝试,发现修改方程式到“!d”即可,如图9所示,修改F2子LUT方程式导致其他方程式及掩码得到了自动更新。至于为何是“!d”还未搞清楚,反正是跟DATAD有关系。 图9:修改子LUT方程式并自动更新求和及进位方程式 上面这个例子充分回答了之前笔者所说的上述ALM与LE的差异会如何导致实现TDC功能难度的增加,同时这个例子也揭示了我们应该如何在高端FPGA中正确的进行TDC设计。   分析及结论   本文在属性编辑器的角度进一步比较了LE和ALM的异同,给普通客户揭开了一个小缝隙,使其可以了解ALTERA的编译工具是如何对逻辑单元进行布局布线的。学习ECO修改设计,从而确保TDC在高端FPGA器件成功实现。
  • 热度 30
    2013-4-3 09:39
    3103 次阅读|
    4 个评论
    ECO那些事之属性编辑器 王敏志 概述 进行ECOs有两种方法,一种是直接在Chip Planner里进行,另外一种是在属性编辑器里进行ECOs。本文试图结合笔者在TDC设计中使用的功能尽量详细地描述一下属性编辑器,毕竟属性编辑器可以编辑的属性较多,笔者并未对每一种属性进行过编辑,只是给出三两个例子希望能抛砖引玉。 什么属性编辑器? 在文章《基于FPGA的TDC设计那些事之利用ECOs手动修改设计》和《PLL那些事之core输出抖动》都有涉及ECOs,且都是通过属性编辑器来完成的。那么什么是属性编辑器呢,属性编辑器即Resource Properties Editor,QuartusII在工程的任何地方都可以通过“locate”命令进入属性编辑器,当我进行ECOs时,我习惯先打开Chip Planner再通过双击其中需要编辑的单元进入属性编辑器,因为ECOs最终还是需要在Chip Planner中完成。 在属性编辑器里可以编辑的单元有LE、ALM、PLL、I/O Element、RAM以及DSP模块。在进行TDC设计的时候我们仅需要修改LE或者ALM和PLL,所以本文只以这两者为例来详细说明如何使用属性编辑器。 逻辑单元(LE)的属性 通过翻阅QuartusII手册的第17章,可以查到本节的详细介绍,手册详细介绍了LE而简单介绍了ALM属性,这里按照手册的内容尽量详细描述,另外试图比较LE和ALM属性的异同。下面先介绍LE可修改的属性。 1、 工作模式 逻辑单元LE可以工作在正常模式和算术模式两种模式。当LE配置工作在正常模式时,四输入查找表LUT能实现四输入变量的所有功能。当LE配置工作在算术模式时,LUT可以理解为两个三输入子LUT。第一个三输入子LUT产生相加“和”信号输出,第二个子LUT用于产生进位输出信号,该信号仅仅能驱动另一个LE的进位输入信号。 2、 LUT方程式(EQUATION) 用户可以通过修改逻辑方程式而更改当前LUT实现的功能。当LE配置为正常模式时,用户仅仅能修改SUM加法方程式。当LE配置为算术模式时,用户不仅能更改SUM方程式,还可以修改CARRY进位方程式。 当LUT方程式被更改了后,QuartusII软件就自动更改了LUT的掩码。 为了更改由LUT实现的功能,首先用户必须了解LUT如何工作。一个LUT实际上是由内部的存储单元来实现逻辑功能的,而这个逻辑功能是其输入变量的函数。每一个存储单元能保存一个逻辑值,0或1。ALTERA比较老的器件族最小逻辑单元是LE,里面的四输入LUT有16个存储单元。LUT在其存储单元中保存了16个输出值,而LUT的输出又由此LUT的驱动输入端口的信号所决定。 3、 LUT掩码(MASK) LUT实现什么功能、输出什么值都是由LUT掩码决定的。为了产生LUT掩码,必须算出要实现功能的方程式的真值表。 当LUT掩码改变了以后,QuartusII软件将自动更新LUT方程式,反之亦然。表1是LUT掩码真值表,表的最后一列输出要根据不同的LUT方程式才能得到,后面我会给出几个例子来说明。 表1:LUT掩码真值表(由上到下依次从LSB – MSB)   4、 同步模式 每个LE的寄存器都包含同步加载(sload)和同步清除(sclr)信号。用户可以将它们进行取反修改。如果某个LE使用了sload或者它的取反值,那么该LE所在的LAB里所有LE只能使用此sload及其取反值。例如某个LAB里的两个LE用到sload,那么这两个LE的sload值必须一样。同样规则也适用于sclr。 5、 寄存器级联模式 如果用户使能了寄存器级联模式,那么Cascade-in端口连到寄存器的数据输入端。寄存器级联模式大部分是用于设计需要实现一系列移位寄存器的时候。用户可以通过更改Cascade-in端口的连接或不连接而更改寄存器级联模式。如果用户需要产生这个端口,那么源端寄存器必须在目的端寄存器的正上方,这样才可以级联起来。 6、 单元延时表 单元延时表(Cell Delay Table)描述了从LE的输入到输出的传输延时。图1是从QII12.1的手册里摘录下来的图示,不知道这是否是Cell Delay Table,但是我实际使用的QII11.1用属性编辑器查看LE的属性时候并没有看到所谓的单元延时表。如果能查看到这个属性,对于TDC的设计参考意义还是非常大的,可惜本人并没有找到。笔者获得类似图1所示的延时信息,是通过TimeQuest才察看到的,后面我会给出例子。 图1:逻辑延时信息 PLL的属性 属性编辑器允许用户修改PLL的配置参数,例如输出时钟的相移、占空比等等,下面所列都是可以更改的属性。 l  输入频率 l  M VCO tap l  M初始值 l  M值 l  N值 l  M计数器延时 l  N计数器延时 l  M2值 l  N2值 l  SS计数器 l  Charge pump current l  环路滤波器阻抗(Loop filter resistance) l  环路滤波器容抗(Loop filtercapacitance) l  计数器延时 l  计数器上限(Counter high) l  计数器下限(Counter low) l  计数器模式 l  计数器初始值 l  VCO tap 1、调整占空比 利用下面公式可以单独为某个输出时钟调整占空比。 2、调整相移 利用下面公式可以单独为PLL的输出时钟调整相移。 Phase Shift = (Period VCO*0.125*Tap VCO) + (Initial VCO*Period VCO) PLL工作在正常模式下时,Tap VCO ,Initial VCO,和Period VCO都由下列公式得到: Tap VCO = Counter Delay – M Tap VCO Initial VCO = Counter Initial- M Initial Period VCO = In Clock Period * N + M 当PLL工作在外部反馈模式的时候,Tap VCO ,Initial VCO,和Period VCO都由下列公式得到: Tap VCO = Counter Delay – M Tap VCO Initial VCO = Counter Initial- M Initial Period VCO = 当然还有通过其它公式去修改PLL的输出时钟的频率,以及频谱扩展等等,这里不一一描述,详细可以查看QuartusII手册,对于TDC设计最重要的是要调整时钟的相移,在文章开始提到的文章中就有此应用。 属性编辑器应用举例 首先我们举一个通过属性编辑器修改PLL的属性的例子,根据上述调整相移的部分,我们知道通过修改对应输出时钟的VCO Tap或者Counter Initial来修改此时钟的相移,如图2所示。 图2:利用ECO手动修改PLL输出的相位 这个例子在TDC设计中的应用,主要是在没有Random HITs之前利用PLL的输出来测试TDC的性能。通过属性编辑器,我们可以通过皮秒级别的相移完全可以达到测试TDC的目的。另外,设计调试过程中发现在测试ADC的时候也可以用得到,由于ADC的采样时钟和FPGA的系统时钟异步,所以FPGA采集ADC输出数字信号可能没有对齐其安全窗口,从而导致数据错误,可以通过属性编辑器逐步调整时钟的相位找到合适采样窗口,这个SDRAM有点类似。 下面回到本文的重点,即通过属性编辑器来对LE或ALM的属性进行编辑。图3是CycloneIII里某个LE,Carry方程式是“!C#!B”,Carry LUT掩码为“3F3F”。那么根据表1可以得出符合“#”是逻辑或。 图3:LUT方程式和掩码 图3是为我搞清楚#在ALTERA的属性编辑器到底表示什么逻辑功能,最新的所有资料上我都没有查到,也许以前老版本的QII手册上有,可惜找不到了。如果不搞清楚这些符号的功能,根本看不懂方程式。类似的符合还有一个“美刀”符合 - $,继续找找例子反推(图3中有符号$,但是方程式太复杂很难推导)。找个简单点的方程式,如图4所示是在ArriaGX的某个ALM中的方程式和掩码。 图4:推导异或符合 图4中F1 LUT方程式是“a$c”,而其掩码是“5A5A”,根据表1可以推导符号$是逻辑异或符号。 只有搞清楚上述ALTERA专用的逻辑符号,才能放心去修改掩码或者方程式。在TDC设计中,一般只需要修改LE或者ALM的数据输入端口,需要注意的是,这些修改会导致QuartusII自动更新掩码或者方程式,需要确认更新后的内容是否符合设计需求。例如,TDC设计如果将数据端口DATAA的信号更改到DATAF,这时候虽然方程式虽然自动更新,但是它自动更新的是DATAA端口信号到方程式里,而实际我们需要使用的是端口DATAF上的信号,所有还需要更改方程式。文章《基于FPGA的TDC设计那些事之利用ECOs手动修改设计》给出了一个例子,即外部HIT从ALM不同的数据端口输入到ALM输出的延时有很大差异。 分析及结论 本文详细介绍了什么属性编辑器,如何在属性编辑器中进行ECOs。介绍了LE以及PLL的可编辑属性。通过实例推导了ALTERA的QuartusII中表示逻辑或和逻辑异或地专用符号。
  • 热度 23
    2010-12-4 20:18
    1887 次阅读|
    2 个评论
    有的时候芯片回来之后,或者因为功能原因或者测试出小bug会希望直接在芯片上通过FIB修改一些功能,这就需要找到电路中的问题修改点。一般来说芯片能实现上逻辑上的改动的前提有以下几点: 1、如果只是去掉某些逻辑,比较简单,直接找到相应电路切掉即可,但需注意该部分电路与其它电路的相关性,有关联的电路就不能切了。 2、当初逻辑PR时,预先均匀放置了一些冗余单元。那么增加功能或修改电路就可以利用这些冗余单元了。 3、最麻烦的是没有冗余单元,而又想修改电路某些功能,这种情况就属于要去掉一些原功能单元,改为另一种功能,而一般来说去掉的和想要增加并不是同类单元。这时就要从原设计的RTL着手,分析原逻辑设计是不是会有冗余性,即是不是有over design,可以去掉一些单元门依旧可以实现原功能。如果有,则可以这些冗余的空间重新设计逻辑。   在原网表中找到相关问题修改点的步骤如下: 1、用debussy读入原网表,转成电路,这些提取相关电路直观一些。 2、以相关功能的寄存器或输出端口为路径终点向前反提出完整逻辑路径(起点为寄存器或输入端口),这一步要仔细,不能有任何错误。 3、分析整个电路逻辑功能,定位需要改动的相关逻辑,不相关的可以忽略。 4、分析该局部电路的设计冗余性以及和要修改的电路关联性,判断是否可改。尽量只是在相近的单元中完成改动。 5、找到版图上相应单元的坐标,判断metal的布线是否物理上可修改。如可,则大功告成矣。
相关资源